{
  "schema": "rabbit-hole-v1",
  "slug": "company-brain",
  "title": "how to build a company brain",
  "question": "How do you get an AI agent to give the same, correct answer to \"what was our trial-to-paid conversion last month?\" every time?",
  "url": "https://www.rohitgawli.com/reports/company-brain/",
  "published": "2026-11-04",
  "author": "Rohit Gawli",
  "weight": "light",
  "findings": [
    {
      "claim": "organisations that traced at least one confidently wrong AI agent answer to missing or inconsistent business context in the past six months (VB Pulse, August 2026 wave, organisations with 100+ staff, self-selected)",
      "value": 64,
      "denominator": 130,
      "unit": "percent of respondents"
    },
    {
      "claim": "organisations that traced more than one such answer (same survey)",
      "value": 32,
      "denominator": 130,
      "unit": "percent of respondents"
    },
    {
      "claim": "respondents running, piloting or building a governed semantic layer (VB Pulse, August 2026 wave; base not printed in the 6 Oct article)",
      "value": 67,
      "denominator": null,
      "unit": "percent of respondents"
    },
    {
      "claim": "respondents naming the governed semantic layer as their agents' primary source of business context (August 2026 wave; base not printed)",
      "value": 13,
      "denominator": null,
      "unit": "percent of respondents"
    },
    {
      "claim": "respondents naming retrieval over documents as agents' primary context source (August 2026 wave)",
      "value": 32,
      "denominator": 130,
      "unit": "percent of respondents"
    },
    {
      "claim": "respondents naming direct queries to live systems as agents' primary context source (August 2026 wave)",
      "value": 21,
      "denominator": 130,
      "unit": "percent of respondents"
    },
    {
      "claim": "respondents naming long-context loading as agents' primary context source (August 2026 wave; base not printed)",
      "value": 19,
      "denominator": null,
      "unit": "percent of respondents"
    }
  ],
  "mechanism": {
    "summary": "A company brain is a folder of small Markdown files: one file per metric with its definition, a link to the one sanctioned query the agent may run but not edit, and a link to the decision that explains it. Every folder has an index.md with one line per file. The agent lazy-loads: root index, then the folder's index, then one definition, then only the links that file declares; it answers through one tool and cites the files it opened.",
    "analogy": "A library catalogue: you read the card before you pull the book.",
    "lazy_loading": [
      "Read only the root index.md (one line per folder).",
      "Pick the folder the question needs and read its index.md (one line per file).",
      "Open one definition file.",
      "Follow only the links that file declares (the computation and the decision).",
      "Answer and cite the files opened."
    ],
    "why_context_stays_small": "Only the indexes on the path and the files they point to are read; adding metrics grows one index by one line each, and an over-long index is split into subfolders with their own indexes.",
    "why_answers_repeat": "The same question reaches the same index line, the same files and the same sanctioned query with the same parameter; the agent writes no SQL. A model still picks the line, so it is repeatable rather than guaranteed, and citations make it checkable.",
    "index_line": "A title plus one description that says when to open the file, in the words people ask with: [Title](link) - description (OKF §8).",
    "format": {
      "name": "Open Knowledge Format",
      "version": "0.2",
      "spec": "https://github.com/GoogleCloudPlatform/open-knowledge-format/blob/main/SPEC.md",
      "sections": {
        "bundle structure": "§3",
        "concept ID = path": "§2",
        "type required": "§4.1",
        "sources": "§5.1",
        "generated/verified": "§5.2",
        "trust tiers": "§5.3",
        "status": "§5.4",
        "stale_after": "§5.5",
        "index.md": "§8",
        "log.md": "§9",
        "Attested Computation": "§10",
        "parameters only, agent must not edit computation": "§10.3",
        "deferred work": "§12"
      }
    },
    "worked_example": {
      "illustration": true,
      "company": "Dabba (invented)",
      "question": "what was our trial-to-paid conversion last month?",
      "files_opened": [
        "/index.md",
        "/metrics/index.md",
        "/metrics/trial-conversion.md",
        "/computations/trial-conversion.md",
        "/decisions/2026-04-trial-conversion.md"
      ],
      "files_in_bundle": 329,
      "counts_invented": true
    }
  },
  "steps": [
    "List your ten most argued metrics: the ones that come out as a different number in every meeting.",
    "Write one Markdown file per metric in metrics/, with frontmatter (type, title, description, status, verified, stale_after, sources) and the definition in plain words, including what is left out.",
    "Put each metric's one sanctioned query in computations/, with the parameters the agent may fill in and nothing else, and link it from the metric file.",
    "Start decisions/ and a log.md: one short, dated file for every change to a definition, linked from the metric it changed.",
    "Write an index.md in every folder, one line per file, and a root index.md with one line per folder.",
    "Give the agent one MCP server that can read a file by path and run a computation by name with its parameters, and make that tool the only route to these numbers.",
    "Tell the agent to cite every file it opened, and to refuse a file whose stale_after has passed.",
    "Put a monthly review in the calendar: re-verify every file close to its stale_after date and move the date."
  ],
  "projects": [
    {
      "layer": "definitions",
      "name": "MetricFlow",
      "repo": "https://github.com/dbt-labs/metricflow",
      "license": "Apache-2.0",
      "last_push": "2026-10-13",
      "accessed": "2026-11-01"
    },
    {
      "layer": "definitions",
      "name": "Cube",
      "repo": "https://github.com/cube-js/cube",
      "license": "mixed: Apache-2.0 default, some packages MIT",
      "last_push": "2026-11-01",
      "accessed": "2026-11-01"
    },
    {
      "layer": "definitions",
      "name": "Malloy",
      "repo": "https://github.com/malloydata/malloy",
      "license": "MIT",
      "last_push": "2026-10-31",
      "accessed": "2026-11-01"
    },
    {
      "layer": "definitions",
      "name": "Apache Ossie",
      "repo": "https://github.com/apache/ossie",
      "license": "Apache-2.0",
      "last_push": "2026-11-01",
      "accessed": "2026-11-01"
    },
    {
      "layer": "catalog & lineage",
      "name": "OpenMetadata",
      "repo": "https://github.com/open-metadata/OpenMetadata",
      "license": "Apache-2.0",
      "last_push": "2026-11-01",
      "accessed": "2026-11-01"
    },
    {
      "layer": "catalog & lineage",
      "name": "DataHub",
      "repo": "https://github.com/datahub-project/datahub",
      "license": "Apache-2.0",
      "last_push": "2026-10-31",
      "accessed": "2026-11-01"
    },
    {
      "layer": "catalog & lineage",
      "name": "Unity Catalog",
      "repo": "https://github.com/unitycatalog/unitycatalog",
      "license": "Apache-2.0",
      "last_push": "2026-10-31",
      "accessed": "2026-11-01"
    },
    {
      "layer": "catalog & lineage",
      "name": "Apache Gravitino",
      "repo": "https://github.com/apache/gravitino",
      "license": "Apache-2.0",
      "last_push": "2026-10-30",
      "accessed": "2026-11-01"
    },
    {
      "layer": "catalog & lineage",
      "name": "OpenLineage",
      "repo": "https://github.com/OpenLineage/OpenLineage",
      "license": "Apache-2.0",
      "last_push": "2026-11-01",
      "accessed": "2026-11-01"
    },
    {
      "layer": "catalog & lineage",
      "name": "Marquez",
      "repo": "https://github.com/MarquezProject/marquez",
      "license": "Apache-2.0",
      "last_push": "2026-10-29",
      "accessed": "2026-11-01"
    },
    {
      "layer": "decisions & memory",
      "name": "Graphiti",
      "repo": "https://github.com/getzep/graphiti",
      "license": "Apache-2.0",
      "last_push": "2026-11-01",
      "accessed": "2026-11-01"
    },
    {
      "layer": "decisions & memory",
      "name": "Cognee",
      "repo": "https://github.com/topoteretes/cognee",
      "license": "Apache-2.0",
      "last_push": "2026-11-01",
      "accessed": "2026-11-01"
    },
    {
      "layer": "decisions & memory",
      "name": "GraphRAG",
      "repo": "https://github.com/microsoft/graphrag",
      "license": "MIT",
      "last_push": "2026-10-29",
      "accessed": "2026-11-01"
    },
    {
      "layer": "decisions & memory",
      "name": "Mem0",
      "repo": "https://github.com/mem0ai/mem0",
      "license": "Apache-2.0",
      "last_push": "2026-10-30",
      "accessed": "2026-11-01"
    },
    {
      "layer": "decisions & memory",
      "name": "Letta",
      "repo": "https://github.com/letta-ai/letta",
      "license": "Apache-2.0",
      "last_push": "2026-10-18",
      "accessed": "2026-11-01"
    },
    {
      "layer": "documents & threads",
      "name": "Onyx",
      "repo": "https://github.com/onyx-dot-app/onyx",
      "license": "mixed: MIT outside ee/ directories, ee/ under a separate enterprise licence",
      "last_push": "2026-11-01",
      "accessed": "2026-11-01"
    },
    {
      "layer": "the agent's door",
      "name": "MCP reference servers",
      "repo": "https://github.com/modelcontextprotocol/servers",
      "license": "mixed: moving from MIT to Apache-2.0",
      "last_push": "2026-10-29",
      "accessed": "2026-11-01"
    },
    {
      "layer": "the agent's door",
      "name": "MCP Toolbox for Databases",
      "repo": "https://github.com/googleapis/mcp-toolbox",
      "license": "Apache-2.0",
      "last_push": "2026-11-01",
      "accessed": "2026-11-01"
    },
    {
      "layer": "the agent's door",
      "name": "dbt-mcp",
      "repo": "https://github.com/dbt-labs/dbt-mcp",
      "license": "Apache-2.0",
      "last_push": "2026-10-30",
      "accessed": "2026-11-01"
    },
    {
      "layer": "the agent's door",
      "name": "WrenAI",
      "repo": "https://github.com/Canner/WrenAI",
      "license": "mixed: code Apache-2.0, docs CC BY 4.0; AGPL-3.0 text shipped for possible future modules, none listed today",
      "last_push": "2026-10-30",
      "accessed": "2026-11-01"
    },
    {
      "layer": "the map",
      "name": "Open Knowledge Format",
      "repo": "https://github.com/GoogleCloudPlatform/open-knowledge-format",
      "license": "Apache-2.0",
      "last_push": "2026-08-21",
      "accessed": "2026-11-01"
    },
    {
      "layer": "the map",
      "name": "llms.txt",
      "repo": "https://github.com/AnswerDotAI/llms-txt",
      "license": "Apache-2.0",
      "last_push": "2026-09-24",
      "accessed": "2026-11-01"
    },
    {
      "layer": "the map",
      "name": "AGENTS.md",
      "repo": "https://github.com/agentsmd/agents.md",
      "license": "MIT",
      "last_push": "2026-09-10",
      "accessed": "2026-11-01"
    },
    {
      "layer": "the map",
      "name": "Agent Skills (example skills)",
      "repo": "https://github.com/anthropics/skills",
      "license": "mixed: no repo-wide licence; many skills Apache-2.0, document skills source-available",
      "last_push": "2026-10-28",
      "accessed": "2026-11-01"
    }
  ],
  "method": [
    "Read the two VentureBeat VB Pulse articles (5 and 6 Oct 2026) on 1 Nov 2026; copied each figure with its stated base. August base per the 5 Oct article: 184 responses, 139 qualified, 9 removed, 130 kept, organisations with 100+ employees.",
    "The 6 Oct article prints no base for its August split; document retrieval (32%) and live-system queries (21%) also appear in the 5 Oct article across all 130 respondents. Long-context loading (19%) and the semantic-layer figures (67%, 13%) carry no stated base.",
    "Read OKF SPEC.md v0.2 and cited it by section number; read the Agent Skills specification for its loading stages.",
    "Called the GitHub API repos endpoint for 24 projects on 1 Nov 2026 for licence and pushed_at; read licence files or README where the API returned Other or none. Cut-off: push after 1 Aug 2026; none dropped.",
    "Wrote the Dabba bundle, its file counts and the diagram for an invented company, using OKF fields as specified; not run."
  ],
  "limits": [
    "Both surveys come from one publication's tracker; respondents are self-selected, not a random sample; n=130 is small, and subgroups of 38 can be off by about 15 points. Reported, correlational figures.",
    "The 6 Oct article gives no sample size; its four context sources sum to 85%.",
    "OKF is v0.2; field names may change.",
    "Dabba and its counts are invented; the files show a shape, not a tested system.",
    "The project table is a list, not a benchmark; licences as read on 1 Nov 2026."
  ],
  "sources": [
    {
      "title": "Agentic context layers: 64% of enterprises traced a confidently wrong AI agent answer to problems in their own company data in the past six months (VentureBeat, 5 Oct 2026)",
      "url": "https://venturebeat.com/resources/agentic-context-layers-64-of-enterprises-traced-a-confidently-wrong-ai-agent-answer-to-problems-in-their-own-company-data-in-the-past-six-months",
      "accessed": "2026-11-01"
    },
    {
      "title": "Companies are building governed semantic layers. Most say their AI agents are getting context somewhere else (VentureBeat, 6 Oct 2026)",
      "url": "https://venturebeat.com/data/companies-are-building-governed-semantic-layers-most-say-their-ai-agents-are-getting-context-somewhere-else",
      "accessed": "2026-11-01"
    },
    {
      "title": "Open Knowledge Format (OKF) specification, version 0.2",
      "url": "https://github.com/GoogleCloudPlatform/open-knowledge-format/blob/main/SPEC.md",
      "accessed": "2026-11-01"
    },
    {
      "title": "Agent Skills specification",
      "url": "https://agentskills.io/specification",
      "accessed": "2026-11-01"
    },
    {
      "title": "The /llms.txt file",
      "url": "https://github.com/AnswerDotAI/llms-txt",
      "accessed": "2026-11-01"
    },
    {
      "title": "AGENTS.md",
      "url": "https://github.com/agentsmd/agents.md",
      "accessed": "2026-11-01"
    }
  ],
  "license": "CC BY 4.0"
}
