Why I Started Plotline
Back in May–June 2025, when the conflict between Israel and Iran was dominating headlines, I found myself stuck on one basic question: “Who fired the first shot, and why?”
Everyone was reporting that something had happened, but no one seemed to be asking or answering why it happened—not just in the immediate sense, but the deeper causes behind it.
That’s where Plotline started: a curiosity-driven attempt to trace the underlying reasons behind major news events.
From Curiosity to Concept
I wasn’t looking to map out decades of Middle Eastern politics. I wanted to build a tool that could go backward from an event to its root causes—recursively. If a missile was launched, I wanted to trace the cause of that, and then the cause of that, until I got a satisfying answer.
Think of it like peeling back layers of cause and effect until you hit something fundamental.
The example that pushed this idea forward was the uranium enrichment violation of the JCPOA in 2015—a factor that arguably escalated tensions in the region over the years. That kind of insight is what I wanted Plotline to uncover.
First Attempts: Manual NLP
I started off by scraping articles from AP News using a basic Python script with requests
and beautifulsoup4
. Once I had a corpus, I tried analyzing it using spaCy—specifically using NER and dependency parsing to extract events and relationships.
It worked to a point, but spaCy required too much manual pipeline-building. It didn’t scale well for messy, real-world news data.
Shift to LLMs and CrewAI
Rather than keep wrestling with rule-based NLP, I switched over to using Large Language Models (LLMs). They could reason, interpret, and even fill in missing gaps. But they also needed more structure—too often, they were inconsistent.
To make things more systematic, I brought in CrewAI. This let me split the job into roles:
- A retriever to pull relevant articles
- An analyzer to extract structured event data
- A reasoner to infer causal links
- A presenter to format and output the report
This modular setup made debugging and iterating far easier.
Building Reliable Output
Even with agents in place, I hit new challenges. The outputs varied wildly in quality and tone. Sometimes I got a clean, well-structured report; other times I got vague, empty responses like “A narrative about the {Event}.”
So I introduced:
- A quality checker agent with strict format and content criteria
- A retry mechanism (max 5 times) to avoid infinite loops and reduce wasted API calls
I also added report categories, depending on what the user wants:
- Normal – concise cause and effect
- Broad – includes regional and historical context
- Narrow – zoomed-in explanation of the event itself
- Policy – explores the geopolitical or strategic significance
Where Plotline Is Now
Today, Plotline is a working pipeline. You feed it an event or headline, and it tries to explain why that event happened—not just in terms of surface details, but the causal story behind it.
It’s not perfect, but it’s personal. What started as a simple question about one news story became a system that could help answer many more.
I didn’t build this to predict the future or rewrite journalism. I built it because I wanted better answers.
And I’m looking forward to making it even better.