At Funnel, we collect the documents that carry the company's ideas forward. The strategy formulation, the all-hands slide deck, the manual for positioning and the playbooks for sales - they all go into what we call "Funnel World", an llm-wiki of markdown files, that describes why we do things (objectives), how we do them (processes) and the ideas that we discuss (concepts). It runs daily, unattended, and provides context for llm agents and humans, through our internal agent platform, Reef. Three gates of triage stand in front of it, two of them human.

Reef is a conversational agent with access to most of the company's quantitative and qualitative data, and it is fast becoming where people go to get work done. It reaches Funnel World through a tool.

Before this, intent sat in the heads, decks and meetings you were not part of. A limited visibility could prolong disagreement for quite some time. This way, disagreement becomes visible and every claim made, is contestable. With Funnel World to capture, express and validate intent, we make it possible to see, question and revise intent.

Technically, Funnel World is two scheduled jobs and a file tree. The first job fetches documents from Google Drive, Notion and a curated list of URLs, converts whatever it finds to markdown, and hashes the result so that a refetch is not mistaken for a change. The second job is the interesting one. It runs a headless Claude agent loop on Bedrock, once a day, with the file tree mounted from S3. The agent works from skills rather than a single prompt - one for triage, one for extraction, one for validation - and a deliberately small toolset: read, search, write, and two approved shell commands. It can only write to three directories. Each run processes at most five documents per pass, and stops early when it makes no progress. Everything it writes is then checked by a deterministic validator that costs no tokens and holds no opinions. The output is 471 markdown files with yaml frontmatter, an append-only log of every change, and no database anywhere.

Capture, so it can be seen

Three things need to be true for a document to make it all the way. The authoring stage decides whether a claim is worth stating at all. The review stage checks if it is right and sayable in the organization. The system itself checks that what is said is also durable, in scope, fits with the graph, is unique and has enough evidence. There is always discussion and negotiation behind.

After triage, the system decides to extract, propose or archive what comes in. Most of what comes in changes nothing. Of 415 documents, 158 changed the model. That which does get in, becomes visible as parts of the knowledge graph and context for people and agents.

And it is read. Up to 2026-09-23, Reef called the Funnel World tool 8,208 times. Those calls came from 1,226 conversations and 180 people. It is the fourth most-used tool the agent has.

Four intents depend on the graph. Each one asks what is true about Funnel itself.

  • What the product does. 18.8% of runs.
  • Who owns what inside the company. 9.0% of runs.
  • How we position against a competitor. 8.2% of runs.
  • What we may commit to on security and legal terms. 5.1% of runs, and twelve times more common here than in runs that never open the graph.

We capture, so it can be seen.

Express, so it can be questioned

Funnel World focuses on three main things. First is the why, the value and for whom, the existential objectives. Second is the how, the steps in the value creation. Third is the what, the concepts, ideas. No how can exist without a why. Every process has an objective. We must be able to put the two in a sentence and say this process supports this objective. The system also holds data on the organization and the information.

Traditional enterprise modelling has produced a lot of diagrams, many of which made their way into tools. The relationships between objects also lend themselves to representation in graph databases. But now the consumer is an agent that has to quote its source, and the contributor is a person who should not have to learn a notation. The data is small. So an llm-wiki of markdowns, navigable as a graph, fits the bill nicely.

Here is one real process, with everything it declares. It is a view of the files, not the model itself.

Reef- image1

If everything is in the documents, what does the agent do? It provides the structure. It names things, connects them and judges what to keep.

  • It gives each thing an identity.
  • It decides when two documents mean the same thing.
  • It decides what kind of thing each one is.
  • It states how the things relate.
  • It creates the groups that hold them, when no document names a group.
  • It decides when each claim was true.
  • It decides which document wins when two disagree.
  • It leaves out what does not belong.
  • It says how sure it is about each thing it names.

Order shapes the model. It has to. The model builds on what it already holds, so whatever arrives first supplies the frame. That is not a flaw. It is the price of coherence, and it is worth paying.

Fifty-two percent of the model was created in two bursts, in late April and early May, and eleven of twenty categories were created in those five days. The documents driving them were our own website. So concept-product-feature exists because a pricing table nests capabilities under modules, and forty elements now hang off it. That is not a bad source - a pricing page is the most carefully negotiated statement we produce about how the product divides.

Reef-image2

Two confident claims, hanging off a guess.

But it tells you something. The frame came from the documents that arrived first, and everything since has been fitted to it. If the documents alone determined the structure, the order of reading them would not have mattered this much. The structure is not in the documents. The agent makes it.

A model has to add information for the result to cohere. The evidence rule pushes against exactly that. A tradeoff between two objectives is almost never written down, so a quote is hard to come by. Not one conflict is recorded anywhere in the model. Either nothing states one plainly enough to quote, or nothing asks the agent to look. The model is smoother than the company, and it should not be. This is unsolved.

