Skip to content

About

Local-first agentic CV workspace with cross-provider author–critic review

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,145 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DraftLoop: job-specific CVs grounded in your own evidence. One AI drafts, another critiques, you decide.

CI Node.js pnpm Anthropic OpenAI

DraftLoop turns candidate-owned sources into a job-specific CV with local-first grounding, independent AI critique, and final human control.

It is designed for candidates who want useful drafting assistance without giving up traceability or control of their source material. Claims remain connected to candidate-provided evidence, provider and model identities are visible, and the candidate decides what to approve and export.

Current maturity: DraftLoop is an alpha-stage local-first CV tool. Its bounded capabilities are integrated and deterministically validated, but the latest fictional two-profile reference observation did not meet its coverage exit. No representative consented outcome has been recorded. The roadmap and current status record the evidence and remaining gaps. This project is not production-ready.

How DraftLoop works

The workflow keeps the job description and career evidence in a local workspace, then applies an evidence-grounded evaluator–optimizer workflow: an author generates, an independent critic evaluates against a rubric, and accepted feedback drives bounded revision. The default cross-company pairing is Anthropic as author and OpenAI as critic. ADR 0003 records DraftLoop's adaptation and controls.

How DraftLoop works: sources and job requirements pass a visible transmission approval, a grounded Anthropic author and an independent OpenAI critic iterate in bounded rounds, and the candidate reviews every claim before a local export.

The loop is an assistant, not an authority. DraftLoop does not independently verify a career, contact past employers, replace interviews, or turn a candidate's source material into permission to invent facts.

Try the alpha desktop build

Download the newest release compatible with your platform and its SHA256SUMS file. Desktop packages are distributed as platform-specific ZIP archives, including Windows x64. The releases page is authoritative for the current platform set and release limitations.

To verify one download, replace <downloaded-archive>.zip below with the ZIP you selected and compare that single digest with its matching line in SHA256SUMS:

# Linux
sha256sum "./<downloaded-archive>.zip"

# macOS
shasum -a 256 "./<downloaded-archive>.zip"

On Windows, run (Get-FileHash .\your-download.zip -Algorithm SHA256).Hash in PowerShell and compare that output with the matching SHA256SUMS entry. Extract the matching ZIP and launch the desktop executable from the extracted folder. These are v0.8 alpha packages, not signed installers or dependable real-application tooling; no representative consented outcome has been recorded, and signing and automatic updates remain ahead. The CLI is a separate, source-only interface and has no standalone installer.

Developer quick start

Use Node.js 24.5.0 and pnpm 10.18.3:

pnpm install --frozen-lockfile

Start the desktop shell and choose Try demo workspace to exercise the deterministic fixture workflow:

pnpm --filter @draft-loop/desktop start

Fixture mode is offline and uses no provider spend. To inspect the source-only CLI:

pnpm --filter @draft-loop/cli start --help

Every command group — opportunity briefs, candidate profiles, writing policies, and candidate knowledge bases — is documented with runnable examples in the CLI and desktop operations reference.

Live use requires an explicit provider-transmission approval in the workspace, configured provider credentials, and may incur provider cost. Keep real candidate material out of the repository.

List each job requirement as its own bullet line in job.md. A run started without a reviewed opportunity brief refuses long unbulleted paragraphs, such as a pasted web page, before any provider call. In the desktop app, Extract requirements into a brief turns such a page into reviewable requirements, and the start panel shows which requirements a run will use.

For the normal quality gate, run:

pnpm format:check
pnpm lint
pnpm typecheck
pnpm test
pnpm validate

Local semantic retrieval model (optional)

DraftLoop can use a pinned, local embedding model (Apache-2.0; Granite, about 313 MB for the default 311m tier and 98 MB for 97m, or the experimental EmbeddingGemma 2 eg2-text tier at about 175 MB). It runs on your machine and is never downloaded implicitly. The files are fetched only when you run install with --confirm; without it, the command prints what would be downloaded and exits.

pnpm --filter @draft-loop/cli start embeddings status [--tier 311m|97m|eg2-text] [--verify]
pnpm --filter @draft-loop/cli start embeddings install [--tier 311m|97m|eg2-text] [--from <dir>] --confirm
pnpm --filter @draft-loop/cli start embeddings remove [--tier 311m|97m|eg2-text]

Use --from <dir> to import the files offline from a directory that mirrors the model repository layout. Every file is checked against its pinned SHA-256 checksum before the model becomes available. The default location is your per-user data directory; set DRAFT_LOOP_EMBEDDING_MODEL_ROOT (or pass --model-dir) to choose another.

Choose how a workspace searches its knowledge with retrieval mode (lexical, the default, semantic, or hybrid). Runs fall back visibly to lexical retrieval when the local model or index is unavailable; see the CLI reference.

