The problem
Every AI writing tool wants to write for you. You give it a prompt, it hands back finished prose, and the result reads like nobody in particular wrote it. The tools that don't do this are autocomplete — they finish your sentence and have no idea what your piece is about.
Muse sits between those. You write a passage. It continues in your voice. You take the pen back whenever you want.
The interesting part: the rolling Creative Brief
The obvious way to keep an AI in your voice is to stuff the whole document into every request. That gets expensive and slow as the piece grows, and models drift anyway once the context is long enough.
Muse keeps a Creative Brief instead — a compact running description of the piece's voice, tense, tone, and intent. Claude Haiku generates it when you start a piece and updates it roughly every 500 words. The continuation model (Sonnet) gets the brief plus recent text instead of the entire document.
Two models with different jobs: a cheap fast one maintaining state, an expensive one doing the writing.
What was hard
Knowing when to stop. An AI that continues indefinitely takes over the piece. The interceptor parser watches the stream and cuts it at a natural boundary, so the handoff back to you lands somewhere you can actually write from.
Not losing the user's own words. Streaming edits into a live rich-text editor means the AI's output and the user's cursor are competing for the same document. TipTap made the boundaries explicit enough to keep them apart.
Stack notes
Next.js App Router with every API route auth-gated in middleware. Supabase for auth and Postgres, with row-level security doing the per-user isolation rather than application code — the database refuses to return another user's rows even if a query is wrong.