AI writes proposals.
You write the document.

A self-hosted planning workspace. One idea line starts an interview; PRD, feature spec and IA follow — but nothing AI writes becomes the document until you accept it.

Free & open source (AGPLv3) · runs on your Claude Code login, no API key (BYOK fallback) · your machine, your documents

PRD · v3● 1
Try it — this is the whole product

Scope

The first release ships one Slack digest bot, reading a single spreadsheet. It does not ship a dashboard UI.

source: interview Q4
Accepted — the highlight dries to ink. That sentence is now the document.

Suggestion mode

One grammar, learned in ten seconds.

If you have ever reviewed suggestions in a shared doc, you already know how to use Drafting. Green means "for your review" — everywhere, and nothing else.

01Everything AI writes is a proposal

Sections stream in as suggestions, highlighted green. There is no AI text that silently becomes your document.

02Only what you accept is the document

Exports and share links contain accepted sentences only. Pending suggestions never leak.

03Every proposal carries its source

Interview answer Q3, PRD §2, or your own rewrite instruction — you always see why the AI is proposing.

04Accept · reject · rewrite

Three ways to handle a card. A rewrite instruction returns as a fresh proposal, never as an edit behind your back.

Document with pending suggestions
The suggestion queue: accept, reject, or type a rewrite instruction.

Document chain

One idea line in. A document chain out.

Drafting opens with a single question — "What are we building?" A short interview follows, and your answers become the evidence behind every PRD, feature-spec and IA proposal downstream.

Drafting — a PRD streams in as green suggestions, then dries to ink when accepted
Real screen: the PRD streams in as green suggestions — accept, and each dries to ink.

INTThe interview is a document

Your answers are saved as document zero — re-readable, and cited as the source of later proposals.

PRDContext flows down the chain

Feature specs inherit the PRD; IA inherits both. Each document knows which version of its parent it was written against.

STALEUpstream changes re-propose, never overwrite

Change the PRD and affected downstream items return to proposal state. Nothing is silently rewritten.

BYOKYour login, your machine

The desktop app drives your local Claude Code login — no API key. Docker self-host falls back to BYOK keys (AES-256-GCM, plaintext never stored).

Idea interview
The interview: one question at a time, with hints and examples.
Start screen
First run: one idea line, and a sample plan with pending suggestions to practice on.

Handoff

The chain ends in something you can hand off.

When the accepted chain passes its consistency checks, Drafting compiles a handoff — the spec, ready for an engineer or an AI coding agent to build from.

GATEConsistency, checked

Broken links, features tied to no requirement, screens no flow reaches — caught and resolved in the editor, never shipped silently.

PACKAn agent-ready prompt pack

Hand the accepted spec to a coding agent: role, scope, and every feature with its acceptance criteria as checkboxes.

OUTExport what you accepted

Markdown, print-ready HTML and PDF, and a GitHub-style dev-ticket checklist. Accepted content only.

RUNOn your terms

Your Claude subscription (no key), a BYOK key, or an OpenAI-compatible gateway like LiteLLM for teams.

Quickstart

Self-hosted in a minute.

Your documents live in a local SQLite file — no accounts, no cloud. The desktop app needs no key; the server uses BYOK.

# fastest — run from npm, opens in your browser
# runs in your terminal, so the Claude Code subscription and env-var keys just work
$ npx @hanmariyang/drafting serve
# → http://localhost:8477

# prebuilt server image
$ docker run -p 8477:8080 -v drafting:/data ghcr.io/hanmariyang/drafting:latest

# or from source
$ git clone https://github.com/hanmariyang/drafting && cd drafting && docker compose up -d

Download

Desktop app.

The document workspace as a native window — same self-hosted core inside.

Downloads land on the latest GitHub Release. Prefer a server? Run the prebuilt image and open it in any browser.