Files
matchmaking-v2/research/docs/AUTOAPPLY_STATE.md
raulgupta 89ca9ad647 Initial commit: matchmaking-v2 on-demand multi-board job-search agent
On-demand Scout service (replaces the nightly aggregator):
- FastAPI agent-mesh service; card name "matchmaking-service" (HTTP /a2a/tasks
  + Redis-stream worker matching the sibling-service pattern)
- run_search: parallel multi-board sweep (Naukri/blackfalcondata + Foundit +
  LinkedIn), city-filtered at the board, cheapest-per-result first
- per-board adapters + normalizers -> ScoutJob with rich read-only details and
  offsite apply links; recall mode + MVQ guard
- result cache for dev replay ($0); per-board cost knobs; retry-on-5xx
- research/: engine design, board cost economics, India-actor shortlist, POC
2026-06-18 19:22:03 +05:30

5.9 KiB
Raw Permalink Blame History

Auto-Apply Engine — State of the POC & Segment Thesis

Companion to ENGINE_DESIGN.md. Captures where the browser-use auto-apply POC stands as of 2026-06-15: what's proven, the honest boundaries, and the segment thesis. Code: poc/browser-apply/. Numbers are from small, directional samples — real direction, not statistical precision.


0. What this is

The "heart" of Scout (ENGINE_DESIGN.md §6), built for real. We replaced the dead heuristic mock (which proved nothing — fake ATS, fake liveness gate) with an AI browser agent: open-source browser-use + gpt-4.1 vision driving real Chrome to fill and submit real job applications. The design is a board-agnostic "master key" engine + a thin adapter registry, fed by Apify apply-URLs. It applies on the company's own ATS, sidestepping the LinkedIn/Naukri login + ban zone.

1. Architecture (what's built)

  • candidate.py — board-agnostic candidate model: vision-parsed résumé + confirmed facts + a per-job tailored-motivation rule. (Résumé parsing reuses the resume-builder vision pattern.)
  • apply_engine.py — the master key: navigate → autofill → fill-every-field → accuracy gate → verify → screenshot. Statuses incl. no_form / login_required so the long tail is legible.
  • adapters/ — registry. GenericAdapter (catch-all, pure vision) handles the long tail; AshbyAdapter carries earned Ashby quirks. Route by URL domain. New boards = a few-line adapter.
  • apply_ashby.py — the proven standalone (kept untouched).
  • apply_harness.py — accuracy/cost/timing measurement rig. apify_probe.py — inbound yield rig.

Design principle: the engine is generic; adapters are thin hints; verification is first-class — screenshot-as-ground-truth + a hard gate, because the agent's self-report is optimistic.

2. What's PROVEN (the receipts)

  • Real end-to-end submission. Submitted a real application to OpenAI on AshbyHQ — verified by the on-screen green success banner, not the agent's word.
  • The master key generalizes. The generic adapter filled Greenhouse forms it had never seen (GitLab, Figma, Anthropic's long adversarial form) + Ashby via its adapter — 4/5, the 5th honestly bounced on a login wall. 0 fake successes.
  • India works, untuned. Cracked Zoho Recruit + Keka (the big India-native ATS) with no India tuning — even read their simple text-CAPTCHAs via vision — and honestly reported no_form on an email-only careers page.
  • The loop closes, economics known. Apify direct-ATS actor = 100% offsite Tier-1 links; LinkedIn (harvestapi) = 60% offsite; combined ~43% offsite, 14% immediately autonomous. Cost **$0.13/app clean ATS, ~$0.210.27 India ATS**; latency ~36 min/app; vision-off ~43% cheaper with no accuracy loss on clean forms. Cheap models (gpt-4o-mini) are a false economy (0/2, step-blowup).

3. Honest boundaries (what's NOT yet solved)

  • Login-gated demand stays Tier-3. LinkedIn Easy Apply, Naukri's one-click dashboard, Workday/Oracle account-gates — need persisted session + human/Cloud, not the master key.
  • Submit-time anti-bot is the persistent threat. Got spam-flagged once on Ashby; reCAPTCHA/ hCaptcha would wall us; even the simple-CAPTCHA "solve" is unverified (we never submitted to confirm acceptance). This is what breaks at scale.
  • Latency needs parallelization (architecture, not a faster model). ToS/account-safety is a real exposure on the login boards.
  • The matching engine (ENGINE_DESIGN.md core) is not built. This arc was all apply.

4. The segment (defined precisely)

Not "auto-apply to anything." The defensible segment is:

Autonomous, honestly-verified applications to the public-ATS + India-native-ATS tier — applying on the company's own ATS, sidestepping the LinkedIn/Naukri login & account-ban problem.

Differentiation: existing tools (LazyApply, Simplify) are brittle per-board scripts that operate inside LinkedIn (the ban zone). A board-agnostic vision engine that goes around to the ATS, with no-fake-success verification, is a different, more durable product. India is the sharpest edge — a huge, Naukri-dominated market where the direct-ATS + Zoho/Keka/Darwinbox path is genuinely underserved.

5. POC → segment (the path)

  1. Submit-time anti-bot lane (make-or-break): Cloud stealth for spam/CAPTCHA; human-in-the-loop final tap otherwise. Decides the true autonomous conversion rate.
  2. Parallelization — concurrent sessions for acceptable latency at volume.
  3. Always-JSON output + answer-bank flywheel (small): legible triage; engine learns answers over time so human interventions shrink.
  4. Wrapper decision: the apply layer of Scout, or a standalone autonomous-applicant / apply-API product. The tech supports either.

6. Honesty ledger

Proven (de-risked) Open / must-prove
Generic vision engine fills arbitrary forms across boards & countries Submit-time anti-bot (spam flags, reCAPTCHA) at scale
Real verified submission; no fake successes Login-gated tier (LinkedIn/Naukri dashboard/Workday)
India-native ATS (Zoho/Keka) with no tuning CAPTCHA acceptance (unverified — needs a sandbox submit)
Known unit cost (~$0.130.27/app) + the vision-off lever Latency at volume (needs parallelization)
Apify inbound returns usable apply-URLs (loop closes) The matching engine (still on paper)

Bottom line

A proven, board-agnostic, honestly-verified apply engine — real submission, generalizes across US + India ATS, known economics. A strong POC and a legitimate segment for the public-ATS / India-ATS autonomous slice. The realism check: "fully autonomous for every board" is not the product — the login tier needs an assisted lane, and submit-time anti-bot is the risk that decides scale. Define the segment around the proven slice, lead with India.