Case-Study Generator
What it does for you
Form in, standard case-study.md out, the capture tool for the whole 100-build sprint.

Screenshots

In more detail
A one-page form that turns a project's details into a properly formatted case-study.md. Every one of the 100 projects ends in the same case study format, because those files become the portfolio, the documentary page, and the recaps. This tool makes filling that template fast and keeps the machine-read part from breaking.
Honest limits
The verifier isn't kept in the project folder and no test count is recorded in the tracker, so the checks aren't repeatable from what's on disk. There was no headless browser in the sandbox at the time, so the UI screenshot had to be captured later from the live page. It only templates; it won't draft any writing for you.
How I built it
This was the only Claude Cowork build in the first ten. Cowork scoped the smallest core that fit a T0 box, then built the whole thing in one pass: a grouped form (header facts, narrative, website metadata), a live Markdown preview, a YAML block that gets built and escaped for you, a "Load sample" button, and Copy and Download. It's one HTML file with no server and no dependencies, and it runs offline.
It also wrote a Node verifier that pulls the page's own buildMarkdown() function and checks the output against the real template: every section present, the YAML parses with the right types, and quotes and backslashes round-trip. One snag: js-yaml had no ESM default export inside the verifier, so we loaded it with createRequire() instead.
Then we dog-fooded it. This project's own case study was written by running the finished generator on Project 2's data. The tool documented itself. About an hour and a half.
What I learned
- A fixed-format document is a string-templating problem, not an AI problem. Deterministic output is the feature. I didn't want generated prose here, I wanted the same shape every time.
- Sharing one pure function between the UI and the test is what makes a tool trustworthy. The verifier runs the same code I run in the browser.
- Escaping quotes and backslashes before they hit the YAML block is the difference between metadata a site can read and a block that silently breaks.
What carried forward
The YAML metadata block this tool writes at the bottom of every case study turned into a contract. #3 was built straight to that field set, and the portfolio site (#96) parses that block across all 101 project folders. The idea of one pure function shared by the page and a Node test is an early version of the tested core pattern that #9 made formal with verify.mjs, and that ran through almost every build after it.
To be honest, the contract wasn't tight enough. The #96 case study says most of its parser's tolerance exists to read my own early formats, and that I'd make the template's YAML block stricter from project 1. That lesson started here.
If I took it further
I'd add saved presets and an optional AI pass that drafts first-pass prose from rough notes, with the deterministic template still doing the formatting underneath.
#002 Built with Claude Cowork June 22, 2026