StoryMate — AI-Powered Novel Writing Companion What inspired me I've always had stories in my head — characters, worlds, plot twists — but turning them into actual chapters was a wall I couldn't climb alone. Writing a novel is lonely. You stare at a blank page, unsure if the next sentence is right, if the foreshadowing will pay off, if your characters are consistent across 50 chapters. I didn't want an AI that writes for me. I wanted an AI that writes with me. A partner that remembers my world, understands my characters, and grows to match my style over time. The intersection of creative writing and AI fascinated me — not just "prompt → output", but a genuine collaboration where both human and machine learn from each interaction. What I learned

  1. Multi-Agent Architecture Design StoryMate uses a Soul-based Agent system inspired by the Hermes Agent architecture. Each writing agent owns a structured "Soul" file — a JSON document defining its identity, memory, skills, and knowledge. Agents evolve through feedback: Soul_{n+1} = Soul_n + \Delta_{preferences} Where $\Delta_{preferences}$ is extracted from user edits, acceptances, and rejections using a confidence-weighted preference extraction algorithm: \Delta = \sum_{i=1}^{n} w_i \cdot \text{extract}(original_i, modified_i) The confidence threshold $w_i$ starts at 0.3 for single observations and compounds to 0.9 after 5 consistent patterns.
  2. AI Collaboration Pipeline I built this with a three-model architecture — not just one LLM, but a pipeline: | Architect | Kimi K2.7 | System design, code review, task decomposition | | Executor | DeepSeek Pro / Cline | Code generation, compilation, debugging | | Gatekeeper | Reasonix / Human | Decision-making, git commits, quality control | The key insight: AI tools excel at execution but struggle with judgment. The human must always hold the compass.
  3. NovelContext — Reactive State Architecture The hardest engineering challenge was making all 5 tabs (Project / Outline / Editor / Inspiration / Agent) react instantly when a novel is selected. I built a NovelContext singleton using Kotlin StateFlow: ```kotlin @Singleton class NovelContext { private val _currentNovelId = MutableStateFlow(null) val currentNovelId: StateFlow = _currentNovelId.asStateFlow() }

Built With

  • ai/ml
  • android
  • creative
  • jetpack-compose
  • kotlin
  • mobile
  • qualityeduca
Share this project:

Updates

Submission history