Novel Buds

Novel management and writing agent

Scroll to explore
AI · Full-stack

Plan, write and illustrate a novel in one workspace with AI agents.

Novel Buds folds structural story management and agent-driven generation into a single full-stack platform, so a story moves from planning to draft to localisation without ever leaving the project.

Role
Solo full-stack — design, frontend, backend, infra
Focus
Agentic LLM systems & writing UX
Stack
FastAPI · pgvector · React 19 · Docker
Overview

One workspace instead of three

Most authors bounce between a writing tool, a pile of setting notes, and a separate set of AI tools. Novel Buds unifies all three into one project workspace: organise characters, places and lore as cards, build the outline by dragging beats around, draft in a rich-text editor, and hand the same agent tasks like “draft chapter three from these character notes”.

Because every entity is multilingual-aware from the ground up, a single project carries a story from first idea through writing and on to localisation.

The unified project workspace
Core — AI / LLM Engineering

An agent that reads the whole project and edits it directly

01

Multi-provider abstraction

Claude, OpenAI, Gemini, xAI, OpenRouter and Ollama sit behind one interface, with per-project model, thinking mode and effort level. Models without native tool calling get an on-the-fly <tool_call> tag parser; models without native reasoning get prompt-driven chain-of-thought.

02

Permission-gated tool engine

Tools are gated by read / write / delete / translate / generate scopes. Within them the model patches manuscripts, creates and deletes story entities, and runs semantic search directly — and new tools drop into the modular registry.

03

Editable prompt pipeline

A Jinja2 template engine composes prompt fragments recursively and versions them, so system and user prompts can be tuned to any voice or style without touching code.

04

Journeys, agents & MCP

Goal-driven structured Journeys and free-form multi-turn Agents are separate primitives. Sub-agents with their own prompt, model and tools are invoked via call_<name>, and external MCP servers attach per preset.

05

RAG & conversation memory

Story content is chunked and embedded into pgvector, and a hybrid regex + vector search grounds generation. As a chat grows, older turns are summarised, re-embedded and selectively re-injected so only the relevant detail returns to context.

Human-in-the-loop by default

Every tool call streams to the UI over SSE and moves through an explicit lifecycle. Nothing touches the project until the author accepts it — each step can be reviewed, reshaped or rejected.

  1. Pending
  2. Validating
  3. Applying
  4. Applied
Going further

A model fine-tuned for the agent itself

The platform runs on any major provider, but frontier models are tuned for science and coding and slip on fiction — continuity and consistency are exactly where a novel agent needs to be strongest. So beyond connecting to existing models, I fine-tuned a dedicated one: a QLoRA fine-tune of Gemma 4 31B into a novel-writing agent that drives these same project tools, trained on a synthetic dataset built by a multi-agent data factory.

Product & UX

Built for the way authors actually work

Story entities

Characters, places and lore as cards

Characters, organisations, places and lorebooks live as rich cards with images and a folder hierarchy. Framer Motion shared-layout animation expands a card in place, and dnd-kit handles reordering.

Story entity cards expanding in place
Timeline

A timeline in your world’s own calendar

Define custom calendar units for the world, place dated events across multiple tracks, and link each event to the characters, places and chapters it touches.

Multi-track world timeline
Illustration

Art generated and approved in place

Generate illustrations across OpenAI, Gemini, xAI, NovelAI and OpenRouter with per-object positive / negative prompts, then move each through a generate → review → approve flow with AVIF output.

Image generation review queue

One project workspace

Brief, outline, manuscript, story entities, timeline and agents all live in a single project view.

Writing tools

A TipTap rich-text editor with autosave and version history, plus a drag-and-drop outline → act → chapter manager.

Multilingual by design

Every content entity carries per-language versions with coverage tracking, AI batch translation, and base-language fallback flagged by a warning badge. The UI itself is localised with i18next.

Realtime sync

SSE pushes object, asset and run-state changes so every open view stays in sync.

Stack

What it’s built on

Backend
Python 3.12+FastAPISQLAlchemy + AlembicPostgreSQL 18 + pgvectorJWT authJinja2
AI / LLM
AnthropicOpenAIGoogle GenAIMCPtiktokenprompt caching
Frontend
React 19TypeScript 5.8Vite 7React Router 7ZustandTipTapdnd-kiti18next
Infra
Docker ComposeCaddy 2 (TLS)AWS LightsailS3Cloudflare

Designed and built end to end — product and UX, frontend, backend and infrastructure.