Graph Hacks 2026 ยท Track 3: Company Brain

Ask the product you inherited.

inherit-brain turns a product team's Slack, meetings, documents and pull requests into a FalkorDB graph, and answers questions by walking it. Every answer shows its tool calls, the Cypher they ran, and the records they returned.

Primary endpoint, held-out, F1 x 100 (macro average over person, company and artifact questions).

1,203 held-out questions on Salesforce's HERB benchmark, 24 products, plan pre-registered before the run.

Start here

  1. Four kinds of record joined in one queryReopened bugs, their fixing PRs and the authors of those PRs, in one Cypher query: SecurityForce, answer 21, score 100.
  2. Ten authors and reviewers, two of them named Alice DavisTwo different people share a name; the answer tells them apart by employee id. SupportForce, answer 3, score 100.
  3. A correct refusalNothing in AutoTuneForce was delayed for security and then added. inherit-brain made one tool call, got 0 rows and said so (100). The whole-product prompt named two features anyway (0).
  4. A question inherit-brain got wrongMost approved feature PRs in SecurityForce: it named Charlie Martinez (0) where the HERB retrieval agent found Bob Williams (100).
  5. If Julia Smith leavesTwo open bugs and a pull request in SupportForce lose their only recorded owner.

The removal test

Swap the graph tools for retrieval and the same model loses 40.8 points.

Results

Differences on the primary endpoint with 95% intervals. A dashed mark is the row's pre-registered threshold; the zero line is darker.

Score against input tokens

The four arms that answered all 1,203 questions. Median input tokens per question, log scale.

Show as a table

Every arm

Where it is weaker

The same run, read against inherit-brain. Each line is in RESULTS.md with its interval.

    How it works

    1. HERB records

      Slack messages, meeting transcripts, documents and pull requests, per product.

    2. Extraction

      Rules plus a model turn records into people, bugs, features, PRs and their links. Audited in six rounds.

    3. One graph per product

      herb:<product> on FalkorDB: 56,708 nodes and 164,698 edges over 30 products, 16 node labels, 24 edge types.

    4. Nine typed tools

      Each runs fixed, read-only Cypher. The model chooses the tool and fills its parameters, nothing else.

    5. Agent loop

      Connects as a read-only database user, at most 12 tool calls and 60,000 input tokens per question.

    Separate what-if tool (if_leaves): GRAPH.COPY of the product graph under its own ACL user. Not in the agent's tools and not part of the scored run; the If someone leaves page shows its output.

    The nine tools

    Calls are A5's tool calls over the 1,203 held-out questions. bridges was available and never called.

    • resolve_personA name to employee ids; namesakes all returned, flagged ambiguous.22 calls
    • resolve_entityA document, customer, PR, bug, feature or competitor name to node ids, full-text fallback.608 calls
    • doc_peopleAuthors and key reviewers of a document type, with role and evidence.361 calls
    • bug_boardBugs counted by company or person, by status, optionally as of a date.399 calls
    • fix_trailCustomer, its bugs, the PRs that fix them, and the PR authors.90 calls
    • feature_fateFeatures by fate, with dated history, contributors and PRs.226 calls
    • who_saidTyped observations about competitors and releases, and demo links.226 calls
    • pr_boardProduct PRs by approval, merge, revert reason and kind, or their authors.234 calls
    • bridgesPeople ranked by betweenness on the collaboration graph.0 calls

    The graph schema

    Node and edge counts are totals over the 30 product graphs (FalkorDB 6.0.2). Each edge count is the type's total over all its endpoints; the drawing shows its main endpoints. HAS_EVENT (6,576) links bugs and features to their event histories. DISCUSSES also links meetings to features and documents, and messages to documents; REPORTED_BY also links observations to customers and people. Endpoints follow src/inherit/ontology.py.

    Edge types not drawn

    EdgeFrom, toCount

    FalkorDB features doing work

    Counts come from A5's 8,104 recorded queries in the held-out run. Tested on FalkorDB 4.22.1 and 6.0.2. Features that no held-out question needed are listed with their zero.

    • A graph per productherb:<product>, one per product; the agent only ever sees one.
    • Read-only ACL userOne per product for the agent. All 8,104 queries ran as GRAPH.RO_QUERY.
    • Full-text indexdb.idx.fulltext.queryNodes, the fallback inside resolve_entity: 88 queries.
    • User-defined functionherb_v1.statusAt returns a bug's status on any date, for bug_board(as_of=...): 0 queries; no held-out question asked for a past date.
    • Betweennessalgo.betweenness for knowledge bridges (native on 6.0.2, computed in Python on 4.22.1): 0 queries.
    • Vector indexesBuilt at load on message and document embeddings. None of the nine tools queries them: 0 queries.
    • GRAPH.COPYThe what-if counterfactual, on a copy, under a separate ACL user. Not scored.

    One recorded query

    Pre-registered, then run

    Arms, endpoints, thresholds and statistics were fixed in writing and the file's hash posted publicly before any held-out question was answered.

      Run it yourself

      Python with uv, FalkorDB 4.22.1 and 6.0.2 in Docker. The test suite runs the tools against both servers. The raw HERB data is not in the repository.

      Setup in the README Every tool's Cypher MCP server over the same tools

      $ uv sync
      $ docker compose up -d
      $ uv run pytest -q