One section per agent: what it reads, what it writes, and where you come in.
The shared protocols every agent follows live in agents/_system/:
heartbeat (live status), notifications (when it may ping you), instructions precedence
(your in-app orders override everything), and the learning loop.
You steer from the app. Each agent's card on the Agents page has a pause toggle and a "custom instructions" box. Whatever you type there outranks the agent's SKILL.md on its next run, e.g. "Only remote roles this month" or "Stop searching platform X".
Runs: once, manually, in a Claude conversation.
Reads: the _system templates, its interview guide, your existing CV if you share it.
Writes (all gitignored): _system/PROFILE.md, _system/CONFIG.md,
cv-creation/references/base_cv.md, cv-creation/references/cv_design.md (your
unique design), job-search/knowledge/market_playbook.md (researched live for your
country), application-writer/knowledge/screening_answers.md. Seeds the 7 agent docs
in Firestore and writes a smoke-test notification.
Your part: the interview, especially the three-tier skills sort that keeps every
later document honest.
Runs: every 5h (group A, with job-analysis). Needs: Claude in Chrome for LinkedIn (degrades to fetch-only without).
Reads: searchConfig from its memory, your market playbook, your work-auth constraints.
Writes: new jobCases (status found), weekly trends, run logs.
Guarantees: dedupes by URL and company+title; pauses itself when 10+ approvals
are waiting; never contacts anyone.
Runs: every 5h (group A, with job-search), max 3 cases.
Reads: found cases, the live JD, the web (company research), your profile tiers.
Writes: fit score 0–100 + recommendation, analytics_report.pdf (5 sections) saved to
your local job folder (which you keep synced to Drive, so it reaches your phone, no API
upload), and an analysis approval item.
Your part: approve → the case moves to CV stage; reject → closed, and your reason
recalibrates the scoring rubric over time.
Runs: every 5h (group B, with application-writer), three passes (questions → drafts → revisions).
Reads: approved cases, your base_cv.md + unique cv_design.md, ATS keywords.
Writes: cv_questions items when honesty requires your input; resume.docx +
resume.pdf (1 page, verified with pdfinfo) to your local job folder (synced to Drive,
no API upload); a cv approval item.
Guarantees: never invents experience; never adds skills you haven't confirmed;
revisions saved as v2/v3, approved files never overwritten.
Runs: every 5h (group B, with cv-creation), two queues, submit approved first, then fill new.
Reads: CV-approved cases, your screening answers, the live application form.
Writes: the filled form (browser), a screenshot, an application approval item;
after your approval, the actual submission, a tracker row, and interview notes.
Guarantees: never clicks Submit unapproved; unknown fields are flagged, never
guessed; no OS file picker / desktop control, shadow-DOM-safe uploads only.
Runs: every 2 hours. Needs: Claude in Chrome.
Reads: active applications, your LinkedIn profile URL, the target-employer list.
Writes: blank connection requests (immediate, capped), connection_note approval
items for recruiter notes (≤200 chars, facts only), the real connection count.
Guarantees: hard caps (100/week, 25/day, 5 notes/month) with a back-off ladder;
notes never sent without your approval. ⚠ LinkedIn automation is ToS-gray; this
agent is conservative by design, and one toggle turns it off.
Runs: daily 8 AM.
Reads: 30 days of trends, every analyzed JD's keywords, your skill tiers, what
cv-creation keeps having to ask you.
Writes: at most 1–3 careerAdvice items per day (skill gap / cert / project /
strategy), each with concrete action steps.
Your part: accept or dismiss in Insights → Advice; it recalibrates to your
revealed preferences and never repeats decided advice.
Runs: 8 AM (health) and 8 PM (quality + coaching); monthly review on the 1st. Reads: everything, agent heartbeats, logs, your approve/reject history. Writes: morning/evening reports (Insights → Reports), coaching directives into other agents' instruction docs (visible and editable by you), and it can pause job-search when your approval queue backs up. Cannot: change case statuses, decide approvals, or edit SKILL files.
found ──► analyzing ──► needs_approval ──►(you)──► approved_for_cv
──► [cv questions? you answer] ──► cv_drafting ──► cv_review ──►(you)──► cv_approved
──► application_writing ──► application_review ──►(you)──► application_approved
──► submitting ──► applied
Statuses map to the board columns in app/src/lib/pipeline.js; the full field-level
contract is agents/_system/SCHEMA.md.