Vyasa

Restoring the Mahabharata's Original Structure

The world's most complex epic was always a graph. We're rebuilding it as one.


The Problem with Reading the Mahabharata

The Mahabharata is the longest poem in human history — roughly 1.8 million words, ten times the length of the Iliad and Odyssey combined. It has over 1,000 named characters, hundreds of nested stories within stories, genealogies spanning five generations, and a web of curses, boons, and oaths that take decades to resolve.

The problem is that you can only consume it linearly today. Either you read a translation front to back, or you consult flat Wikipedia entries that strip out all the connective tissue. Neither option lets you ask: What caused this moment? Who else was present for this? What did this event set in motion?

Here's the key insight that drove everything we built: the Mahabharata was always a graph. Every episode references other episodes. Every character carries context from five other narratives. Vyasa, the original composer, was forced to serialize it into linear text because linear text was the only medium available 2,000 years ago. We're restoring its original structure — making explicit the connections that were always implicit in the source.

The product we're building, also called Vyasa, is an interactive exploration engine. The primary interface is card-based and editorial — approachable, not academic. A visual graph exists as a secondary "map view." But the core navigation mechanism is causal: what led to this, and what did this cause. That's what pulls readers deeper.


Why This Is Actually Accessible

The Mahabharata has a reputation for being impenetrable. The sheer scale — 18 books, 225 chapters just for the first book, a cast of thousands — puts most readers off before they've read a single line.

The approach we're taking flips that problem entirely.

Because each story has been extracted as an atomic self-contained unit — with a clear trigger, a protagonist making a choice, and a concrete consequence — you can drop into any story, at any point, and understand what you're reading. You don't need to have read the 80 chapters before it. The substory is designed to be comprehensible with a brief contextual preamble.

And once you're in, the structure does the rest. You can see what caused this moment — one or two upstream substories that directly triggered it — and you can see the butterfly effects: the causal chain it set in motion, sometimes across dozens of chapters, sometimes across multiple books. You pick a thread — a character, a causal chain, a theme — and follow it wherever it goes.

This is how the Mahabharata was always meant to be experienced. Vaishampayana doesn't tell Janamejaya the story from chapter 1 to chapter 2,000. He follows threads. Characters ask questions, and the text follows the answer wherever it leads, three levels deep, before returning to the main narrative. We're building the digital infrastructure for that experience. The reader doesn't have to be linear, because the epic never was.

The closest analogy: imagine if you could click on any moment in a complex film — the "I am your father" reveal, say — and instantly understand both what built to it and what it made inevitable. Without having watched the whole thing first.


The Source Text: The BORI Critical Edition

Before any technical choices, there was a foundational editorial one: which version of the Mahabharata to base this on.

We built on the BORI Critical Edition — the text produced by the Bhandarkar Oriental Research Institute in Pune after decades of comparing manuscripts from across India, Nepal, and Southeast Asia. The BORI edition is the most academically rigorous version of the Mahabharata in existence. It systematically identifies and removes interpolations — passages that were added to the text over centuries, often by regional scribes, that aren't present in the majority of manuscript traditions. It is the closest thing we have to what the Mahabharata actually said, as opposed to what accumulated around it.

Most popular English versions of the Mahabharata are not based on this text. They are abridgements, retellings, or translations of regional recensions that include interpolations the BORI edition has removed. C. Rajagopalachari's beloved retelling covers perhaps 15% of the actual text. R.K. Narayan's version is a novel inspired by the epic, not a translation of it. Even the older P.C. Roy translation (the first complete English translation, completed in 1896) predates the BORI Critical Edition by decades.

The BORI text is:

  • Complete — all 18 parvas plus the Harivamsa, unabridged
  • Scholarly — produced from systematic manuscript comparison, with critical notes on textual variants
  • Authoritative — the closest available reconstruction of the ur-text

For a product whose credibility depends on faithfulness to the source, this was the only foundation. Every substory page on Vyasa cites the exact parva and chapter. The reader can always go to the source.


What We Don't Do: No Modern Interpretations

Here's the editorial decision that was, in some ways, harder than any of the technical ones.

The Mahabharata is a living text for hundreds of millions of people. It is also, inevitably, a text that modern readers bring modern frameworks to. Ekalavya's story — the tribal archer who is asked to cut off his thumb by Drona, to eliminate him as a potential rival to Arjuna — is frequently read as an allegory for caste discrimination. The disrobing of Draupadi is read through the lens of gender violence. Karna's treatment is read as a story about class prejudice.

These readings are not wrong. They are also not the text.

