ONE WORKER · ONE DEPLOY · ZERO RESUMES STORED
Your resume never leaves the edge. The verdict does.
LAUREL turns an uploaded resume into a structured career report with an honest quality score, then a curated shortlist of six roles with match scores, skill gaps, and concrete first steps. Documents are read entirely in the browser; the only thing that crosses the wire is text, answered by Groq LPU inference behind a single Cloudflare Worker. Nothing is ever stored.
RESUMES STORED
0
PDF/DOCX read client-side
DEPLOY UNIT
1
Worker serves API + SPA together
SHORTLIST
6
roles, scored with skill gaps
RESEARCH RECORD
94%
skill extraction — see EXP-005
A / THE ARCHITECTURE
The whole service is one Worker.
B / THE CONTRACT
Three endpoints, no surprises.
| METHOD | PATH | BODY | RETURNS |
|---|---|---|---|
| GET | /api/health | — | service status |
| POST | /api/parse | { "text": "<resume text>" } | { "resume": ParsedResume } |
| POST | /api/recommend | { "resume": ParsedResume } | { "jobs": [...], "insights": ... } |
C / ENGINEERING NOTES
Fast because it's private.
- Documents never upload. PDF and DOCX parsing happens in the browser (pdfjs-dist, mammoth); only extracted text reaches the Worker. Privacy isn't a checkbox — it's the architecture.
- The model is not trusted. Every field of the LLM's JSON output is normalized and clamped server-side before it reaches the client. An honest quality score means the service is allowed to tell you your resume is weak.
- Two iterations, one project. The research iteration fine-tuned BERT for span extraction — 94% skill-extraction accuracy, +18% recommendation precision over a TF-IDF baseline, 500+ resumes processed end-to-end (the record in EXP-005). LAUREL is the productized rebuild: same problem, engineered for the edge.