← BACK TO LEVEL SELECT

🤖 Agentic AI

Application Copilot — HITL Agent

A human-in-the-loop copilot that tailors resumes and drafts screening answers from a learning memory bank — built around hardened browser automation with safety governors and human review.

Overview

An application copilot built around one idea: an agent should get cheaper and more accurate the more it runs, and it should ask a human when it’s genuinely unsure. It tailors a resume to a role, reads screening questions off a page, and drafts answers — but every low-confidence answer routes to a human for review, and every approved answer is cached so it’s instant next time.

Architecture

flowchart TD
  A["Candidate profile<br/>+ target role"] --> B["Resume engine<br/>LLM tailor → DOCX / PDF"]
  A --> C["Discovery<br/>public job boards"]
  C --> D["Browser automation<br/>(Playwright)"]
  D --> E["Screening questions<br/>read from form"]
  E --> F["Answer agent<br/>memory bank → LLM"]
  F --> G{"Confident?"}
  G -->|"yes"| H["Draft answer<br/>+ cache to memory"]
  G -->|"defer"| I["Human-in-the-loop<br/>review → approve"]

Engineering decisions

  • Memory-first answering — a screening question is resolved by an exact bank hit first (instant, zero-cost), else by LLM reasoning over per-candidate memory + profile that self-scores its confidence and defers to a human when stuck. Approved answers flow back into the bank.
  • Hardened browser automation — a Playwright loop that drives form controls (radio / checkbox / short / long / numeric), snaps free-text onto exact visible options so clicks always land, and survives DOM drift: a bad page is screenshotted and logged as failed without ever killing the run.
  • Safety as a first-class concern — per-day caps seeded from the current count, randomized human-like delays, block-detection that aborts to protect the account, and a hard LLM timeout so a stalled call can’t freeze the session.

Highlights

  • Strict per-candidate isolation — every row scoped by candidate_id, with a separate on-disk browser profile per candidate.
  • Pluggable sources — a connector registry (apply / discover / profile) ingesting public job boards with skill-overlap fit scoring, behind a 46-route FastAPI backend and a Next.js “mission control” dashboard.