AI & LLM · applypilot.israelrocklyn.info

ApplyPilot AI

A career operating system that only ever says what the candidate has confirmed.

Open the live product Demo tour

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

The Knowledge Vault: a suggested role shown next to the highlighted résumé text it came from
The Knowledge Vault: a suggested role shown next to the highlighted résumé text it came from. Screenshot from the project's demo (synthetic data).

demo Demo tour

Screenshots from the running application, with its synthetic demo data. Select one to enlarge.

The landing page: what ApplyPilot is and where each milestone stands.
The landing page: what ApplyPilot is and where each milestone stands.
A demo workspace: profile completeness as a checklist, and the Vault's suggestions waiting for review.
A demo workspace: profile completeness as a checklist, and the Vault's suggestions waiting for review.
The Knowledge Vault: each suggested fact with the r�sum� text it came from.
The Knowledge Vault: each suggested fact with the r�sum� text it came from.
A real parser mistake: 'patient-scheduling services' read as a scheduling skill. The candidate rejects it and nothing ever uses it.
A real parser mistake: 'patient-scheduling services' read as a scheduling skill. The candidate rejects it and nothing ever uses it.
Account and privacy: two-step sign-in, consents, a full data export and deletion.
Account and privacy: two-step sign-in, consents, a full data export and deletion.

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

  1. Résumé upload
  2. Text and sections
  3. Claude or rules, quotes checked
  4. Suggestions with evidence
  5. Candidate confirms
  6. 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.

↑↓ to move · Enter to open · Esc to close