AI & LLM · applypilot.israelrocklyn.info
ApplyPilot AI
A career operating system that only ever says what the candidate has confirmed.
2 layersof tenant isolation: an application scope, and row-level security tested with raw SQL as a role that cannot bypass it
0facts usable before the candidate confirms them; every one shows the résumé text it came from
F1 0.77rules parser on résumé layouts written after it was frozen: the 0.90 target was missed and is reported
demo Demo tour
Screenshots from the running application, with its synthetic demo data. Select one to enlarge.
01 The problem
Job-search tools that write résumés and fill applications with AI tend to state things nobody checked: a skill read from a job title, a metric inflated in a rewrite, a parsing mistake that ends up in front of an employer. ApplyPilot starts from a verified record of the candidate and treats everything the AI reads or writes as a suggestion until the candidate confirms it.
02 How it works
- Résumé upload
- Text and sections
- Claude or rules, quotes checked
- Suggestions with evidence
- Candidate confirms
- Knowledge Vault
03 What I built
- A Laravel API that is the system of record: tenants and roles, two-step sign-in, an append-only audit log, consents, export and deletion, with tenant isolation enforced by an application scope and by PostgreSQL row-level security.
- The Candidate Knowledge Vault: résumé facts (roles, education, certifications, skills, contact) stored with the exact span of text they came from, usable only once confirmed; edits supersede rather than overwrite.
- A FastAPI service that parses PDF, DOCX and text résumés, with Claude filling a strict schema whose every field must quote the résumé (checked by code) and a rules parser as the fallback; Laravel re-checks every evidence span it is given.
- Live jobs from companies' Greenhouse, Lever and Ashby boards, explainable matching with dealbreakers, and scam signals with their evidence.
- Résumé and Writing Studios whose every claim is checked against confirmed facts, an Answer Bank that sends sensitive questions to the candidate, and application kits with an approval queue and receipts.
- Interview prep with spoken mock interviews and coaching, a visible Live Copilot for interviews that allow AI help, coding practice, a career coach and analytics, all in one Next.js dashboard served by Laravel.
04 What I learned
The rules parser scored 1.00 on layouts it was built for, 0.82 and then 0.77 on two sets of layouts written after it was frozen. The miss is reported, not tuned away: every fact stays a suggestion shown with its source, and Claude becomes the primary extractor.
Tests that switch between users in one process hit cached sessions and guards that a real request never would: two apparent tenant leaks were test artefacts, and the database-level row-level-security test is what proves isolation.
On shared hosting, SQLite locked under the web app's parallel requests until the cache and sessions moved to files and SQLite got a busy timeout and WAL.
05 Known limitations
Every repository documents what it doesn't do yet. The main ones:
- Only the résumé parser is measured against labelled data so far; matching and the other engines are tested but not yet evaluated.
- Claude's extraction accuracy is not measured yet, and payments are not switched on.
06 Stack
LaravelPHPPythonFastAPINext.jsTypeScriptPostgreSQLClaude API
A commercial product: the code is in a private repository. The live product's demo uses synthetic data only.