Use cases by industry
Use case: personal knowledge vault
Every household forgets the things it can least afford to: which account is paying for the remodel, when the dishwasher warranty lapses, which pediatrician manages the asthma, what the emergency fund actually holds this month. A wrong warranty date, medication, or balance isn't a bad search result — it's a decision made on a fact that was never true. This guide builds a household assistant that recalls those facts with a citation and abstains rather than guess, touching seven module slices: Intake to capture the notes, Atlas to turn wikilinks into a typed graph, Warrant to certify what the family will act on, Conduit to ground live money questions, Lens to answer with citations, Lineage to trace any answer to its note, and Crucible & Ports to lock recall in and hand it to the family.
Seed this workspace and follow along
yarn demo:seed personal and it appears as The Lindqvist Household Vault— a family's people, money, home, health, and travel, densely wikilinked, with the lindqvist-finance connector and the household-assistant agent already wired. See Demo workspaces for the full catalogue.Prerequisites
- A workspace key with
kb:write,kb:read,data:read,data:run,agents:run, andruns:read, exported as$ELI_KEY. See Getting started. - Owner/admin on the workspace, to certify concepts and verify notes.
- An enabled chat model, so
/querycan generate — otherwise409 no-model-configured.
1 · Intake — capture the vault
The household's knowledge is already written down — it's just scattered across a dozen Markdown notes: the family roster, the accounts list, the appliance warranties, the medical summary, the trip plan. Post them as documents and each commits as a chunked, FTS-searchable document before embedding and graph enrichment continue independently. Here is the home-systems note that the rest of this guide hangs on:
/api/v1/documentsBearer · kb:writeSave markdown through the vault. The file, chunks, and full-text index commit before 201; embedding and graph enrichment continue as detached work, so the response contains stored-document metadata only.
The response has no entity count or processing status. Detached enrichment can later resolve references such as [[Bosch Dishwasher]], [[Carrier HVAC System]], [[Household Budget]] — into graph nodes and edges. Atlas builds the household's concept graph after the storage boundary. Do the same for the family roster, the accounts, the care team, and the trip; query the graph only after that enrichment has completed.
2 · Atlas — wikilinks become a graph
The vault's ontology types six kinds of thing a household tracks — Person, FinancialAccount, Project, Appliance, HealthRecord, and Trip — connected by four relations: owns, manages, treats, and funds. So retrieval isn't bag-of-words; it's structured. List the entities highest-PageRank first to see what the ingest produced:
/api/v1/entitiesBearer · kb:readList canonical entities highest-PageRank first. The dense wikilinking makes the hub nodes — the people and the money — rise to the top automatically.
Pick a hub and expand its neighborhood to read the household as a graph. Mara Lindqvist is the primary account holder, so her frontier fans out across money and projects:
/api/v1/entities/{id}/neighborhoodBearer · kb:readExpand the canonical relations around one entity, both directions. This is the typed edge set — owns / manages / treats / funds — that grounds structured retrieval.
The graph is free
[[wikilink]] style, the entire typed graph — 38 entities across six types, joined by four relations — is derived deterministically at ingest. Curate it by hand in Manage entities when you want to merge duplicates or add a relation the notes didn't spell out.3 · Warrant — certify what the family will act on
Extraction gives you concepts at authority machine_extracted — good enough to retrieve, not good enough to bet on. A household fact the family will act on — a warranty deadline, a balance, a medication — has to be vouched for. In Warrant, pin the canonical definition as a reviewable change and then certify it. Take the Bosch Dishwasher and lock its warranty date:
/api/v1/change-requestsBearer · kb:writePropose the canonical definition as a reviewable change rather than editing silently. Approval promotes authority to at least curated and records the reviewer on the revision.
/api/v1/entities/{id}/certifyBearer · kb:writeOwner/admin sign-off — authority certified. Also starts the review clock: nextReviewAt lands at now + the workspace's reviewIntervalDays, so a certified household fact can't quietly go stale.
Then verify the note the concept came from, so its provenance carries a governance tier the whole platform can read:
/api/v1/documents/{id}/verifyBearer · kb:writeGlean-style document verification. Stamps the verification tier, the verifier, and the next re-verify date — the governance block Lineage reports and the manifest counts.
Certification changes how the policy answers
Emergency Fund is certified and its accounts note verified, the seeded decision for "What's the balance of our emergency fund?" is answer at confidence 0.82 (confidence_above_answer_floor) — stated plainly. The same treatment applies to the household's one non-negotiable: Peanut Allergy. Curate any of it as a click in the Curation page — the API and the UI write the same append-only revisions.4 · Conduit — connect the money
Notes describe the household's money; the bank knows what it holds right now. The pack ships a read-only connector, lindqvist-finance (a Postgres household_finance database of accounts, transactions, and budgets), with three governed named queries authored against it. List the surface — you get slugs, titles, and parameter specs, never credentials:
/api/v1/data/queriesBearer · data:readList the named queries (domain components) you can run, with their parameter specs. Secrets and connection configs are never returned.
Now answer the household's most-asked money question — what did we spend on groceries this month? — by running spending-in-category by its slug. Params are bound, never interpolated; the read is capped and timed, and every run writes a data_calls provenance row:
/api/v1/data/queries/{slug}/runBearer · data:runExecute the named query with validated params. Read-only, row-capped at the connector's maxRows (200), and provenance-logged with a dataCallId you can trace.
Authoring the connector is a UI job — running it isn't
lindqvist-finance connector, its read-only credential, and these three queries are created in the workspace Data page (and seeded for you by yarn demo:seed personal). The API only consumes that governed surface — it lists and runs by slug, it never writes SQL. Each query is also bound to an entity, so account-balances hangs off Household Finance Tracker, spending-in-category off Groceries, and budget-vs-actual off Household Budget. See Query live data for the whole surface.5 · Lens — ask, and get a cited answer
Now the payoff. Someone in the family asks in plain language; Lens retrieves, grounds, and returns an answer with inline [Sn] citations, an atomic claims breakdown, and a policy decision that says how much to trust it. Ask the warranty question — a certain fact, but a time-sensitive yes/no:
/api/v1/queryBearer · agents:runRun the grounded query pipeline: retrieval + entity detection + one generation + a groundedness check + the answer-policy engine. Returns a cited answer with a policy decision. The workspace comes from the key.
The policy block is the trust signal, and it has range. Here it returns answer_with_caveat at 0.47: the warranty date is certain, but "still under warranty?" is a borderline yes/no in time, so the policy hedges instead of stating it flat. Ask something the vault backs cleanly — "Which doctor treats Nils's asthma?" — and you get a plain answer at 0.76 (confidence_above_answer_floor), citing the people/care-team.md note that names Dr. Rajesh Patel. Ask something the vault can't back — "Should we refinance the mortgage this year?" — and the policy engine returns abstain_with_pointers at 0.14 (no_relevant_chunks), pointing at a financial advisor rather than inventing a recommendation the family would act on. That's the whole ethos of a personal vault: cite the note, or say you don't know.
6 · Lineage — trace it back to the note
A month later someone edits the appliances note and wonders what they just changed. The warranty answer cited S1 → docId 01KY10…. Pull that document's lineage and read the whole trail in one call — origin, governance, and the downstream answers it's grounding right now:
/api/v1/documents/{id}/lineageBearer · kb:read or runs:readThe unified per-document lineage trail: origin provenance, governance, the audit trail, derived knowledge, and downstream impact. This is how you prove an answer's pedigree end to end.
There it is, closed loop: the answer traces to the note you posted in step 1 (home/appliances.md), that note is certified, and it is currently grounding 3 answers — so an edit to it has a known blast radius. Nobody had to trust the model; they read the pedigree. The full trail also lists the derived concepts (Bosch Dishwasher, Carrier HVAC System) and the dependent cache entries that would invalidate if the warranty note changed.
Same trail, three surfaces
DocumentLineage as a visual trail on the document page (via the BFF at GET /api/w/{workspaceId}/documents/{docId}/lineage), and the household assistant can pull it mid-run with the kb_document_lineage MCP tool. One shape, three surfaces.7 · Crucible & Ports — lock recall in, hand it to the family
Household facts drift — a filter gets changed, a warranty lapses, a doctor moves practices. Capture the questions the family actually asks as a golden set so Crucible can prove recall still holds after every edit. The Household recall baseline set includes "When is the Carrier HVAC filter due for replacement?" — anchor a provenance qrel to the appliances chunk that should ground it:
/api/v1/qrelsBearer · kb:writeAuthor a graded relevance judgment for a golden item. source=provenance derives the highest-grade judgment from the item's anchored citation — deterministic, no judge model needed.
Run the set and read the metrics. When a number drops after an edit, the golden set names exactly which question regressed — and promoting that miss back in turns it into a permanent test. That is the dashed loop in the diagram: Crucible's regressions steer the next round of Warrant curation.
/api/v1/evals/runs/{id}/metricsBearer · kb:read or runs:readRetrieval, RAGAS, and abstention metrics for one run — overall and by facet. The ruler for 'did recall get worse?'
Finally, put it in the family's hands. The pack ships the household-assistant agent — grounded, memory-enabled, and instructed to cite the note for every claim and abstain rather than guess a warranty date, medication, or balance. Start a durable run over the same golden question:
/api/v1/agents/{slug}/runsBearer · agents:runStart a durable run of the Household Assistant. Returns immediately with a runId and a stream URL; the loop runs on the worker with retrieval, memory, and the groundedness check enabled.
The seeded run trace shows the assistant answering from its hvac-filtermemory ("last changed May 2026, 3-month interval — next change due around August 2026") with a citation back to the appliances note. Its peanut-allergy memory makes it flag nut risk in any recipe, restaurant, or travel form for Iris Lindqvist without being asked. And the two seeded alerts — warranty.expiring (Bosch Dishwasher, ~40 days) and maintenance.due (Carrier HVAC filter) — surface those deadlines before they lapse instead of after.
The leverage
Seven slices, one vault, one audit trail. The family gets a fast, cited answer to "which account funds the remodel?" or "what did we spend on groceries?"; any answer traces back to the note or the read-only query behind it; and the whole thing is measured, so recall is a number you watch rather than a memory you hope holds. Swap "household" for a research vault, a small business, or a nonprofit and the shape is identical — the platform doesn't care what the notes are about, only that every answer is grounded, governed, traceable, and measured.
Keep going