[Meaning]

Inside Glasshouse, the context layer we run on

Why we built Glasshouse, how a sentence in a note becomes a fact an AI agent can trust, and what it costs to run, in eleven screenshots.

[By]

Robin Geier · Founder, House of [MAAD] Build log 8 min read

[00]

In the last essay I argued that static files can’t carry context for AI agents, and that what you need underneath them is an archive that knows where every fact came from and when it stopped being true. Then I stopped at the theory.

This is the build. Glasshouse is the context layer we run House of [MAAD] on: 64 notes, 339 checked facts, and a graph our agents read from instead of a folder of markdown. Here is why we built it, how a sentence in a note becomes a fact an agent can trust, and what that costs.

Glasshouse’s Explore view: the graph focused on the MAAD framework, linked to Meaning, Anchor, Agents and Decision, the Claims Register and the MAAD Lexicon. A side panel lists its 12 facts, each with its quote, source line and the date it became true.
[ Explore: every node opens onto the sentences behind it ]
[01]

Why did we build Glasshouse?

Because our own files started disagreeing with each other.

When we relaunched [MAAD], the letters changed meaning. They used to stand for MarTech, AdTech, AI and Data. Now they stand for Meaning, Anchor, Agents and Decision, with Guardrails as the brackets. The new meaning went into the Claims Register, the note where every claim we have made in public is written down once. A README from 22 September still filed Guardrails under the old MAAD Stack.

Both files were right on the day they were written. An agent reading the vault had no way to know which one was still true, so it would have used both. That is the Jedi Archives problem, in our own house, less than two weeks after I wrote about it.

[02]

Where does the context come from?

Glasshouse doesn’t replace the places we already write in. It reads them, and each source has its own rule for who may read it.

The Sources view. The Obsidian vault is live: watched on the server read-only, read by Claude over MCP, 64 notes, 339 facts in the graph. Google Drive decks arrive through n8n every hour. Gmail arrives through n8n every 30 minutes.
[ Sources: where data comes from, and what is allowed to read it ]

The Obsidian vault is watched on the server, read-only. Google Slides decks come in through n8n every hour, but only the ones picked on the Decks screen. Gmail comes in through n8n every 30 minutes and is read by a local model only: if the Mac is asleep, emails wait. They never go to Claude.

The server itself calls no model at all.

Process with Claude: Claude reads what’s waiting, over MCP, on your subscription. Glasshouse never calls an AI itself. A prompt named process_queue runs from the Glasshouse MCP server; 54 things wait for review.
[ The server never calls a model; Claude reads the queue on our subscription ]

Claude reads what’s waiting over MCP, on our own subscription, through one prompt on the Glasshouse MCP server. That keeps the expensive, fallible part (reading prose) outside the system, and the part that has to be right (deciding what counts) inside it.

[03]

How does a note become a fact?

Every note goes through the same four steps.

Two notes going through ingest. For each: Claude proposed facts, every quote was found word for word in the note, names were matched to the graph and the rules checked each fact; most went in by themselves and one went to Review.
[ Ingest: propose, check the quote, match, apply the rules ]
  1. Claude proposes. It reads the note and proposes facts and, now and then, a new concept.
  2. Every quote is checked word for word. A proposed fact has to carry the sentence it came from, and that sentence has to be in the note, exactly. A paraphrase doesn’t get in.
  3. Names are matched to the graph, then the rules check each fact against the model. The matching is the Anchor step: the Guardrails in a README and the Guardrails in the Claims Register have to resolve to one thing, or the contradiction further down never surfaces.
  4. Most facts go in by themselves. What the rules can’t decide goes to Review.

Of the 339 facts in the graph today, 290 went in by themselves and 49 by a decision of mine. Droids draft, Jedi decide, and the Jedi only see what the droids couldn’t settle.

[04]

What decides what counts as a fact?

