Demo
Analyze and Autofill as separate sections, each with bookmark tabs and one GIF slot.
Analyze

Autofill

Problem
How can repetitive ATS applications be accelerated without unsupervised submission, and without pasting job URLs into a third-party service?
A local Streamlit assistant attaches to a Chrome tab the user selects, ranks tailored resume versions against the job description, and fills recognized form fields from a private resume hub. Final submission stays with the applicant.
Approach
- Analyze — extract the JD from the active LinkedIn job tab; score applyability first, then rank resume versions (deterministic by default; optional LLM via
MATCH_USE_LLM=1) - Apply — open or focus the company ATS tab under user control
- Autofill — soft ATS detection + shared field catalog; experience adapters for Workday / Phenom / Dayforce page shapes
- Human review — report filled vs unmatched fields; never click Submit
Operating constraints: no automatic submit; fill visibility; curated hub fields preserved on import; unknown hosts may still receive catalog fills.
Results
- Local Analyze → Apply → Autofill pipeline is implemented and documented on GitHub
- Recommendation labels:
APPLY/APPLY_WITH_CAUTION/DO_NOT_APPLY/NEEDS_REVIEW - Catalog coverage includes Workday, Greenhouse, SuccessFactors, Dayforce, Phenom, Jobvite, Oracle Cloud, and similar hosts
- A field-level validation table (ATS × fields filled × failure modes) and a published accuracy sample are forthcoming
Limitations
- Unsupervised end-to-end submission is out of scope
- ATS coverage is incomplete and DOM-signature based; new portals need catalog or adapter work
- Recommendation labels do not yet have a published accuracy sample
- The private resume hub remains local; this post does not include personal data
Stack
Python · Streamlit · Playwright (CDP) · Pydantic · BeautifulSoup · pypdf / python-docx · optional Gemini / Anthropic / OpenAI
Notes
Pipeline diagram, Zero-URL contract, design notes
Active Job Tab ──> JD Extractor ──> Matcher ──> Structured Gap Analysis
^
|
Resume Data Hub
|
v
Active ATS Tab ──> Soft ATS Hint ──> Catalog / Adapters ──> Reviewed Form FillZero-URL: Playwright attaches over CDP to a user-managed Chrome instance and operates only on an explicitly selected tab. The UI does not accept a pasted job URL or JD text.
Design notes
- Keep durable applicant data separate from platform DOM details and optional model calls
- Validate match results with Pydantic; keep the default path deterministic
- Prefer importer-based resume refreshes over hardcoded prose that drifts out of date
- Treat ATS detection from local DOM signatures as a hint, not a paid URL-classification gate