pnpm --filter @draft-loop/cli start retrieval mode ./workspace [lexical|semantic|hybrid] [--tier 311m|97m|eg2-text] [--json]

When the critic judges requirement coverage, run output prints a Coverage judgement: summary and status lists each requirement's assessment; see Requirement coverage in run output.

Technology and architecture

Area Technology or boundary
Runtime TypeScript, Node.js 24.5.0, pnpm 10.18.3
User interfaces React 19, Vite, Electron 43; source-only Commander CLI
Product core Framework-free domain contracts, Zod schemas, orchestrator ports
Providers Explicit Anthropic and OpenAI SDK adapters
Local data and output SQLite via Drizzle ORM; Markdown, PDF, and DOCX exports
Quality Biome, ESLint, Markdownlint, Vitest, GitHub Actions

DraftLoop architecture: desktop and CLI share application contracts over a framework-free core with local SQLite, portable CKB, and local exports; provider adapters send only approved context to the Anthropic author route and the OpenAI critic route.

The portable Candidate Knowledge Base (CKB) component can store approved local source versions. CLI and desktop adapters can create, open, list, and inspect stores; workspaces can also bind explicit store/base snapshots with drift checks. The integrated path synchronizes and queries exact selected source versions through each CKB's local lexical index, while legacy workspaces without a CKB selection continue to use the legacy workspace evidence path.

Career evidence is the material a run uses. Runs read the selected knowledge base; legacy workspace evidence (the workspace evidence folder) is used only when none is selected. In the desktop app, a workspace without a base gets one created on its first add; the app no longer offers to import or keep legacy evidence.

The desktop Career evidence page has one Career evidence panel. Its top part shows the base the workspace uses and is the one place to add evidence: Add files and Add folder open a native picker, and public URLs (one per line) are fetched one after another after you approve them. A URL that fails stays in the box to fix or retry. Everything you add goes into the base in use.

Its Knowledge base section can create or open a local store. In a collecting or stopped workspace, choose Use this knowledge base to replace the workspace selection with one active base. This clears the selected canonical profile so you can review a profile against the new selection.

If the desktop host restarts while a review is open, a workspace operation can lose its connection. DraftLoop clears that stale review and offers Open workspace. Select the same local directory to recover its saved history before approving or exporting.

Trust boundary

  • Career evidence, run history, and exports are local by default.
  • A provider receives only context covered by an explicit user approval; the workspace shows the provider, model, transmission scope, and retention choice.
  • Independent review is a product constraint: the default author and critic use different provider companies, and their identities are recorded.
  • Model profiles offer economy (Claude Haiku 5.5 with GPT-6 Luna), balanced (Claude Sonnet 5.5 with GPT-6.1 Sol), and standard (Claude Opus 5.5 with GPT-6.1 Sol) pair choices. These exact profiles are unvalidated. New workspaces default to economy; existing workspace settings change only when a user explicitly applies a different pair, and saved run records remain unchanged. The labels do not establish provider availability or CV quality. See the roadmap.
  • The opt-in development-glm preset adds the Z.ai zai-org/GLM-5.3-Flash author through DeepInfra and keeps the GPT-6 Luna critic. It requires the dedicated DEEPINFRA_API_KEY; pricing metadata uses standard $0.15/$0.50 per million input/output rates reviewed on 2026-10-02. CV quality is unvalidated and account availability is unchecked. This choice does not change defaults or existing workspaces.
  • The opt-in development-gemini preset adds the Gemini 3.8 Flash author (dev-google-gemini-author@2; @1, Gemini 3.7 Flash, still resumes) and keeps the GPT-6 Luna critic. It requires the dedicated GEMINI_API_KEY from a paid-tier Gemini API project, because free-tier terms let Google use submitted content. Pricing metadata uses standard $0.75/$3.75 per million input/output rates reviewed on 2026-10-04. CV quality and account availability are unvalidated. The author is also selectable with --author-company google in the CLI and in desktop settings. This choice does not change defaults or existing workspaces.
  • The opt-in Mistral Large 4 author (dev-mistral-author@1, public preview) is selectable from the CLI with --author-profile or --author-company mistral, and requires the dedicated MISTRAL_API_KEY. The opt-in development-mistral preset pairs it with the GPT-6 Luna critic. Pricing metadata uses standard $1.36/$4.18 per million input/output rates reviewed on 2026-10-08, without Mistral's temporary launch discount. The model takes 20-40 seconds per call, desktop key storage is not available yet, and CV quality is unvalidated.
  • DraftLoop prepares local artifacts. It does not submit applications, publish documents, send messages, or perform uncontrolled web research on a user's behalf.

Documentation

Human approval is mandatory before an artifact is exported. DraftLoop can help prepare a CV, but the candidate remains responsible for factual review, final approval, and every action outside the local workspace.

About

Local-first agentic CV workspace with cross-provider author–critic review

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages