Feature Request: After scraping completes, display all discovered problems in a filterable/selectable UI. Allow users to cherry-pick which problems to include in the final ZIP download instead of auto-downloading everything.\n\nUser Story:\nAs a user, after scraping 50 hard problems from Codeforces, I want to:\n1. Preview the list of problems with metadata (title, difficulty, tags, acceptance rate)\n2. Select/deselect individual problems or use bulk filters\n3. Generate a custom ZIP with only my selected problems\n\nCurrent Behavior:\n- Scraping completes → ZIP auto-generated with ALL problems → no choice\n\nDesired Behavior:\n- Scraping completes → Problem Curation Page displays:\n - Table/grid of all scraped problems\n - Checkboxes for selection (select all / deselect all)\n - Filters: difficulty, tags, platform, acceptance rate\n - Search by title/ID\n - Preview pane showing problem statement snippet\n- "Generate ZIP with selected (X problems)" button\n- Downloads filtered ZIP with only checked problems\n\nAcceptance Criteria:\n- ✅ New route: GET /jobs/{id}/problems → JSON list of scraped problems with metadata\n- ✅ Curation UI page with selectable problem table\n- ✅ Client-side filtering and search (or server-side if list is large)\n- ✅ POST /jobs/{id}/download with selected problem IDs in request body\n- ✅ Backend generates ZIP with only requested problems\n- ✅ UI shows count: "X of Y problems selected"\n- ✅ Keyboard shortcuts: Ctrl+A (select all), Escape (deselect)\n\nPriority: P0 - Highly requested feature; core to user workflow
Feature Request: After scraping completes, display all discovered problems in a filterable/selectable UI. Allow users to cherry-pick which problems to include in the final ZIP download instead of auto-downloading everything.\n\nUser Story:\nAs a user, after scraping 50 hard problems from Codeforces, I want to:\n1. Preview the list of problems with metadata (title, difficulty, tags, acceptance rate)\n2. Select/deselect individual problems or use bulk filters\n3. Generate a custom ZIP with only my selected problems\n\nCurrent Behavior:\n- Scraping completes → ZIP auto-generated with ALL problems → no choice\n\nDesired Behavior:\n- Scraping completes → Problem Curation Page displays:\n - Table/grid of all scraped problems\n - Checkboxes for selection (select all / deselect all)\n - Filters: difficulty, tags, platform, acceptance rate\n - Search by title/ID\n - Preview pane showing problem statement snippet\n- "Generate ZIP with selected (X problems)" button\n- Downloads filtered ZIP with only checked problems\n\nAcceptance Criteria:\n- ✅ New route: GET /jobs/{id}/problems → JSON list of scraped problems with metadata\n- ✅ Curation UI page with selectable problem table\n- ✅ Client-side filtering and search (or server-side if list is large)\n- ✅ POST /jobs/{id}/download with selected problem IDs in request body\n- ✅ Backend generates ZIP with only requested problems\n- ✅ UI shows count: "X of Y problems selected"\n- ✅ Keyboard shortcuts: Ctrl+A (select all), Escape (deselect)\n\nPriority: P0 - Highly requested feature; core to user workflow