Auth 2 Hardcoded single-user login gate ▸ post /api/auth/loginLog in body → Success ▸ post /api/auth/logoutLog out → Success
Tailoring 3 Parse resumes, AI-tailor them, and export PDF/DOCX ▸ post /api/parse-pgExtract text from an uploaded resume (PDF/DOCX) body → object ▸ post /api/tailorAI-tailor a resume to a job description (streamed) body ▸ post /api/generateRender tailored markdown to a PDF or DOCX file body
Jobs 5 Cached + archived job board (SerpAPI) ▸ get /api/jobsSearch cached jobs (paginated, 20/page) → PagedJobs ▸ delete /api/jobsClear the entire cached-jobs table → object ▸ get /api/jobs/{id}Get a single job (cache, falling back to archive) → NormalizedJob ▸ post /api/jobs/refreshFetch fresh jobs from SerpAPI and archive old ones → object ▸ get /api/jobs/archiveSearch archived jobs (paginated, 20/page) → PagedArchivedJobs
Saved PGs 4 Stored master resumes ▸ get /api/saved-pgsList saved PGs (summaries, newest first) → object ▸ post /api/saved-pgsSave a new PG (dedups by fileName + charCount) body → object ▸ delete /api/saved-pgsDelete a saved PG → Success ▸ get /api/saved-pgs/{id}Get a full saved PG (with text) → object
History 5 Tailored resume records and status tracking ▸ get /api/recordsList tailored-resume records (paginated, 20/page) → PagedRecords ▸ post /api/recordsSave a tailored resume to history body ▸ get /api/records/{id}Get a record → JobRecord ▸ patch /api/records/{id}Update status/notes/appliedAt (status='applied' archives the linked job) body → JobRecord ▸ delete /api/records/{id}Delete a record → Success
Autopilot 6 AI job-match scoring against a profile ▸ get /api/autopilot/profileGet the current autopilot profile → object ▸ post /api/autopilot/profileCreate or update the autopilot profile body → object ▸ post /api/autopilot/scanScore all cached jobs against the saved profile → object ▸ get /api/autopilot/resultsList scan results (sorted by score desc, paginated 20/page) → object ▸ patch /api/autopilot/results/{id}Update a scan result's status body → JobScan ▸ get /api/autopilot/statsAggregate scan stats → object
Chat 5 AI career assistant grounded in a tailored resume ▸ get /api/chatsList chat threads (newest first, with last message + job info) → Chat[] ▸ post /api/chatsGet-or-create a chat thread for a job record body → Chat ▸ get /api/chats/{id}Get a chat with its messages and job context → Chat & object ▸ delete /api/chats/{id}Delete a chat thread → Success ▸ post /api/chats/{id}/messagesSend a message and stream the AI reply (SSE) body
$ cat schemas/14 ▸ ArchivedJobNormalizedJob & object