skrivant
AI-assisted story writing, with the author in control of every structural decision.
What it is.
skrivant is an AI-assisted story-writing product that helps authors take a concept and turn it into a finished work, from a 1-2 chapter short to a multi-arc novel. The model handles drafting; the human stays in control of the parts that define a story: the world, the characters, the structural beats. The amount of human involvement is dialed up or down by the author, not by the tool.
It is currently aimed at fiction writers. The eight-step process generalizes to non-fiction and scientific writing, which are planned extensions.
Why it exists.
I was trying to write a novel using AI and found it tedious to keep all the details, the world rules, the character voices, the chapter throughlines, in the model's context window. Every session started from scratch. skrivant is the tool I wanted: state that persists across sessions, structure that the model can lean on, and human approval gates at the points where authorial judgment actually matters.
How it works.
skrivant runs an eight-stage pipeline: Concept, World, Characters, Outline, Chapters, Revision, Quality Gate, Publish. The author enters a premise, and the model returns five clarifying questions calibrated to that premise. Once the author answers them in earnest, the model proposes the world, the cast, and the chapter-level beats. The author edits, approves, or rewrites at each stage. Approved artifacts become persistent context for everything downstream.
Per-stage controls let the author adjust tone for a specific beat, regenerate a single chapter, or fork an arc without losing prior approvals. The point is not to remove the author from the loop. It is to let the author decide where in the loop to spend their attention.
Model selection is per-stage. Question generation runs on Claude Haiku because the prompt is short and latency matters more than depth. World, character, beat, and chapter generation run on Claude Sonnet by default. Premium users can route any stage through Claude Opus when they want extra horsepower on a specific decision.
Chapter generation streams to the editor via Server-Sent Events so the author watches the prose come in word by word, the same affordance any modern AI chat surface has. Prompts use Anthropic's prompt caching with a three-block pattern (static system context, prior chapters, current instruction), which keeps per-chapter cost down once a book is multiple chapters long. A spend guard runs pre-call against a per-user budget table; a Postgres trigger on the provenance log auto-computes cost from the pricing config and upserts running totals. The cost accounting lives in the database, not the application, which means it stays correct even if the application code has bugs.
Stack.
- Frontend
- Next.js 14 on React 18 with TypeScript, static export deployed to Cloudflare Pages via Wrangler. TailwindCSS for styling
- Editor
- TipTap on ProseMirror for the rich-text chapter editor. @dnd-kit for outline drag-reorder. A custom search-and-replace extension built on diff-match-patch
- Backend
- Supabase end to end: Postgres with RLS, Auth, and Edge Functions (Deno) for server-side LLM calls and shared utilities (auth, cost logging, spend guard). 19 migrations in source control
- AI
- Anthropic API. Haiku for question generation, Sonnet default for generative stages, Opus available to premium users. SSE streaming so chapter generation arrives in the editor word by word. Prompt caching with a three-block pattern (static, prior chapters, current instruction) to keep multi-chapter generation affordable
- Cost accounting
- Per-model pricing in a database table. Postgres trigger on the provenance log auto-computes cost and upserts running spend per user. Pre-call spend guard rejects calls that would exceed budget
- Export
- jspdf for PDF, docx for KDP-ready Word output. Author can take their book to a publisher or self-publish without leaving the tool
- Bot mitigation
- Cloudflare Turnstile on signup and key write paths
Status.
skrivant is in closed alpha with a small group of friends, family, and writers from communities I trust. Fewer than ten active users today. The closed alpha is intentionally narrow: I want feedback from people who actually write, not from people testing the surface of an AI tool. Open beta is gated on the eight-stage pipeline holding up across more diverse premises and on the per-stage tone controls landing for chapter-level revision.