Inventing My Own Temporal Authority
Because manually updating 800 years of fake history is for peasants
I just wanted to log a war.
Not even a big one - just a border skirmish between two second-tier kingdoms in my conworld, Kautos. But World Anvil had other plans. Specifically: to gaslight me into believing that their timeline system worked for people who actually use it.
Turns out the feature I relied on most - Chronicles - isn’t even in their API.
Like, not hidden. Not deprecated. Just... missing. Like a god who bailed before the second act.
That’s when I asked the most dangerous question a worldbuilder with Python access can ask:
“What if I just built my own timeline system?”
So I did. Using Notion, Claude, Streamlit, and the unshakable belief that fiction deserves better infrastructure.
Timelines Are a Lie
I’m worldbuilding Kautos - a sprawling, post-apocalyptic fantasy world full of gods, soul-rupturing events, and way too many calendar systems. The kind of world where you need timelines just to keep your pantheon’s theological breakdowns straight.
So naturally, I turned to World Anvil. It has two timeline systems:
Timelines, which are rigid and limited
Chronicles, which are flexible and visual and actually good
Guess which one isn’t in their API?
Chronicles. The one I used for everything.
No access. No endpoints. Not even a cursed workaround. Just radio silence where your lore should be.
And look - manual data entry is fine when you’re logging a single king’s coronation. But when you’re managing thousands of years of conworld history, it starts to feel like copy-pasting bricks into a temple you’re not allowed to automate.
I didn’t want a better calendar.
I wanted a content engine - something that could take structured data and help me generate or complete historical events with contextual accuracy and a dash of creativity.
That’s when I discovered Notion’s database UX and thought, wait... what if this was the frontend, and I could plug my actual lore logic into it?
A Lore Engine, Not a Spreadsheet
I didn't set out to create a better calendar; I aimed to build a lore engine - a system that could:
Contextually generate historical events for Kautos, ensuring consistency with existing lore.
Complete partial entries, filling in gaps with plausible narratives.
Filter and assemble relevant data from various Notion tables, such as cultures, regions, and empires.
Leverage generative AI (Claude via API) to craft event summaries and descriptions that resonate with the world's tone and history.
The goal was to transform the tedious task of manual data entry into an engaging, semi-automated storytelling process. By integrating Notion's intuitive database interface with a Python backend and a Streamlit frontend, I envisioned a tool that not only managed data but also enriched the creative process.
Frankenstein, but for Timelines
This thing is duct-taped together in exactly the right ways. Here’s the anatomy:
Backend: Python + Claude
The backend is a lightweight Python app that:
Pulls structured data from Notion
Filters for relevant context (e.g., nearby locations, same political entities, similar years)
Sends that context to Claude (Anthropic's LLM) to generate or complete event descriptions
🗂️ Database: Notion
Notion is the CMS of choice here. Tables include:
Timeline events (with year ranges, locations, polities, tags)
Supporting entities like locations, cultures, and regions
The UI is intuitive, the filtering is solid, and thanks to the API, it doesn’t mind being bossed around by Python
🎛️ Frontend: Streamlit
Streamlit gives me a quick, responsive UI where I can:
Select a task (generate new event, complete existing one, generate similar)
Tune parameters like delta year range and contextual scope
Review and copy generated event text instantly
Here’s what it looks like in action:
Filtering logic highlights:
If an event is missing a description, the tool grabs nearby events (within X years), in similar locations or involving similar polities.
That context gets fed into Claude, which returns a draft entry.
The Streamlit UI lets me review, tweak, or regenerate if needed.
The whole point is to make lore creation feel like collaboration - not like spreadsheet penance.
The Unexpected Joys & Struggles
Notion surprised me—in the best way
I went in expecting a pretty UI. I did not expect a fully relational database system hiding in plain sight.
I could link tables together like I was in a SQL database - without the Access-induced trauma or the overhead of running Postgres. No weird UX. Just… it worked.
As someone who used Workflowy for years (shoutout to the infinite outline gang), the shift to Notion felt like going from notecards to a functional knowledge graph with buttons.
Claude didn’t totally hallucinate, but it still needs a leash
The outputs are impressive - but like any good oracle, Claude sometimes misattributes gods, gets cultures mixed up, or forgets which empire was conquering whom.
That’s on me: the context it gets shapes everything. I’ve learned I need to build better scaffolding around ethnic identities, divine associations, and regional lore to help it stay grounded. Basically: more metadata, fewer theological faceplants.
This project confirmed what I already suspected - my brain likes data more than prose
I’m the guy who once ran a Fortran climate simulation on a Linux VM to get accurate weather patterns for this world.
So yeah - writing descriptions from structured data? Way easier than that.
It turns a weak spot for me (narrative prose) into something collaborative and less intimidating. I’m not trying to write a novel. I’m trying to build a mythos. This helps.
Why do most tools fail for this kind of thing?
They try to be everything for everyone.
This worked for me because I made a tool that did exactly what I needed and nothing else.
It doesn’t try to be a full CMS. It just helps me tell the story of a world one battle, birth, or betrayal at a time.
What’s Next? (Or: How to Time-Travel Responsibly)
The tool’s already open source on GitHub - feel free to poke around, fork it, or rage about my naming conventions.
You’ll need a little Docker familiarity to get it running, but the instructions are clear and the dependencies are minimal. No arcane rites required.
Contextual retrieval from past events? Already built in.
The generator pulls events by region, polity, and proximity in time - because your conworld deserves historical nuance, not flat exposition.
Do you build tools for your fiction?
Are you also betrayed by bloated worldbuilding UIs that want to be novels instead of tools?
Tell me what you’ve made. Or wanted to make. Or rage-built out of spite.
Because timelines are sacred.
And I, for one, refuse to be governed by a calendar I can’t query.