Ask questions of your own database in ordinary English. Get an answer, the evidence behind it, and a record of exactly how it was reached. Everything runs on your machine — nothing is sent anywhere.
The part that decides WHICH records answer your question is deterministic. Pick a question and run it.
The step that finds your records is a direct walk along real links between them — not a similarity guess. The language model phrases the answer; it never decides what the answer is.
same question, same data ⇒ same evidenceOne panel shows the values it anchored on, the records it matched, which parts of your data it was allowed to see, and the exact text the model was given — word for word.
you can tell a wrong answer from a wrong questionThe database, the language model, speech-to-text and text-to-speech all run locally and listen only on the loopback interface. No API keys, no vendor, no per-question cost.
answer payroll questions without telling anyoneYou tick the areas of your business that are askable, and the index is built by walking the hierarchy of every knowledge area you chose. A question can only anchor on a value that is in that index — which is precisely why the scope picker is a correctness control.
A value outside the built index cannot be answered about. So the page states its scope and flags any concept that reached the engine ceiling — because an unindexed value would otherwise return a confident “no records found” that is indistinguishable from a true negative.
handle_item_list() fills a
fixed HierID ids[1024], so a concept with more than 1,024 distinct values is capped.
41 concepts sit on that ceiling — and the page reports it rather than answering from part of the data.
Raising it is an engine change, not a front-end one.“Which records match” is a lookup. “How are these two things connected”, “what else is like this”, “what are we probably missing” are not. ATLAS holds your whole dataset as a graph — 314,000 things and 4.1 million relationships — and answers that second kind.
The clusters your data naturally forms, everything that neighbours the thing you asked about, and the shortest defensible path between any two records — with the strength of every hop.
asserted fact · traceable hop by hopATLAS learns a mathematical representation of every record, so it can surface things that resemble your subject even when nothing links them directly — confined to the scope you ticked.
offered as resemblance, never as factRelationships ATLAS believes should exist but which nobody has recorded — the missing link between two customers, the duplicate entered twice, the record whose connections look nothing like its peers.
always labelled a prediction · never written in as truthAsk can hand the reasoning engine to the language model as a set of tools and let it look things up for itself — neighbours, connecting paths, clusters, similar records, likely-missing links — until it can answer. Every lookup it makes is listed underneath the answer, so the investigation is reviewable.
The areas you tick in step 1 travel with the question into the reasoning engine, so the six most similar records are the six most similar in scope — not whatever survives a search across everything you own. A question about one department cannot quietly read another.
So they are fenced, the fence markers are stripped from the content first — so data cannot close its own fence — and the system prompt states that nothing inside is an instruction.
All loopback-only, reached same-origin through the dev proxy. The rest degrade features rather than break them.
REQUIRED — records, values, and the index behind every answer. Session-gated.
optional — GraphRAG grounding (structural · dense · inferred) plus the agent tool surface.
optional — both language slots. Absent ⇒ the deterministic template answers instead.
the microphone button only.
the speak button only.
A cold model load costs ~160 s, so the page pre-warms on mount. Narration then streams — measured first token at 4.3 s, and the evidence table renders before it.
Figures taken from the running system, not a benchmark rig.
Today that walk is thrown away once the answer is rendered. The reasoning engine is built to learn from exactly this signal: it keeps a strength on every relationship and raises it each time that relationship is actually used. Feeding each answered question back would make the graph learn what your organisation actually asks about — so the connections your people rely on daily start ranking above the ones that merely exist.
The system already ships the safeguard this needs: a shadow mode that compares the learned ordering against the unlearned one, so the effect of learning can be measured before it is trusted. Usage shapes what surfaces first — it never changes what is true.
handle_item_list. Ask can report it but cannot
page around it. Raising it is an engine change.Everything on this page except the shaded panel is implemented and running today.