Inspiration

One of us has been writing a fantasy novel for two years. Last month, a beta reader found that the magic system — which explicitly forbids healing — quietly heals a character in chapter 19. Two years of worldbuilding. One sentence that broke it. No tool caught it.

We looked at every writing AI out there. Every single one wants to write for you. But that's not the problem writers actually have. The real problem is finishing a chapter, reading it six times, being convinced the tension is unbearable — and then a reader picks it up and feels nothing. Not because the ideas are bad. Because the words don't say what the writer thought they said.

That gap is what Srijan is built to close.

What it does

Srijan is a writing intelligence layer that reads your manuscript the way a reader does — paragraph by paragraph, without assumptions, without knowing what you meant to say. It never writes a word for you. It tells you what your words actually do.

Paragraph Reader — the core experience Every paragraph gets a real-time reading across multiple dimensions: tension, pacing, emotional register, clarity, and sensory density. The score isn't a grade it's a mirror. If you wrote a paragraph intending breathless urgency and Srijan reads it as calm and descriptive, that's the gap you need to fix. The author sees what the passage actually communicates, not what they hoped it would. Node Tracker Every narrative node a plot thread opened, a promise made to the reader, a mystery introduced, an object that will matter later, is extracted and tracked across the manuscript. Srijan maps which nodes are active, which are dormant, and which have gone unresolved for too long. Writers see their story's architecture laid out as a live network, not as a memory exercise. Character Sketching Srijan builds a behavioral and psychological sketch for each character entirely from what the author has written — their speech patterns, their decisions under pressure, their stated values, their contradictions. When a character acts outside their established sketch without earned development, Srijan surfaces it as a question. It also shows the author how each character reads to a fresh eye: not the person the author imagined, but the person the text has built. World Graph + Consistency Engine Auto-extracts the rules of the writer's world from their own prose — geography, systems, limits, social laws. Every new chapter is scanned against the live graph. Contradictions surface as questions, never verdicts. The writer always decides. Claim Auditor (nonfiction) Every factual claim in a nonfiction manuscript is flagged, cross-referenced against live sources via web search, and returned with a confidence score and inline citations — inside the document, not in a separate tab.

How we built it

Everything runs on Claude's API — but used for reading, not writing. Each paragraph goes through a structured literary analysis pipeline where Claude evaluates it across defined dimensions and returns plain-English descriptions of what the text actually does. No scores without explanations.

Node tracking runs a separate extraction pass that identifies narrative commitments — including implicit ones — and diffs them against a graph of open threads chapter by chapter. Character sketches accumulate across the manuscript and are versioned per chapter so Srijan can distinguish growth from inconsistency.

The frontend is a React split-pane: manuscript on the left, live reading panel on the right. Click any paragraph and get its full reading — what it communicates, which nodes it touches, how it lands emotionally.

Challenges we ran into

The hardest part wasn't technical. It was tone.

Early Srijan said things like "tension: low — this paragraph lacks conflict." Writers hated it. It felt like being marked wrong. We rewrote the whole output voice: Srijan now describes what is, not what's missing. "This reads as unhurried and reflective. If you intended urgency, the sentence rhythm is working against you." Same information. Completely different feeling.

Operationalizing "tension" for a language model was also genuinely hard — we went through eight definitions before landing on one that produced readings writers recognized as true. And getting Srijan to detect implicit narrative promises (an object described with unusual care, a glance that lingers a beat too long) rather than only explicit ones took real prompt engineering work.

Accomplishments that we're proud of

Communicating readings without sounding like a teacher. The paragraph reader is the most powerful feature and the most dangerous one. Early versions returned things like "tension: low — this paragraph lacks conflict." Writers found it brutal. We had to redesign the output language entirely. Srijan doesn't say your tension is low. It says: "This paragraph reads as reflective and unhurried. If you intended urgency here, the sentence lengths and verb choices are working against you." That reframe — describing what is, not judging what isn't — took far longer than the technical implementation.

Defining dimensions that are actually measurable by language. "Tension" sounds obvious until you try to operationalize it for a language model. We went through eight definitions before landing on one that produced consistent, meaningful readings: the presence of unresolved force between two things the reader is made to care about. That definition now lives in the system prompt and produces readings writers actually recognize.

Node tracking across implied promises. Writers don't always announce their narrative promises. An object described in unusual detail is a promise. A character's glance that lingers too long is a promise. Getting Srijan to detect implicit commitments not just explicit ones — required training Claude on examples of what "narrative weight" looks like in prose, which was a genuinely hard prompt engineering problem.

Character sketches that grow without contradicting themselves. A character's sketch at chapter 5 is different from their sketch at chapter 20 — they've developed. Srijan needed to distinguish between character growth (intentional change over time) and character inconsistency (the author forgot who this person was). We solved this by versioning the sketch per chapter and asking Claude to reason about whether the delta represents arc or accident.

What we learned

The gap between what a writer intends and what a reader receives isn't a talent problem — it's an information problem. Writers just don't have access to a stranger's first impression of their own work. Srijan provides that.

We also learned that restraint is a feature. Every instinct in a hackathon is to add more. Srijan gets better the less it says. Two sentences describing what a paragraph actually does is worth more than a paragraph of suggestions. Knowing when to stop is hard. We're still learning.

What's next for Srijan

Full manuscript mode — upload an entire novel and get a reading heatmap across tension, pacing, and clarity; a complete node resolution map; and a full character cast built from the text.

A Reader Journey view — a visual arc of emotional register across the whole book, so flat sections become visible and the writer can see the shape of the reader's experience.

And eventually, a plugin for the tools writers already use — Scrivener, Obsidian, Google Docs — so Srijan lives in the margin, reads silently, and speaks only when something matters.

The world has enough tools that want to write for you. We built the one that makes sure what you wrote is what you meant.

Built With

  • language
Share this project:

Updates