The Mahabharata operates within its own moral framework: dharma (right action in context), karma (the accumulated weight of actions across lives), varna (the social-cosmic order as the text understood it). These concepts do not map cleanly onto modern ethical categories. Applying modern frameworks to them — saying "this was wrong by our standards" or "this reflects the patriarchal values of its time" — is editorializing. It substitutes our framework for the text's own, and it denies the reader the experience of engaging with a moral universe genuinely different from theirs.

More practically: the Mahabharata is deeply self-aware. It critiques itself. The text knows Draupadi's disrobing is wrong. It makes that legible through Bhishma's paralysis, through Vidura's condemnation, through the divine intervention, through the vow of revenge that haunts the entire war. The text provides its own moral framework for processing what happened. Our job is to surface that framework, not replace it.

So our content principles are explicit:

We do not editorialize. The retelling presents what happened without modern moral judgment. If the text depicts something troubling, we describe it with the same clarity and weight the text gives it. We don't soften it, and we don't gloss it with contemporary commentary.

We preserve ambiguity where the text is ambiguous. If the Mahabharata doesn't tell us why Bhishma stayed silent during the disrobing — and it is genuinely ambiguous, because his vow technically obligates him to the throne — we do not explain it. We describe his silence and let the reader sit with the discomfort.

We do not harmonize contradictions. The text contradicts itself, sometimes flagrantly. Karna's birth is told four times with expanding (and occasionally inconsistent) detail. When two versions of an event differ, we present both, labeled clearly, and explain where the divergence comes from — Northern vs. Southern recension, different in-text narrators, possible later interpolations. We do not invent a unified version that appears in no source text.

We do not privilege one interpretive tradition. Vyasa (the product) presents the text. Interpretation is for the reader.

This is, in our view, the most respectful stance possible toward a text that has been interpreted in every direction for 2,000 years and will continue to be for 2,000 more. The text is strong enough to hold contradictions, to generate multiple readings, to mean different things to different readers. Our job is to make it accessible, not to pre-interpret it.


The Atomic Unit: What Is a Substory?

Before we could build anything, we needed to answer a deceptively hard question: what's the right unit of narrative?

Not chapters — chapters are an arbitrary editorial division with no narrative meaning. Not paragraphs. Not scenes in the cinematic sense. We settled on the substory: a self-contained narrative episode that passes a three-part litmus test.

Every substory must have:

  1. A trigger — the inciting event that starts the episode. Indra arrives disguised as a Brahmin. Shakuni proposes the dice game. If there's no triggering event, it's genealogy or philosophical discourse, not a substory.

  2. Agency — at least one character makes a choice that affects the outcome. Pure lists of kings are not substories.

  3. A resolution or state change — the world is different at the end than at the beginning. Karna has been disarmed. Draupadi has been humiliated. Arjuna has acquired a weapon. The state change can be physical, relational, emotional, or karmic.

This three-part structure is what makes the graph navigable. Without it, you have text blobs with keywords. With it, you have nodes in a causal chain — each one a complete, comprehensible unit that a reader can enter without prior knowledge and exit understanding both where it came from and where it goes.

What we didn't expect: Adi Parva alone contains 479 narrative substories. Our original full-epic estimate was 400–700 — it turns out to be in the right range per parva on average, though parvas vary widely. Sabha, a shorter book, has 154. The actual count for all 18 parvas will likely land between 3,000 and 5,000.


What We've Built So Far

The current state of the product — live and navigable for Adi Parva and Sabha Parva:

  • 633 narrative substories across two parvas (479 Adi + 154 Sabha), each with trigger/agency/resolution structured data and a full narrative retelling
  • 50 story arcs with thesis questions (39 Adi + 11 Sabha), each grouping a sequence of causally connected substories around a dramatic question
  • 1,210 TRIGGERS edges forming a valid cross-parva causal chain (944 Adi + 266 Sabha)
  • 582 character pages with arc timelines and relationship data, shared canonical IDs across both parvas
  • Significance scoring across all 633 substories (64 pivotal, 96 major)
  • Semantic search backed by pre-computed embeddings

The reading experience: every substory page has a causal zone showing what led to this moment and what it caused, with mechanism text explaining the connection. Character sidebar cards show who was present and their role. Arc breadcrumbs give location within the larger narrative. A parva filter on the arcs and stories pages lets you navigate within a single book or across both.

What's still being built: graph visualization (desktop only), backstory expansions (the "Go Deeper" UX), and coverage of the remaining 16 parvas.


The Mahabharata ends with a note from Vyasa himself: "What is found here may be found elsewhere. What is not found here will not be found elsewhere." That claim — made 2,000 years ago — has aged remarkably well. The challenge has always been finding it.

That's what we're building: the interface the epic deserves.

Interested in how this was built? Read the technical deep dive →