DEV Community

devjiro
devjiro

Posted on

I Built a Literary Analysis Dashboard with AI — Here's What I Learned

What if you could upload a novel and get a full editorial-grade analysis — character maps, engagement curves, structural weaknesses — in minutes?

I built Story Miner to do exactly that. It's a web app that combines deterministic text analysis with LLM-powered narrative intelligence to give writers and editors deep insight into their stories.

Here's a walkthrough of what it does and how it's built.


The Verdict — Strengths & Weaknesses at a Glance

The first thing you see is a high-level report: what works, what doesn't, and actionable takeaways for the author.

Verdict view showing strengths and weaknesses analysis of The Godfather

This is generated by feeding episode-level summaries through an LLM pipeline that identifies narrative patterns, then synthesizes them into a structured report.


Engagement Map — Where Readers Stay (and Where They Leave)

This tab maps narrative structure (Setup → Development → Crisis → Climax → Resolution) alongside an engagement timeline that tracks sentiment, dialogue ratio, and pacing across every episode.

Engagement Map showing narrative phases and engagement timeline

The engagement scores use a hybrid approach: deterministic metrics (sentence length variance, dialogue density, vocabulary richness) combined with LLM-assessed emotional intensity. This gives a much more reliable signal than either approach alone.


Character Craft — Relationship Graphs & Emotion Analysis

Every character gets profiled: role classification (protagonist/supporting/antagonist), emotion distribution, co-appearance frequency, and an interactive relationship graph.

Character Craft view with relationship graph and emotion analysis for Vito Corleone

The relationship graph uses force-directed layout to show character clustering — you can immediately see which characters form tight groups and which are isolated.


4-Language Support — Instant Switching

The entire analysis can be viewed in Korean, English, Japanese, and Chinese. Switch languages from the header and all analysis content re-renders in the selected language.

Japanese language view of the Weak Spots analysis

This isn't just UI translation — the LLM analysis results are stored per-language, so the narrative insights themselves are generated natively in each language.


Tech Stack

Layer Tech
Frontend Next.js 16, Tailwind CSS, shadcn/ui, Recharts
Backend FastAPI, SQLite
AI Claude (narrative analysis), deterministic NLP pipeline
Hosting Cloudflare Workers (web), Railway (API)
Build OpenNext for Cloudflare, Turbopack

The Hybrid Analysis Pipeline

The key architectural decision was splitting analysis into two phases:

  1. Deterministic phase — keyword extraction (TF-IDF), character counting, co-occurrence matrices, topic modeling, sentiment scoring, style profiling. Fast, reproducible, and cheap.

  2. LLM phase — episode-by-episode narrative analysis, overall structure detection, character relationship inference, and the final editorial report. Expensive but insightful.

The deterministic data feeds into the LLM prompts as context, grounding the AI analysis in measurable textual features. This prevents hallucination about pacing ("the middle section drags") when the engagement metrics actually show it's fine.

Per-Language Result Storage

Analysis results are stored with language-qualified keys (report:en, report:ja, etc.) in SQLite. The API tries the requested language first, then falls back to the default. This means you can analyze once and view in multiple languages without re-running the pipeline.


Try It

novelcat.io — The demo includes a pre-analyzed sample (The Godfather screenplay) with all 4 languages ready. No signup required.

The whole project is still in early stages (v0.1.0), but I'd love feedback on the analysis quality and what features would be most useful for writers.


Built with Claude Code in a weekend sprint. The AI wrote most of the code, I steered the product decisions.

Top comments (0)