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

90 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.**