The model. Before anything is read, we define what the things in our business are and how they relate: offerings, engagements, frameworks, pieces, proof points, decision points. The first version came out of a single interview on 21 September. Today the business model has 18 concepts and the tech stack model 5.

The Model view, subtitled ‘Defined once. It grows only when you approve.’ The Business model v2 lists its concepts; the Framework concept is open with its definition and the facts filed under it. On the right, three changes proposed over MCP wait for approval, with a preview of what publishing version 3 would do.
[ Model: the agent proposes a change, a person publishes it ]

The model is defined once, and it grows only when I approve. When Claude finds something the model has no place for, it doesn’t invent a field. It proposes the change, and the proposal waits under “Waiting for you”, with a preview of what publishing the next version would do.

Each concept also carries rules for its facts. A framework needs a quote, its source item and a date. Some relationships hold several values; others hold one at a time, and a new value has to replace the old one explicitly.

How the Framework concept connects: an Engagement or Offering applies a Framework (several), a Pillar is a layer of a Framework (one at a time), a Framework is owned by an Organisation or Person (one at a time). Rules for its facts: needs a quote, needs its source item, needs a date.
[ Every fact must bring a quote, its source and a date ]

The order of work isn’t ours. It is Fluree’s Model, Map, Connect: model the domain first, map what arrives onto that model, then connect the result to the people and agents who use it.

Our version adds one step. Fluree’s method treats identity resolution as a detail inside Map. We make it a step of its own, Anchor, with its own acceptance criteria, because two systems that disagree about who a customer is will produce a confidently wrong agent.

That is also where the method meets [MAAD]. [MAAD] is the architecture: what has to exist. Model, Map, Connect is how each layer of it gets built, one use case at a time.

LayerPhaseWhat gets built
MeaningModelConcepts, relationships, controlled vocabulary
AnchorMap, as a step of its ownRow → instance, key → relationship, one durable IRI per entity
AgentsConnectMCP tools, GraphRAG retrieval, tuned behaviour
DecisionThe competency questionsThe business outcome the questions were written for
GuardrailsAll threeShapes and policy written in Model, enforced in Connect, checked before release
[ The crosswalk: each [MAAD] layer, and the phase that builds it ]

Glasshouse is that method, run on our own notes, on Fluree’s graph database.

[05]

What happens when two notes disagree?

They land in Review, side by side, and nothing changes until someone decides.

The Review queue filtered to contradictions. One card: Guardrails is a layer of the MAAD Stack according to a README from 22 September, and of MAAD according to the Claims Register from 14 October; the relationship holds one value at a time. Buttons: New replaces old, Keep old, Both true.
[ Review: what the rules could not decide, one click each ]

This is the [MAAD] relaunch from the start of this piece, caught by the rules. “Guardrails” is a layer of something, and that relationship holds one value at a time. The README says it belongs to the old MAAD Stack, the Claims Register says it belongs to MAAD. Glasshouse doesn’t pick one. It asks: new replaces old, keep old, or both true. One click, recorded in my name.

Review holds 54 items right now: 6 new concepts, 19 possible duplicates, 10 contradictions and 19 uncertain facts. At about 90 seconds each, that is 81 minutes of my time to clear the queue.

[06]

Can you trace every fact back to a sentence?

Yes, and that is the point of the whole build. Click any fact and Glasshouse shows where it came from.

Where this fact came from: the highlighted sentence on line 39 of the Claims Register, read by Claude on 15 October in run 111, checked against Business v2, let in by the rules because it fit the model and passed every check, true from 14 October, learned 15 October.
[ Trace: from the answer back to the sentence, the run and the rule ]

The sentence, highlighted in the note it came from. The source file, its revision and the line. Who read it, and in which run. Which version of the model it was checked against. Why it was let in: it fit the model and passed every check. When it became true, and when we learned it.

Those last two are different dates on purpose. A fact can be true from Monday and only reach us on Wednesday, and an agent asking “what did we know on Tuesday?” deserves the honest answer. The ledger keeps both, so you can drag a slider back to any date and see what the graph held then.

The ledger with a date slider set to 21 August 2026. For one topic, each field shows what was true on that date, true from and until which dates, and since when it was believed.
[ Ledger: drag back to any date and see what the graph held ]
[07]

What does an agent get when it asks?

Not a blended paragraph. Every part of an answer keeps its label.

An answer comes back in three columns: checked facts, which are in the graph with a source and a date; notes to reuse, which are where those facts came from; and unverified mentions, which are in the notes but were never checked. When we asked what House of [MAAD] offers and which proof points back it up, four of nine sentences came back as checked facts, four as uncertain, and one as not found. The agent knows which is which, and so do I.

[08]

Is it worth it?

Here is what Glasshouse costs us.

The Today view: 339 facts in the graph, 86% let in by the rules; 54 waiting in Review; 3 changes to publish; 4 notes waiting to be read; API spend $0.04 of $100. Below, cards ask whether facts last checked in June are still true and point out a question no checked fact answers.
[ Today: what the graph found worth a look ]

Ingesting a note costs nothing: no model runs on the server, so 1,000 notes cost €0.00 in tokens. Claude’s reading runs on a subscription we already pay for, and the API spend on the Today screen reads $0.04. The one-time costs are a 23 MB model download and a few seconds of local CPU per 1,000 notes.

The real cost is my attention: 271 review decisions so far, and an 81-minute queue when I let it pile up. In exchange, 75% of the notes in the vault now hold at least one live fact, and the graph grew from about 110 facts on 2 October to 339 on 15 October.

Bar chart of live facts in the graph per day, from about 110 on 2 October to 339 on 15 October, split into facts that went in by themselves and facts let in by a decision.
[ Live facts in the graph, 2 to 15 October ]

Every morning, Glasshouse also asks a few questions back. Is the status of a draft from June still true? A question I asked on 14 October has no checked fact to answer it: what is missing? A static file never asks you anything.

[09]

Can we build one for you?

Yes. Glasshouse is what House of [MAAD] runs on, and it is the working version of what we build for enterprise brands.

Yours wouldn’t be a copy of ours. The model would hold your offerings, your customers and your decisions, and the sources would be the places your teams already write in. The method stays the same: model the domain first, map what arrives onto it, anchor every name to one thing, and connect the result to the people and agents who use it.

That’s what we build at House of [MAAD]: the context layer underneath your agents, where every fact can be traced back to the sentence it came from.

[FAQ]

Frequently asked questions

What is a context layer for AI agents?
A store of checked facts that sits underneath your agents and that they read from instead of raw files. Each fact carries the sentence it came from, its source and the date it became true, so an agent can tell a live fact from a dead one.
How do you build a context layer for AI agents?
Define the model first: what the things in your business are and how they relate. Then let a model like Claude propose facts from your notes, check every quote word for word against its source, match every name to one identity, let rules admit what fits, and send what they can’t decide to a human. Glasshouse stores the result in a graph database, FlureeDB.
How is a context layer different from RAG?
Retrieval hands an agent text that looks relevant, whether or not it is still true. A context layer hands it facts that were checked against a model, each with its source and validity dates, and keeps checked facts, notes and unverified mentions apart in every answer.
Does Glasshouse send my data to an AI model?
The server calls no model at all. Claude reads the notes waiting in the queue over MCP, on your own subscription, and email is read only by a local model on your own machine; it never goes to Claude.
What does it cost to run?
Ingesting a note costs nothing in tokens, because no model runs on the server. The real cost is human attention: in our case 54 open review items, about 81 minutes at 90 seconds each.
[Your turn]

What would your agents get wrong if one fact in their context died today?

Tell me
[Written by]

Robin Geier

Founder, House of [MAAD]. Designs agent factories for premium enterprise brands.