Live on FalkorDB · Company Brain agent

Every company has a Gary.
Ours never leaves.

The one person who knows why the refund window is 14 days, who to ask about the ledger, and which docs quietly went stale. Gary reads your Slack, Jira, Notion, meetings and GitHub into one FalkorDB graph and answers by walking it, with every source shown.

Ask Gary
5 sources → 1 graph12 Cypher tools~20 ms graph time / answer
kitestring graph · refund policy
aboutsupersedessupersedesdecidedbecause ofstill asserts30 days, no questionsFeb 3 · Notion policy30 days (monthly)Jun 16 · Pricing council14 days (monthly)Aug 12 · #billingRefund policyMaya ChenCEOBILL-212refund abuse · $18kRefund PolicyNotion · JordanSTALESupport PlaybookNotion · MeiSTALEHelp Center FAQpublic · MeiSTALE
Support asks
Can a customer get a full refund after 20 days?
No: 14 days since Aug 12, decided by Maya in #billing because of BILL-212. 3 docs still say 30.
The problem

Your docs are lying. Your chatbot believes them.

A Notion page from March says 30 days. A Slack reply from August changed it to 14. Search finds the page with the right words; it has no idea one replaced the other. Most teams have watched an AI tool confidently quote an outdated doc.

Plain RAG · same records, no graphwrong
retrieved · Pricing Council, June
“…monthly plans keep a 30-day full refund window…”
AI

Yes. Monthly plans have a 30-day full-refund window, so day 20 qualifies.

Superseded on Aug 12. Support would refund the wrong customers, and nobody would know why.

Gary · FalkorDB graphcorrect + sourced
CURRENT14 days (monthly) · Aug 12 · #billing
SUPERSEDED30 days (monthly) · Jun 16 · Pricing council
SUPERSEDED30 days, no questions · Feb 3 · Notion
⚠ stale · Refund Policy⚠ stale · Support Playbook⚠ stale · Help Center FAQ

No: 14 days since Aug 12, decided by Maya because of BILL-212. 3 docs still say 30 days. Fix them?

How it works

Five sources. One graph. One Gary.

Gary doesn't search your documents. It reads them once, turns them into a graph of who decided what, why, and what replaced it, and then answers by walking that graph.

Slack
Jira
Notion
Meetings
GitHub
FalkorDB graph
Gary
01
Ingest

Every record becomes a node. Authors, reviewers, assignees and attendees become edges. Threads stay threads.

02
Link

People, systems, projects and topics are matched using a vocabulary read from the graph itself, so the graph teaches the parser.

03
Decide

An LLM extracts decisions while seeing what the graph already believes, writing SUPERSEDES, BECAUSE_OF and ASSERTS edges.

04
Answer

The agent picks from 12 fixed Cypher tools, never writes Cypher, and every citation and name is verified against the graph.

What Gary does

A colleague who remembers why.

Every capability below is a graph traversal, not a prompt. Try any of them live.

Tomasz NovakAWAY NOV 255%
Omar Haddad25%
Hana Kim13%
Who actually knows

Role-weighted, recency-decayed expertise. Asking counts less than answering.

ledger-db
auth-service
warehouse
Risk radar

Single points of knowledge, upcoming absences, and betweenness-central knowledge brokers.

🧠 remembered · Oct 18

Refund window for monthly plans is 14 days.

Memory that expires

Memories cite decisions. When a decision is superseded, every memory that relied on it is flagged.

@maya in #billing

Refunds go back to 30 days for customers older than 90 days.

+ Decision extracted against the graph
↳ SUPERSEDES “14 days (Aug 12)”
Live feed

Post a Slack message. Gary links it, extracts the decision, and supersedes the old one in milliseconds.

Who owns the mobile app?
resolving “mobile app” against the graph…
Honest by design

Names are resolved against the graph before any reasoning. Unknown means unknown, never a near-miss guess.

GARY-1Refund Policy→ Jordan Lee
GARY-2Support Playbook→ Mei Tanaka
GARY-3Help Center FAQ→ Mei Tanaka
It acts, too

“Fix it” opens one ticket per stale doc, assigned to its author. Idempotent, written back to the graph.

{
  "mcpServers": {
    "gary": {
      "command": "pnpm",
      "args": ["-s", "mcp"],
      "env": {
        "FALKORDB_URL": "falkor://…"
      }
    }
  }
}
Speaks MCP

The same 12 graph tools as an MCP server, for Claude Desktop, Claude Code, or any agent.

–
…
–
…
–
…
–
…
–
…

live from the Kitestring graph on FalkorDB Cloud

See it think

Watch Gary work.

Recorded by driving the real, deployed app: stale answers, decision lineage, a live policy change, memory going stale, the time machine, and an honest “I don't know”.

Under the hood

The graph does the thinking.

The model never writes Cypher. It picks from fixed, parameterised tools like these, and every query it runs is shown with rows and milliseconds.

Decision lineagecypher
MATCH (cur:Decision {status:'active'})-[:ABOUT]->(s)
OPTIONAL MATCH chain = (cur)-[:SUPERSEDES*1..6]->(:Decision)
RETURN cur, [n IN nodes(chain) | n.statement]
Stale docscypher
MATCH (cur)-[:SUPERSEDES*1..6]->(old:Decision)
MATCH (doc:Doc {living:true})-[:ASSERTS]->(old)
WHERE NOT (doc)-[:ASSERTS]->(cur)
RETURN doc.title, old.statement
Knowledge brokerscypher
CALL algo.betweenness({
  nodeLabels: ['Person'],
  relationshipTypes: ['COLLABORATES']
}) YIELD node, score
How is A connected to B?cypher
CALL algo.SPpaths({sourceNode: a, targetNode: b,
  relTypes: $rels, relDirection: 'both',
  maxLen: 8, pathCount: 1}) YIELD path

Ask Gary anything about Kitestring.

Kitestring is a fictional 21-person startup. Every record is synthetic.