Skip to content

feat: a handover pack for applying to a prepared job yourself - #69

Merged
coderback merged 1 commit into
mainfrom
feat/handover-pack
Oct 20, 2026
Merged

coderback merged 1 commit into
mainfrom
feat/handover-pack

Conversation

@coderback

Copy link
Copy Markdown
Owner

Why

Sending can stop at a job site's emailed-code check: Catapult, on Greenhouse, asked for a code "to confirm you're a human" (#67). Then the user finishes in their own browser. Putting the files and answers together by hand each time is slow, so each prepared job now comes with everything needed in one download.

What changed

Backend

  • GET /autopilot/runs/{id}/pack, for your own runs only, returns a ZIP named Windrush - <Company> - <Job title>.zip:
    • the run's CV and cover letter under the names autopilot uploads them as (Timothy_Ojebiyi_CV.pdf, Timothy_Ojebiyi_Cover_Letter.pdf);
    • <Company> - answers.txt, with the job and its link, why it was held, what to upload, each question the form asked with its answer ("left for you to answer" when blank), and the letter as text for a form that wants it pasted.
  • It returns 404 when the run's PDFs are gone.
  • The pack is built in autopilot.handover_pack. browser_agent.upload_name (was _upload_name) now serves both the browser and the pack.

Frontend

  • A "Handover pack" button on each run card with a CV and letter, next to "Apply myself". It saves the ZIP under the API's name.
  • downloadDocument and downloadPack share one save helper.

Tests

  • New backend tests:
    • the pack's files, names and sheet (link, held reason, answered and blank questions, letter text);
    • a 404 when a PDF is gone;
    • the pack is out of another user's reach.
  • E2E smoke (autopilot): the button downloads the pack under the API's file name.
  • Fast suite: 1078 passed. Frontend: tsc --noEmit and lint clean.
  • Catapult's real run gives both PDFs under the candidate's name and a sheet with its 8 questions and the letter text.

After deploy

Rebuild both containers with docker compose up -d --build api frontend.

Sending can stop at a site's emailed-code check (Catapult, on Greenhouse), so the
user finishes in their own browser. Putting the files together by hand each time
is slow; now each autopilot run with documents has a "Handover pack" button.

GET /autopilot/runs/{id}/pack (your own runs only) returns a ZIP:
- the CV and cover letter under the names autopilot uploads them as
  (Timothy_Ojebiyi_CV.pdf), not the run-id or company names the CV/letter
  buttons save;
- "<Company> - answers.txt": the job and its link, why it was held, what to
  upload, each question the form asked with its answer ("left for you to answer"
  when blank), and the letter as text for a form that wants it pasted.
It's 404 when the run's PDFs are gone. browser_agent.upload_name (was
_upload_name) now serves both.

Tests: the pack's files, names and sheet; 404 without its PDFs; out of another
user's reach; the e2e smoke test downloads it under the API's name. Catapult's
real run gives both PDFs and a sheet with its 8 questions and the letter text.
@coderback
coderback merged commit 3b232a7 into main Oct 20, 2026
3 of 4 checks passed
@coderback
coderback deleted the feat/handover-pack branch October 20, 2026 14:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant