← All work CASE 01 · CRAFT FIVE

Designing AI feedback that doesn't write for you.

A tool for writers, not a replacement for them. Five minutes a day, one action line at a time, feedback that asks instead of dictates. I founded the company, designed the product, and shipped the app myself.

Client
Craft Five
Solo project
Timeline
2026
Role
Designer & builder
Craft Five home screen — daily practice queue and progress.

Distracting action lines.

I’m a TV writer. In my own drafts and in scripts I read in a Rewrite Lab, the same issue kept surfacing: story was working, but overwritten action lines were getting in the way. Five-line chunks, narrated camera, one image stretched across three sentences.

Practice on someone else’s prose.

Rewriting action lines you’re unattached to teaches you to see unnecessary words, and that vision sticks when it comes to your own writing.

Spend five minutes a day on an exercise you didn’t write. Without ego in the prose, you can spot the issues, suggest a solution, and apply the skill to your own pages.

Craft Five critique view — a draft action line returned with structured feedback on flaws and a rewrite target.

Refining action lines. Craft Five gives feedback, but doesn’t rewrite for you.

The prompt is the product.

The Claude API call is the product surface. Most of the design time goes there, not into the UI. I’m still iterating on the exercises and feedback prompts.

Table of single-character scenarios — character, setting, goal, obstacle, hidden flaw — with a flaw distribution and variety check below.

Thirty single-moment scenarios. Each hidden flaw shows up as a behavior that’s getting in the character’s way. The distribution checks at the bottom keep the scenes from repeating — different flaws, different settings, different tempos. The system shouldn’t train writers on the same scene over and over.

Sample scene with action line, embedded flaws labeled ADVERB_HEAVY and OVERWRITING, flaw notes, and a rewrite target.

The taxonomy the system prompt thinks in. Each draft embeds two named flaws — ADVERB_HEAVY, EMOTIONAL_TELEGRAPHING, UNFILMABLES, STAGE_DIRECTION_CREEP, and others.

Three rubrics, one loop

Underneath the prompts are three rubrics that have to agree with each other. A setup rubric for exercises, a draft rubric for the flawed scenes, and a critique rubric for evaluating rewrites. They feed two prompts: a scene generator and a critique engine that returns structured JSON, so the UI can render score and sections rather than a wall of text.

Excerpts from the two system prompts powering Craft Five — scene generator and critique engine with structured JSON output.

The two system prompts in production. The critique engine’s voice is set explicitly: not a grammar tool, not a cheerleader, not a harsh professor — the best script editor the writer has never had access to. Structured output. Named flaws. Feedback that remembers what you tried last time.

Shipped solo, end to end.

  • Next.js 14 with App Router and TypeScript
  • shadcn/ui on the Mira preset with Tailwind
  • Supabase for attempts and completions
  • Clerk for auth
  • Anthropic Claude API server-side
  • Vercel for deploy
  • Lemon Squeezy — planned payment provider, not wired up yet

I’m a designer who codes. The hardest part was holding scope while learning enough of the stack to ship without cutting corners I’d regret.

Live, and narrowing further.

Craft Five is live at craftfive.app. The prompt is still under active iteration. I’ll set up the payment provider when the critique quality holds up with real users.