It may also be why the agent loop with skills works, where structured extraction did not. Adding structure is not a transformation of a document. It is a judgement made against everything the model already holds. The agent reads the index, finds terms with no parent, decides a parent is needed, creates it, and writes down that no source names it. One pass over one document cannot do that. It cannot see the state. Run the passes in parallel and none of them can see what the others are writing either.

And it is the same reason order matters. Process the documents independently and the order stops mattering. So does the coherence.

Early structure accumulates weight. Forty elements now depend on a category created in week one, so changing it is no longer a small edit. What makes that tolerable is that the model rebuilds from its sources. Not to the same shape, though - a rebuild would read the documents in a different order and land somewhere else. Nothing in it is precious, including the frame.

This structure is what makes it possible to disagree and discuss. You can now say:

  • That claim is wrong. Here is the quote it rests on, and the quote does not say that.
  • That was true in April. It is not true now.
  • Nothing owns that objective, and nothing measures it.

Validate, so it can be revised

The content was vetted upstream. The constraints are authored by a human. We decide the types of things to include, what counts as evidence. The agent constructs the taxonomy, expresses the relationships and publishes. But nobody approves the model.

Instead, we do two things. Every element in the model has a quote and two dates. One date says when the claim was true in the world. The other says when the model learned it. So claims can be challenged, if needed. A quote has value because it was vetted upstream. A paraphrase, reasoning, made-up examples or another element in the model are not allowed as evidence.

What happens when two documents disagree? For a person, a target or a version, the later date wins. For a definition, the stronger and more direct source wins.

There is also the set of rules governing the structure. The machine checks them:

  • 1,887 relationships, and not one points at something that does not exist.
  • All 43 processes name a purpose.
  • All 155 terms name a parent.
  • All 20 metric references name a real measure.
  • Every measure names fields that exist.
  • All 471 identifiers are unique.

What the machine does not check is the structure it was given. Elements carry a status. Relationships do not. Twenty-six elements declare themselves a guess. Not one of the 1,887 relationships can say anything either way. The machine proves every relationship points at something real. Nothing proves any relationship should exist.

This is the mechanism that lets the model hold intent over time. Every element carries a quote and two dates - when the claim was true in the world, and when the model learned it - recorded in an append-only log, so earlier states survive each daily rebuild and can be reopened.

Three questions that are now answerable:

  • How did our stated intent change over six months?
  • Which document changed it?
  • What did we believe in April that we no longer believe?

Here is one element, end to end.

Our pricing page lists capabilities nested under larger plan tiers. No sentence on it says that "feature" is a class of thing. The agent read the page, found named capabilities with no parent to hang them from, and decided a parent was needed. It wrote concept-product-feature with classification: inferred and confidence: medium, and recorded why: "'Feature' is not a stated taxonomic class on the page - the term is inferred from how the comparison nests capabilities under modules."

Forty elements now declare that category as their parent. The validator confirms that all forty resolve, that the identifier is unique, and that the file carries the fields it needs. Every check passes.

Nothing anywhere confirms that the category should exist. That is the whole boundary in one element. The machine proved the structure is consistent, and no part of the system asked whether it is right.

Where are we now?

We are now able to see more clearly, the intent of Funnel, as it stands and as it evolves.

People argue about intent constantly. An alignment day is a room full of people disagreeing about priorities. A strategy deck is weeks of negotiation before anyone sees a slide. The organization is not bad at forming intent. It is good at it.

What comes out of that work is a document. The document records the conclusion. It does not record what was considered and dropped, what it replaced, or what it now contradicts. Funnel World reads that document and builds the model. The model sits downstream of the debate. Then the next alignment period begins, and the model is not in the room. It played no part in producing the document it will later ingest.

Six proposals are waiting for someone to look at them. The model records an owner for twelve of 64 objectives, and a date for two - which says more about what our documents state than about who is accountable. We have every alignment day from 2025 in the model, and it has taken part in none of them.

Closing that gap does not mean handing the agenda to the model. It means having something to talk to while the thinking is still unfinished. Here is a use we have proposed and not yet built. A member of the organization starts a dialogue with Reef around setting targets for the next alignment period. The agent identifies objectives relevant to the processes and teams at hand, suggests how the target could be measured, and shows what else it would affect through the dependencies already recorded. The individual iterates on the target in a psychologically safe place, before anyone else sees it.

None of that is a decision. The model supplies observations. People supply the significance.

There are two things we would do differently. We would choose which documents build the frame, rather than letting availability choose for us. And we would mark the guesses in the structure, without demanding proof of them - declaring an inference is cheap, and demanding justification for it is what makes the model quieter than it should be.

Some of this is untested. We have not rebuilt the model in a different order, so the claim that order shaped the structure is inference from what we can see rather than a measured result. We have not asked the historical questions above in anger. And we have not run the comparison that matters most.

If an agent could answer questions about our own business correctly, and show you where each answer came from, working only from the raw documents, then the whole interpretation layer is waste. That is the thing to watch.

The purpose of Funnel World is to give the organization the ability to see, question and revise its own intent. That ability has to be fast, and it has to work in the hands of an individual.

// ola.gustafsson@funnel.io

Let’s build something great together. Join us