A board member forwards an email she was never meant to receive.
mode fictionalcontext fetch skippednext extraction
Pantheon pulls every person, organization and place out of a seed event into a Neo4j graph, waits for you to choose which of them wake up as autonomous agents, then runs them against each other round after round.
Pantheon takes it as plain text and nothing else. If the moment is real, the engine pulls live web context around it before doing anything else. If you made it up, that step is skipped entirely and it reads only what you wrote.
A board member forwards an email she was never meant to receive.
mode fictionalcontext fetch skippednext extraction
Extraction runs once. A single LLM call returns typed entities, meaning the people, organizations and locations named in the seed, plus the relationships between them and a short qualitative briefing on what is actually going on.
All of it is written into Neo4j. The write is idempotent, so re-running the same seed updates the graph in place rather than stacking a second copy of every node beside the first.
Extraction produces candidates, not agents. Promotion is a manual gate the engine will not walk through on its own: a human reviews what the graph found and picks the entities worth simulating.
Each promoted entity becomes fully autonomous, with its own persona, its own private memory, and its own scoped view of the shared graph and document store. Everything you leave alone stays a node: still in Neo4j, still queryable, just not talking.
Convenes the round
Holds the shared briefing, decides who speaks to what, and closes each round with a directive the others carry forward.
Plans forward
Reads the relationship edges for leverage and proposes the sequence of moves it thinks survives contact.
Tests the claim
Attacks the weakest assumption in whatever was just said, and asks where the evidence actually came from.
Defends the position
Argues from the organization's stated interest and supplies the details only an insider entity would carry.
Breaks the frame
Ignores the agreed premise and surfaces the outcome nobody in the room priced in.
Every round, each agent retrieves what it is allowed to know: its own private notes plus whatever the shared graph and document store will hand it. Then it reads what the others said in the previous round and answers in character.
A rolling summary compresses everything older than the current window, so round forty costs about the same context as round four. The exchange below is illustrative, written to show one agent picking up what another just said.
Hold the announcement until Thursday. Two of these relationships aren't public yet, and the graph says both run through the same office.
Thursday assumes nobody leaks by Wednesday. Who is actually holding the document right now?
Three people. I can account for all three, and I can tell you exactly when each of them last touched it.
You can account for three. I would bet against three being the real number by tomorrow morning.
Then we plan for four. Strategist, draft both versions. Skeptic, name the leak path you would use and we test it next round.
rolling summary: turns older than the current window are compressed into a single carried-forward brief, which is what keeps context bounded no matter how long the run goes.
The simulation stops, the transcript stays. Open a direct 1:1 chat with any agent and it answers in character, with everything it said and everything it retrieved during the run still in memory.
Same persona, same scoped knowledge that was in play during the rounds. So you can interrogate a decision the agent actually made instead of guessing at why it made it.
The Skeptic
POST-RUN SESSION
Why did you push back on Thursday?
Because the Loyalist's count of three came off the same distribution list the Strategist was already reading from. One source, two people agreeing with themselves. I wanted a second path before we bet a date on it.
Did the Wildcard change your mind?
It changed my estimate, not my position. I still think Thursday is defensible. I just stopped treating three as a measured number and started treating it as a floor.
Static example. This panel is a mock-up, not a live chat.
Seven steps, always in this order. Step two is skipped for fictional seeds and step five never runs without a human. Everything on this page is one of these seven boxes.
A person submits one event as plain text. Real or invented, it just has to have people in it.
If the seed describes something real, the engine pulls live web context around it. Fictional seeds skip this entirely.
One LLM call turns the text into typed entities, the relationships between them, and a qualitative briefing.
Entities and relationships are written into Neo4j idempotently. Re-running a seed updates the graph, it never duplicates nodes.
A human reviews the candidate entities and picks which become autonomous agents. This gate is deliberate and never automatic.
The chosen agents run several rounds together, each with its own persona and scoped retrieval, reacting to earlier rounds.
After the run ends you can open a 1:1 chat with any agent. It remembers what it did and answers in character.
Answered against what the engine actually does, and what this page actually is. Every answer ends somewhere you can go and look at the thing it describes.
No. This page is a presentation of the engine, not a deployment of it. There is no input bound to a backend anywhere on it, and the seed shown in the Seed section is a fixed example rather than a field. Everything you scroll past is an illustration of a pipeline that runs elsewhere.
See the seed stepNothing is thrown away. Extraction writes every person, organization and location it found into Neo4j whether or not you promote it. An un-promoted entity stays a node with all its relationships intact — still queryable, still available to whatever an agent retrieves — it just never speaks. Promotion decides who acts, not who exists.
Jump to AgentsEither. The distinction only changes step two. A seed described as real triggers a live web context fetch before extraction, so the graph is built against what is actually known about it. A fictional seed skips that fetch entirely and the engine reads nothing but the sentence you wrote.
See the seed stepA rolling summary. Everything older than the current window is compressed into a single carried-forward brief, so an agent entering round forty is handed roughly the same amount of context as one entering round four. The window is bounded by design rather than by hoping runs stay short.
Jump to SimulationThe run stops and the transcript stays. Every agent keeps its persona, its private memory of what it said, and whatever it retrieved during the rounds. From there you can open a direct conversation with any one of them about a decision it actually made.
Jump to ChatNo, and it is labelled as a mock-up in place for exactly that reason. The composer under it is deliberately a plain element rather than a real text input, because a focusable field with nothing behind it would imply a request that is never sent.
Jump to ChatNo. The Neo4j write is idempotent: re-running a seed updates the nodes and relationships already there rather than stacking a second copy of each beside the first. Extraction can be re-run against a seed as many times as you like without the graph drifting.
Jump to the GraphBecause it is the step that decides which entities get to act, and a model picking that on its own would quietly set the shape of everything downstream. It is one of the seven pipeline steps and the only one the engine will not walk through by itself.
Read the pipeline