Back to buildsBUILD RECORD

Career Application Agent / Local-first Codex plugin / 2026

Keeping application approval tied to the facts reviewed.

A local TypeScript MCP core versions profiles, CVs and application packs, then rechecks those references before consuming a single-use approval.

THE WORK

The project.

Career Application Agent gives application preparation a revision history. A pack records the profile, CV and destination it was prepared for, and approval belongs to that exact combination. If a fact is corrected or a newer CV replaces the old one, the local service requires another review before the pack can move on.

The TypeScript MCP core also records attempts without treating an uncertain outcome as permission to try again. Starting an attempt, consuming approval and updating the pack happen in one saved mutation, with idempotency checks for retries. These are local preparation and recordkeeping capabilities: the core has no employer-submission client.

IMPLEMENTATION

Design choices.

  1. Approval follows the reviewed facts, not just the pack's status. The service checks the latest profile and CV even when the pack text hasn't changed, and limits approval to a thirty-minute window. A later factual correction therefore requires review again.
  2. One mutation starts the attempt and consumes its approval. Matching STARTED, SUBMITTED or UNKNOWN records block another attempt, so an unresolved result stays unresolved until it is reconciled rather than quietly becoming a retry.
  3. An idempotency key covers the full semantic request, including attribution and revision preconditions. Exact replay returns the original result digest without repeating the change; different input under that key conflicts. Receipts retain digest metadata instead of private result contents, which callers retrieve through a separate read.
  4. One encrypted file keeps the storage model compact, but encryption cannot distinguish the newest valid file from an older valid copy restored after restart. An external store identity and revision anchor are still needed before external submission could depend on this state.
  5. Employer-side execution stays outside the MCP core. Local validation can check record shape and allowed transitions; it cannot independently verify a browser's field mapping or the origin of a receipt. Those checks need their own implementation before employer-side writes are enabled.

HOW IT FITS TOGETHER

Architecture.

  • Nine workflow skills guide preparation through a 29-tool STDIO MCP core. Zod validates requests before domain logic records listing identities and immutable profile, CV and pack revisions. Fit and evidence coverage have separate scores, so a promising match isn't presented as complete support for every requirement.
  • Approval creation recomputes the stored pack digest and checks that its referenced revisions are current. The service clock controls expiry. Beginning an attempt repeats those checks, then looks for an existing STARTED, SUBMITTED or UNKNOWN attempt for the same candidate and job or destination.
  • CareerStore serializes mutations and works on a cloned draft state. After revision and idempotency checks, one mutation creates the attempt, consumes approval and updates the pack, with audit and receipt metadata saved alongside it. Those three lifecycle changes share one saved state rather than separate writes.
  • The service keeps its state in one local file encrypted with AES-256-GCM and an scrypt-derived key. POSIX ownership checks, a held directory identity and a lifetime single-writer lock protect the path and writer. This avoids a separate database service while retaining explicit checks around each durable write.
  • External observations arrive as typed caller input. The core itself has no browser, email, network or submission client. Job Search Workflow System and Career Document Tooling are related work, not established runtime integrations of this service.
Explore the architecture map9 components · 10 connections

A typed local core separated from browser authority

The orchestrator carries observations and review decisions into MCP. Encrypted state stays local, and employer-side writes remain unavailable.

Direct callResponse / returnBlocked / denied
Operator and external surface
Orchestration and MCP
Private state

Scroll or drag the background to move. Use the zoom buttons to resize.Arrow keys move between components. Enter selects.

Choose a component to explore

Select a numbered component on the map or use the component menu. Its details and connections will appear here.

No component selected.

All connections (10)
  1. 01 · Operator request03 · Codex workflow orchestrationBounded request · Direct call
  2. 03 · Codex workflow orchestration02 · Separate browser capabilitySeparate read-only research · Direct call
  3. 02 · Separate browser capability03 · Codex workflow orchestrationUntrusted observations · Response / return
  4. 03 · Codex workflow orchestration04 · STDIO MCP / Zod contractsTyped tool request · Direct call
  5. 04 · STDIO MCP / Zod contracts05 · Domain and lifecycle serviceValidated input · Direct call
  6. 05 · Domain and lifecycle service06 · Encrypted external state fileSerialized state mutation · Direct call
  7. 05 · Domain and lifecycle service07 · Exact package reviewExact review material · Response / return
  8. 07 · Exact package review04 · STDIO MCP / Zod contractsBound approval request · Direct call
  9. 06 · Encrypted external state file08 · Audit and replay receiptsRecord event and result digest · Direct call
  10. 05 · Domain and lifecycle service09 · Employer-side writeNo network or submission client · Blocked / denied

MADE WITH

TypeScript · Node.js · MCP · Zod · AES-256-GCM · scrypt · Vitest · esbuild

ACCESS & INPUT

Security controls.

  • Authenticated encryption protects the state contents and detects modification. POSIX ownership checks, held directory identity and a single-writer lock also check where the file is stored and which process can write it.
  • Approval covers the exact pack digest and current profile and CV revisions, with expiry checked against the service clock. Those checks run again when an attempt begins, closing the gap between review and use.
  • An older valid encrypted file can still be restored after restart without detection because there is no external revision anchor. Caller-supplied receipt data also does not establish that an employer issued it. These limits keep the present implementation scoped to local records and preparation.

CHECKS & RESULTS

What was checked.

A source review shows what the code does. It is not a fresh test of the running app.

  1. Code and development records reviewedReviewed

    The code, tests and available development records were checked. Reported test results keep their original scope. No fresh app or live deployment check was run for this write-up.

    Scope of this check
    Code review, not a fresh run of the app

NEXT

Still to work through.

The local core makes the relationship between facts, review and recorded attempts explicit. Extending that relationship to an employer's form requires more than another tool: rollback detection, browser mapping and independent receipt checks remain unfinished. No submission capability is established by the current implementation.