Loading ResuMatch…
Loading ResuMatch…
An outcome-led view of what has shipped, what is mid-stream, and where the AI-tailoring tool is heading. ResuMatch is an experimental portfolio showcase — every milestone is complete only when its exit evidence is demonstrated, not when its code merges.
M1–M5 · docs/business-plan.md
A deployable Next.js app on the platform: Hub SSO, its own PostgreSQL with an opaque platform user id, a validated env contract, redaction-by-construction logging, an append-only audit table, and CI. Carried over unchanged from the pre-pivot product.
Private document storage with byte-level type sniffing and a 10 MB cap, malware scanning as a hard gate (a ClamAV sidecar in production), deterministic PDF/Word/text extraction with an optional AI pass that degrades back to it, full section CRUD with inline editing and manual entry, an AI tone-rewrite for the Summary field, an immutable lineage-linked profile with no field for any protected attribute, and one-click GDPR access + erasure.
The pivot replaced authorized-source ingestion (which needed a licensing agreement per job board) with candidate-supplied postings: paste a URL — fetched under an SSRF-resistant posture, or browsed by the model when a real provider is configured — paste the posting text, paste a job-invitation email, upload the posting as PDF/DOCX, or fill in a manual entry form. Every path lands on the same extracted confirmation before anything else happens.
A tailoring pipeline built around one hard guarantee: AI rewords and reprioritizes a candidate's summary, headline, and experience bullets — it never invents an employer, a date, a degree, or a skill the candidate did not already list. Enforced structurally: provider output is merged with the source profile in code, not trusted verbatim. Proposal-review, not one-shot — generate-preview returns a draft to edit and approve before generate-confirm persists it — with freeform per-run instructions as a third fenced input, a deterministic keyword-coverage report, and a quality checklist on every preview.
A clean print-optimized layout (Download PDF via the browser's print dialog) plus real DOCX downloads for resume and letter, both generated from the same content source so the two exports can never diverge. The history view lists every tailored run and compares any two side by side. `templateKey` already exists as a field so more layouts stay additive.
A second fenced provider call drafts a cover letter from the same confirmed inputs under the same no-fabrication contract and merge discipline — with tone and length controls, the same preview/confirm review before anything is saved, its own deterministic quality checks, and the same print + DOCX export paths as the resume.
A per-application list tracking each job through saved → applied → interviewing → offer/rejected, with a multi-step status indicator, optional notes, a follow-up date field, and a link back to the tailored resume used — the pivot's lightweight replacement for the removed tracked-jobs workflow, with zero licensing exposure since every row is candidate-supplied or candidate-approved.
OpenAI and Anthropic adapters for the tailoring and cover-letter calls, plus OpenAI for extraction, Summary rewrite, and job-URL browsing — never selectable in a deployed environment until the JM-005 classification sign-off is recorded and a key is present. The fixture provider stays the only one CI ever exercises. Known gap: the Anthropic extraction/rewrite/job-fetch adapters are still stubs, tracked in docs/megaplan.md (F2).
More layouts, real model providers, production readiness
A second and third visual template to choose between — the review step already lets a candidate hand-adjust content before saving — plus the trust-and-safety backlog that real users need: per-item deletion, rate limiting, follow-up reminders, and NL/FR coverage for the Belgian audience. The full audit and prioritized list live in docs/megaplan.md.
A DPIA decision for the AI-tailoring flow specifically (a job page's text and a candidate's rewritten resume both pass through a model call), a deployed async worker moving scan/extract/tailor off the request path, an incident runbook, and load + recovery evidence — the bar for operating at pilot scale.