|
4 | 4 | [](LICENSE) |
5 | 5 | [](https://job-application-copilot.xyz/) |
6 | 6 |
|
7 | | -AI Job Application Agent is a Vercel-hosted Next.js workspace with a FastAPI backend for resume parsing, JD review, grounded agentic tailoring, and exportable job application documents. |
| 7 | +AI Job Application Agent is a grounded resume-tailoring product: a five-stage agent pipeline that turns a source resume and job description into an evidence-backed tailored resume and cover letter. |
| 8 | + |
| 9 | +The core differentiator is grounded review. The pipeline is designed to detect and correct unsupported claims before export, so tailoring can emphasize the candidate's strongest relevant evidence without inventing skills or experience. |
| 10 | + |
| 11 | + |
8 | 12 |
|
9 | 13 | Live landing page: https://job-application-copilot.xyz |
10 | 14 |
|
11 | 15 | Workspace app: https://app.job-application-copilot.xyz |
12 | 16 |
|
13 | | -## Product Flow |
| 17 | +## Agent Pipeline |
| 18 | + |
| 19 | +The workflow runs through `ApplicationOrchestrator` with progress callbacks, per-stage duration logging, JSON-contracted agent outputs, and deterministic fallback if assisted generation is unavailable. |
| 20 | + |
| 21 | +1. `FitAgent` compares the candidate profile against the job description. |
| 22 | +2. `TailoringAgent` rewrites the deterministic baseline into role-specific resume guidance. |
| 23 | +3. `ReviewAgent` checks grounding, reports unsupported claims, and returns corrected tailoring when repairs are possible. |
| 24 | +4. `ResumeGenerationAgent` builds the final tailored resume artifact from the reviewed output. |
| 25 | +5. `CoverLetterAgent` runs only after review approval and creates a role-specific cover letter. |
| 26 | + |
| 27 | +Each agent follows the same operating shape: deterministic baseline first, LLM-assisted refinement second, structured JSON output, and grounded fallback behavior when assisted execution is unavailable. |
| 28 | + |
| 29 | +## Grounding And Fallbacks |
| 30 | + |
| 31 | +- Deterministic services build the candidate profile, JD summary, fit analysis, and first-pass tailored draft before the agent layer runs. |
| 32 | +- `ReviewAgent` returns `grounding_issues`, `unresolved_issues`, `revision_requests`, and an optional `corrected_tailoring` payload. |
| 33 | +- The orchestrator uses `corrected_tailoring` as the downstream source of truth when review repairs the draft. |
| 34 | +- Cover-letter generation is gated on review approval. |
| 35 | +- The fallback review path checks whether the output references missing hard skills that are not evidenced in the source profile. |
14 | 36 |
|
15 | | -1. Sign in with Google |
16 | | -2. Upload a resume |
17 | | -3. Search jobs, import a supported posting, or paste a JD manually |
18 | | -4. Review the JD summary |
19 | | -5. Run the agentic analysis |
| 37 | +## Prompt And Runtime Discipline |
| 38 | + |
| 39 | +- Prompt builders compact large JSON sections through escalating string and list caps before falling back to a section summary. |
| 40 | +- Prompt metadata records estimated input size, compacted section count, compacted labels, and budget mode. |
| 41 | +- The OpenAI wrapper routes by task, tracks usage, enforces quota checks, records response metadata, and retries incomplete JSON responses with a higher output budget when appropriate. |
| 42 | + |
| 43 | +## Product Surface |
| 44 | + |
| 45 | +1. Sign in with Google through Supabase-backed auth |
| 46 | +2. Upload a resume and build a normalized candidate profile |
| 47 | +3. Search Greenhouse and Lever boards, import a supported posting, or paste a JD manually |
| 48 | +4. Review a structured JD summary |
| 49 | +5. Run the grounded agentic workflow |
20 | 50 | 6. Review the tailored resume and cover letter |
21 | 51 | 7. Ask grounded follow-up questions in the workspace assistant |
22 | | -8. Export Markdown or PDF documents |
| 52 | +8. Export Markdown or WeasyPrint-backed PDF documents |
23 | 53 |
|
24 | 54 | ## Stack |
25 | 55 |
|
26 | 56 | - Next.js frontend in `frontend/` |
27 | 57 | - FastAPI backend in `backend/` |
28 | | -- Shared Python workflow and builders in `src/` |
| 58 | +- Shared Python workflow, agents, builders, and services in `src/` |
29 | 59 | - Supabase for Google auth, quota tracking, saved workspaces, and saved jobs |
| 60 | +- Greenhouse and Lever job-source clients with matching and registry layers |
30 | 61 | - OpenAI Responses API for assisted generation |
31 | 62 | - WeasyPrint-backed PDF export pipeline |
32 | 63 | - Docker Compose + Caddy deployment bundle in `deploy/vps/` |
33 | 64 |
|
| 65 | +## Engineering Notes |
| 66 | + |
| 67 | +- 37 focused Python test files cover parsing, normalization, fitting, tailoring, orchestration, builders, exports, auth, quotas, persistence, and backend routes. |
| 68 | +- 12 ADRs in `docs/adr/` record product and architecture decisions, including the Streamlit-first to Next.js + FastAPI transition. |
| 69 | +- Architecture details live in [docs/architecture.md](docs/architecture.md). |
| 70 | +- Deployment notes live in [docs/next-fastapi-transition.md](docs/next-fastapi-transition.md). |
| 71 | + |
34 | 72 | ## Local Development |
35 | 73 |
|
36 | 74 | Run the backend: |
@@ -78,5 +116,3 @@ LEVER_SITE_NAMES=dnb,plaid,mistral |
78 | 116 | - `app.job-application-copilot.xyz` -> Vercel frontend |
79 | 117 | - `api.job-application-copilot.xyz` -> VPS FastAPI backend |
80 | 118 | - `deploy/vps/` -> Docker Compose + Caddy bundle for the backend stack |
81 | | - |
82 | | -Transition notes and deployment details live in [docs/next-fastapi-transition.md](docs/next-fastapi-transition.md). |
|
0 commit comments