Quickstart
Sumisura runs on your machine. Nothing is hosted, there is no account, and it calls the Claude API with your own key.
What you need
Section titled “What you need”| Requirement | Why |
|---|---|
| Docker + Docker Compose | Runs the web app — one container from a published image |
| An Anthropic API key | Selection, Rewrite, cover letters and research calls (Claude API, pay per use) |
| Claude Code | Runs the tailor-cv skill, which drives the tailoring pipeline |
Typst on your PATH | Renders the PDF |
Python 3.10+ (python3, standard library only) | The tailor-cv skill’s prose clean-up step (clean-user-facing-text skill, downloaded on first use) |
pdftotext (poppler-utils) | Optional — the ATS-parsability check |
1. Get it
Section titled “1. Get it”From a published image (recommended). No checkout, no Node, no Go — one image with the backend and the frontend together, on one port (ADR-0039):
mkdir sumisura && cd sumisuracurl -O https://raw.githubusercontent.com/gio-del/sumisura/main/docker-compose.release.ymlcurl -o .env https://raw.githubusercontent.com/gio-del/sumisura/main/.env.exampleThat .env already names this release — uncomment SUMISURA_VERSION=v0.4.0
in it to pin that image rather than following latest, so upgrades stay
deliberate. You still need a checkout for the tailor-cv skill, which runs in
Claude Code — but not to run the app.
From source, if you want to change the code, or want the dev server’s hot reload:
git clone https://github.com/gio-del/sumisura.gitcd sumisuragit checkout v0.4.0 # or track main2. Add your API key
Section titled “2. Add your API key”cp .env.example .env# then set ANTHROPIC_API_KEY=sk-ant-...
# from a checkout:cp -r data/examples/. data/
# from a published image, fetch the stubs instead:# curl -L https://github.com/gio-del/sumisura/archive/refs/heads/main.tar.gz \# | tar -xz --strip-components=2 '*/data/examples'That copy seeds data/ with stub Master Data to edit. Everything it writes —
profile.yaml, experience/, projects/, cover-letter-snippets/ — is
gitignored on purpose: your name, your employer and your clients never go
near a commit (ADR-0038).
The tracked copies under data/examples/ stay as examples.
Without a key the app still starts and you can browse and edit Master Data — only the calls to Claude fail.
3. Start the app
Section titled “3. Start the app”docker compose upFrom a published image, everything is on one port:
docker compose -f docker-compose.release.yml up- App and API:
http://127.0.0.1:8080
From a checkout, docker compose up runs the development pair instead:
- Backend:
http://127.0.0.1:8080 - Frontend:
http://127.0.0.1:5173
Both are bound to localhost with no authentication, on purpose. See LAN-reachable mode if you want to reach it from your phone.
4. Replace the stub data with your own
Section titled “4. Replace the stub data with your own”The copy in step 2 filled data/ with stub content for a fictional “Jane Doe”
so the app has something to show on first run. Replace it with your own career
history — every file below is untracked, so edit freely:
data/profile.yaml— contact details, education, publications, awards, languagesdata/experience/*.md— one file per job or client engagementdata/projects/*.md— one file per projectdata/cover-letter-snippets/*.md— optional reusable cover-letter paragraphs
You can edit these in the web app, or in your editor — they are plain Markdown with YAML frontmatter, and both paths write the same files. See Writing your Master Data for the shape of each file.
5. Install the tailoring skill
Section titled “5. Install the tailoring skill”The pipeline is a Claude Code skill served from this repo’s own plugin marketplace:
claude plugin marketplace add .claude plugin install sumisura@sumisura-local6. Tailor your first CV
Section titled “6. Tailor your first CV”In Claude Code, from the repo:
/sumisura:tailor-cvGive it a job description (pasted text or a URL), point it at an Application you
already track, or give it nothing at all for a general-purpose CV. It walks
Selection → Rewrite → Text Review (you approve) → Render → Visual Review
(you approve), and writes everything into output/<label>-<timestamp>/.
That directory holds cv.pdf, cover-letter.pdf, the assembled data.json,
and selection.json — the record of which Entries were chosen and how each
bullet was rewritten.
- How it works — the vocabulary, and where the guarantees are
- Tracking applications — Job Listings, Applications, the extension
- Configuration — models, costs, environment variables