Know who owns it.Know what breaks.Know who to page.
SSO — requested in the renewal call, still open with Engineering.
Fed from the tools you already use
Try it in 30 seconds.
One call. Every answer carries its path.
# ask with provenance
curl -X POST /ask \
-H "Authorization: Bearer $HELIO_KEY" \
-d '{"question":"Who owns payments?"}'
# python
import httpx
r = httpx.post("/ask", json={"question": "Who owns payments?"})
print(r.json()["trail"])A search returns an answer.
A traversal returns the proof.
Both panes answer the same question about the same service. The left ranks text similarity. The right walks typed edges and returns the dates, rotations and decisions behind the answer.
Who owns payments-gateway today, and who gets paged?
- #1Stalethe former payments lead14 commits — the highest volume on the service0.94 matchLast touch 2026-04-15
- #2Freshthe current Platform on-call5 commits — recent work on the same service0.71 matchLast touch 2026-09-28
- #3Supersededpayments-provider-eval-v3A document ranked on the word “owner”0.63 matchVerified 2026-03-18
Commit volume is a history of attention, not a statement of accountability. The index has no OWNED_BY edge and no rotation, so it cannot see the handover.
Traversal path: payments-gateway is owned by Platform, whose on-call rotation responds this week.
- Owner
- Platform team
- accountable today
- On-call
- Platform rotation
- active this week
- Blast radius
- 8 services
- 3 hops deep
- Handover
- D-21
- 2026-04-15
D-21 moved ownership on 2026-04-15. The Platform rotation supplies the current responder, and the 2026-09-28 commit confirms the service is still active.
Cypher executed
MATCH (s:Service {name: 'payments-gateway'})-[:OWNED_BY]->(t:Team)
OPTIONAL MATCH (t)<-[:ON_CALL]-(m:Person)
OPTIONAL MATCH (s)-[:HAS_DEPENDENT*1..3]->(d:Service)
RETURN t.name, m.name, count(DISTINCT d) AS downstreamWho owns config-service?
- #1InferredPlatform teamInferred from the service name and team docs0.71 matchNo source date
- #2InferredPayments teamThree documents mention the service0.64 matchNo source date
- #3InferredInfrastructure teamPlausible answer, no supporting record0.58 matchNo source date
A similarity model has no way to return “no owner”. It fills the gap with the most plausible team, and the answer looks just as confident as a correct one.
Traversal path: config-service has no OWNED_BY edge and no on-call rotation. The absence is the answer.
- Owner
- None
- no OWNED_BY edge
- On-call
- None
- no rotation assigned
- Blast radius
- 0 services
- no dependents
- Verified
- 2026-10-28
- absence checked
The query uses OPTIONAL MATCH. When OWNED_BY is missing, the answer says so and stops. That is a fact about the graph, not a gap in the data.
Cypher executed
MATCH (s:Service {name: 'config-service'})
OPTIONAL MATCH (s)-[:OWNED_BY]->(t:Team)
OPTIONAL MATCH (t)<-[:ON_CALL]-(m:Person)
RETURN s.name, t.name, m.name // NULL is the answerAre we still on a single payment provider?
- #1Stalepayments-provider-eval-v3.md“Single provider, Stripe.”0.81 matchWritten 2026-03-18
- #2Stalestripe-cutover-notes.md“Stripe is the only provider.”0.74 matchWritten 2026-02-02
- #3Stalepayments-gateway READMELists one provider integration0.69 matchWritten 2026-01-19
All three chunks are real and well written. None of them knows that Decision D-19 replaced the March plan, because the index has no SUPERSEDES edge.
Traversal path: D-14 is superseded by D-19, whose evidence is the v4 provider evaluation.
- Current
- Dual provider
- Adyen primary · Stripe fallback
- Decision
- D-19
- dated 2026-05-06
- Author
- VP of Engineering
- accountable sign-off
- Status
- Active
- D-14 superseded
The SUPERSEDES edge is the missing fact in flat search. D-19 is active, D-14 is superseded, and the current state is Adyen primary with Stripe fallback.
Cypher executed
MATCH (current:Decision {id: 'D-19'})-[:SUPERSEDES]->(old:Decision {id: 'D-14'})
OPTIONAL MATCH (current)-[:EVIDENCED_BY]->(doc:Document)
RETURN current.summary, current.date, old.summary, doc.nameEvery answer above comes from the same traversal: ownership, rotation, blast radius and the decision that changed it.
Enterprise search tells you where documents live, not what is true.
A hallucinated ownership chain looks exactly like a correct one because both are plausible prose. Helio replaces probabilistic guessing with deterministic graph traversals over real organizational edges.
The top committer left in April
The top committer has 14 commits on payments-gateway — the most. A single 'ORDER BY count DESC' returns them, technically correct on volume but wrong on recency. Helio returns both signals: ask the current on-call.
Stripe vs. Adyen decision conflict
A March doc says 'single provider, Stripe.' May Decision D-19 says 'dual provider, Adyen primary, Stripe fallback.' Without a SUPERSEDES edge, search engines present stale docs as current truth.
Cascading midnight failures
When a core service degrades, text search cannot trace downstream blast radius. Helio walks HAS_DEPENDENT edges to identify exact hop depth, owning teams, and on-call engineers.
Invents owners when none exist
An LLM asked 'who owns config-service?' invents a plausible team. Helio traverses the graph, detects no OWNED_BY edge, and states with confidence: 'No team owns it.' Truth, not an apology.
The answer that
isn't there.
Five of the twenty demo questions have no answer in the graph. A model that invents a plausible team produces the same shaped sentence as one that knows. Helio returns the missing edge as the result.
One graph. Two powerful lenses.
Helio Natural Language Agent
Ask complex organizational questions in plain English. Helio maps your intent into Cypher queries, traverses graph edges, and returns the path behind every answer.
Helio Graph Console
Visual overview of your entire engineering topology. Inspect service tiers, live on-call rotation assignments, staleness indicators, and blast radius cascade depth in real time.
Built on graph topology, not guesswork.
An LLM asked "is this answer correct?" is circular. Helio anchors the agent to a deterministic graph database and grounds every answer in the edges that actually exist.
GRAPH INGESTION
Persons, Teams, Projects, Services, Decisions, and Documents loaded with pre-indexed Cypher properties.
MULTI-HOP CYPHER
Follows HAS_DEPENDENT and OWNED_BY paths to discover exact ripple effects and on-call escalation routes.
TEMPORAL DECAY
Checks edge validity dates so departed engineers are never recommended, even if they had the most commits.
DETERMINISTIC HONESTY
When an edge does not exist, Helio returns a confident negative instead of inventing one.
One source of truth for the entire engineering organization
INCIDENT COMMANDERS
Trace blast radius and find the active on-call engineer in seconds during outages.
STAFF ARCHITECTS
Follow SUPERSEDES chains to ensure deprecated architectural decisions are retired.
ENGINEERING DIRECTORS
Audit unowned services (like config-service) and eliminate structural blindspots.
SITE RELIABILITY ENGINEERS
Map multi-hop cascade dependencies before releasing core infrastructure changes.
NEW HIRES & DEVELOPERS
Discover who actually maintains a codebase recently, bypassing stale Confluence wikis.
PLATFORM LEADS
Keep service tiers and SLA contracts compliant across distributed engineering teams.
SECURITY AUDITORS
Visualize exact blast radius when a critical dependency requires emergency patching.
PRODUCT MANAGERS
Map cross-team service ownership to eliminate organizational blockers.
Priced for the team that needs the answer
Start free. Upgrade when the graph becomes part of how your team works. Every plan includes the provenance trail, staleness flags and honest negatives — the parts that make an answer checkable.
Free
Evaluate the graph on a real company brain, no card required.
Starter
For one engineering team that needs answers it can defend.
Professional
For platform teams running multiple services and decisions.
Enterprise
For security-sensitive organisations with their own graph.
Each plan includes its seat allowance — 1, 3 or 10. You pay for the questions your team asks, not for inviting a reviewer to read a trail.
The graph, Cypher and agent loop are open source. Self-host them for free; the paid plans pay for the managed surface.
Stripe Customer Portal handles plan changes, payment methods and cancellation. No retention call required.
Got Questions? We've Got Verified Answers.
Vector search checks semantic similarity between text chunks. It cannot tell that the top committer left the company six months ago, cannot compute a three-hop dependency cascade, and treats superseded documents as equally valid. Helio traverses typed organizational edges with temporal properties, and uses text search only at the leaves.
The agent is bounded by graph query results. If a service such as config-service has no OWNED_BY edge, the agent receives an explicit empty set and returns: "The graph contains no OWNED_BY edge. No team owns it." When the graph has no answer, Helio says so instead of filling the gap with plausible prose.
The top committer has 14 commits on payments-gateway, the highest in the sample company. A naive ORDER BY count DESC returns that person even though they left in April 2026. Helio returns volume and recency as two separate signals: the current Platform on-call touched the service most recently on 2026-09-28; the former lead has the most commits, but the last touch was 2026-04-15 and is flagged stale.
Helio models architectural decisions with SUPERSEDES edges. A March document says "single provider, Stripe." Decision D-19 (2026-05-06) established "dual provider, Adyen primary, Stripe fallback." Because D-19 supersedes the earlier document, the graph shows that the March document is obsolete instead of presenting both as current.
A useful graph needs services, the teams that own them, the people on those teams, on-call rotations, dependency edges between services, and decision records with dates. Git history, GitHub issues and pull requests add recency signals. The public demo uses a synthetic company of 185 nodes; it is labelled as sample data throughout the product.
No. Helio does not train models on customer data. The graph is the source of truth, and the language model is used to interpret the question and phrase the answer. You can run the graph and API in your own environment if you need the data to stay there.
The Free plan includes 50 questions per month and one seat. Starter is $15 per month with 1,000 questions and three seats. Professional is $49 per month with 5,000 questions and ten seats. Enterprise pricing is custom and includes a dedicated graph instance. Every plan includes the provenance trail.
Yes. The repository ships a Docker setup for the graph, API and frontend, so the same system can run inside your own network. The managed plans exist for teams that would rather not operate it themselves.
The problems behind the product
Guides to ownership, blast radius, on-call tracking and stale documentation. They use the same synthetic company as the demo, so every example can be checked.
Runs where your data lives.
One isolated brain per customer — no data crossing tenants.
The tower, exposed.
Prompt versioned · injection blocked · PII redacted · every ask traced (prompt, trail, latency).