A voice AI that interviews your departing experts and turns what's in their head into a living, cited knowledge base their successor can talk to.
Live demo · Quickstart · How it works · Architecture · API · Phone interviews · 3-minute demo script · Slides

▶ Watch the 2-minute product walkthrough (narrated by Higgs Audio).
Every day about 10,000 Americans turn 65.¹ When a 19-year payroll lead, a staff SRE or a plant technician walks out, the runbook they never wrote goes with them: the real cut-off time (3:30, not 5), the vendor rep who actually answers, the macro on their desktop, the rule that exists because of an incident nobody remembers.
Companies know this. Fortune 500s lose an estimated $31.5B a year from failing to share knowledge,² and 42% of the skills needed for a job are known only by the person currently doing it.³ The fix has always been "write the documentation". Experts don't. But they will talk for an hour.
Tacit makes the talking the documentation.
¹ Pew Research Center · ² IDC, via Babcock (2004) · ³ Panopto Workplace Knowledge and Productivity Report (2018)
- Real-time voice interviews on Boson AI's Higgs Realtime (speech-to-speech, semantic turn detection, barge-in), with browser voice where supported and a type mode. Reconnect voice or continue typing in the same saved interview if audio fails.
- Live extraction of typed, cited knowledge atoms while the expert is still talking.
- Coverage map: planned domains × target questions; the interviewer steers to what's missing.
- The successor twin: hybrid retrieval (BM25 + embeddings, RRF-fused), grounded answers with
[n]citations, confidence gating. - The closed loop: unanswered successor questions are queued and asked first next session.
- Voice cloning: with the expert's consent and reference recording enabled, Higgs Audio can clone their voice so the twin speaks like them. Otherwise the twin uses a stock voice, with browser speech as fallback.
- Multilingual interviews: the expert is interviewed in their own language (Spanish, Tamil, Mandarin, 18 presets, Higgs supports 100+) while every atom is written in English with the verbatim quote preserved.
- Phone interviews: Tacit calls the expert (Twilio SIP → LiveKit → Higgs Realtime agent). See docs/PHONE.md.
- Handover document compiled from everything captured (Markdown → Confluence/Notion/PDF).
- The Constellation: a 3D knowledge graph of atoms, domains and the people and systems they mention, with bloom and particle flows. Steer it with your hands through the camera (point to reveal, pinch to grab, open palm to orbit, two hands to zoom; on-device MediaPipe hand tracking), step inside it with your live camera as the backdrop, and ask it questions by voice: the cited atoms light up while the camera flies to them.
- Runs anywhere: any OpenAI-compatible LLM (Nebius first-class), Anthropic, local Ollama, or an offline demo brain. The same engine runs fully in the browser, so the live demo works with no backend at all.
- Zero native runtime dependencies: Node's built-in SQLite and one Docker image. Unit tests and repeatable browser checks cover persistence, voice lifecycle, gestures and the demo journey.
| Situation | What Tacit does |
|---|---|
| The retirement wave (Peak 65: ~4M US retirements a year) | Three interviews before the last day; the successor gets a twin instead of a binder. |
| Resignations, layoffs, contractor exits | Two weeks' notice is enough. Offboarding becomes a knowledge capture, not a checklist. |
| Onboarding the successor | New hires ask the twin of the person they replaced; gaps become interview questions. |
| Open-source maintainers stepping down | Release rituals, flaky tests, sponsor contacts, the token only they hold. |
| Clinical and care teams | Charge nurses and lab managers, interviewed in their own language, atoms in English. |
| Plants, utilities, field service | Machine quirks, fast suppliers, safety rules born from incidents; phone interviews for people without desks. |
| Regulated and public sector | Cited, verifiable atoms and a handover document that satisfy key-person retention audits. |
| Founders and family businesses | Judgement calls, relationships and handshake deals captured before succession or acquisition. |
| Family memory | Interview a grandparent: recipes, stories and sayings, answered in their own voice. |
Role templates for payroll/finance, engineering/SRE, operations/manufacturing, sales, HR, clinical care, clinical nursing, utilities/field service, hospitality management, public-sector casework, research labs, open-source maintainers, founders/executives and family memory drive the offline planner; the LLM planner adapts to any role.
git clone https://github.com/vnmoorthy/tacit.git && cd tacit
pnpm install
pnpm dev # API on http://localhost:8787, web on http://localhost:5173That's it. With no keys Tacit runs the offline demo brain and your browser's speech APIs where supported. Click Load sample captures on the dashboard to meet Maria (payroll), Dev (SRE) and Luis (plant maintenance).
To make it good, add keys to a .env at the repo root (see .env.example):
NEBIUS_API_KEY=... # interviewer + extraction on Nebius Token Factory (or OPENAI_API_KEY / ANTHROPIC_API_KEY)
BOSON_API_KEY=... # Higgs Realtime voice, Higgs Audio TTS + voice cloningIf Ollama is running locally it's auto-detected (llama3.1:8b + nomic-embed-text), no key needed.
pnpm seed # load sample captures into SQLite
pnpm test # core, API, voice, gestures and persistence tests
pnpm build # production web build (served by the API)For client demos, build first and run pnpm start at http://localhost:8787 so source edits cannot interrupt the presentation. See demo readiness and verification for browser checks, live-provider validation and device rehearsal.
One isomorphic TypeScript engine runs on the server (SQLite) and in the browser (localStorage). Everything is a pure function of a Store and a Brain.
| Stage | What it does |
|---|---|
| Planner | Role + context → 6–8 domains, each with a priority (1–3) and 2–3 open target questions. Next domain = lowest coverage adjusted by priority. |
| Interviewer | One question per turn. Follows up on hedges ("usually", "depends", "the trick is"), asks the successor's queued questions first, moves on when a thread is exhausted, keeps every turn under 45 words so it reads aloud well. |
| Extractor | Expert answer → 1–6 typed atoms with title, markdown content, tags, confidence, domain and a verbatim sourceQuote. Runs in parallel with next-question planning (≈3.5 s per turn on Nebius). |
| Coverage | Per domain: 55 % × questions asked + 45 % × min(1, atoms/5). Capture-level: weighted by priority (3/2/1). |
| Twin | BM25 over title+content+tags+quote, plus dense cosine when embeddings exist, fused with reciprocal-rank fusion. The brain answers only from the top atoms and reports confidence; low/none queues the question. |
| Handover | Compiles atoms by domain and type, verified marks, quotes, open questions, session log. |
Two interchangeable brains implement the same interface:
LLMBrain— any model viaOpenAICompatibleLLM(Nebius, OpenAI, Groq, Ollama, gateways) orAnthropicLLM. JSON is validated; on any failure it silently falls back to…HeuristicBrain— no model at all. Role templates plan the map; linguistic cues (first/then/never/call/careful/…) classify sentences into atoms; retrieval is extractive. Every button works offline.

A live Higgs Realtime session captured in an automated browser run with a synthetic microphone: expert audio → transcript → atoms → refreshed agenda → next spoken question.
| Engine | Path | When |
|---|---|---|
| Higgs Realtime | Browser ⇄ wss://api.boson.ai/v1/realtime (ephemeral bai-client-secret, PCM16 @ 24 kHz, OpenAI Realtime events). User transcripts via higgs-stt-3.1 → /sessions/:id/turns for extraction; the agenda is refreshed with session.update after every answer. |
BOSON_API_KEY set |
| Browser voice | Web Speech recognition (1.6 s end-of-turn) → API → speechSynthesis. |
When supported and microphone permission is granted; text input remains available |
| Higgs Audio | /v1/audio/speech for the twin's spoken answers; /v1/audio/voices clones the expert from a reference clip recorded during a browser-voice session. |
BOSON_API_KEY set |
| Phone | Twilio SIP trunk → LiveKit room → services/phone-agent (LiveKit Agents) on Higgs Realtime → Tacit API. |
LiveKit + Twilio configured |

Ask "the ACH file bounced on a Friday afternoon, what do I do?" and the cited atoms glow while particles run along their links. Hand gestures via MediaPipe: ☝️ point · 🤏 pinch to grab · ✋ orbit · 🙌 zoom.
| Piece | How |
|---|---|
| Graph | buildGraph() in core: domain hubs, atom nodes coloured by type, entity nodes for people, tools and teams (from tags), in / mentions / related links (BM25 neighbours). Served at GET /captures/:id/graph; also built in-browser in standalone mode. |
| Rendering | 3d-force-graph + three.js, UnrealBloom post-processing, sprite labels, directional particles on highlighted links. |
| Hands | @mediapipe/tasks-vision Hand Landmarker (WASM, on-device, two hands), with model and WASM served locally. Camera starts only after Use my hands. Stable hand identities, pinch hysteresis and mirrored preview mapping keep pickup/orbit/zoom transitions predictable; lost hands release dragged nodes. |
| Immersive | "Step inside": the mirrored camera feed becomes the scene background (three.js VideoTexture) under a camera-locked veil, with the hand skeleton drawn full-screen, so the presenter stands in the constellation. |
| Voice | Continuous listening with a small command grammar: "show me the risks", "focus on Kevin Tran", "zoom in", "rotate left", "step inside", "reset". Anything else is a question for the twin: grounded answer, spoken back (Higgs Audio when available), cited atoms highlighted and framed. Listening pauses while the twin speaks. |
| Record | One button records the constellation (with your camera backdrop when inside) from the WebGL canvas to a video file. |
| Type | Meaning | Example from Maria |
|---|---|---|
procedure |
Ordered steps | First hour after an ACH rejection |
rule |
Always / never / if-then | Real ACH cut-off is 3:30 pm, not 5 |
gotcha |
Trap or quirk | ADP "filed" does not mean "deposited" |
contact |
Who to call, and for what | Kevin Tran, ADP named rep (skip the queue) |
tool |
System, report, script, spreadsheet | RECON_v7 macro that lives only on her desktop |
decision |
Judgement call and the factors weighed | Friday rejections: same-day wire beats waiting |
glossary |
Term or acronym | — |
risk |
What can go wrong, trigger, impact | Disability-carrier portal login is in Maria's name |
story |
Anecdote worth keeping | — |
tacit/
├─ packages/core/ engine: types, brains, retrieval, coverage, handover, samples, tests
├─ apps/api/ Hono + node:sqlite REST API, provider auto-detection, Boson + LiveKit glue
├─ apps/web/ Vite + React 19 + Tailwind v4, two voice engines, standalone mode
├─ services/phone-agent/ LiveKit Agents worker (Python) for phone interviews
├─ docs/ ARCHITECTURE · API · PHONE · DEMO · assets
├─ slides/ Tacit.pptx (10 slides) + storyboard
├─ Dockerfile · docker-compose.yml · .github/workflows (CI, GitHub Pages)
All endpoints are JSON under /api. Full reference in docs/API.md.
| Method | Path | Purpose |
|---|---|---|
POST |
/captures |
Plan a capture (coverage map) for an expert |
POST |
/captures/:id/sessions |
Start an interview; returns the opening question |
POST |
/sessions/:id/turns |
Expert said something → atoms + next question |
POST |
/captures/:id/ask |
Ask the twin → grounded answer with citations |
GET |
/captures/:id/handover |
Compiled handover Markdown |
POST |
/voice/higgs/session |
Ephemeral Higgs Realtime credentials + interviewer instructions |
POST |
/voice/tts · /captures/:id/voice/clone |
Higgs Audio speech · clone the expert's voice |
POST |
/phone/call |
Dispatch the phone interviewer and dial the expert |
- Docker:
docker compose up→ http://localhost:8787 (API + web, SQLite on a volume). - Any Node host (AWS App Runner / ECS / Fly / Render):
pnpm install && pnpm build && pnpm start, setAPI_PORTorPORT, mountdata/. - Static demo (no backend):
VITE_BASE=/tacit/ pnpm --filter @tacit/web build→ deployapps/web/distanywhere. The GitHub Pages workflow does this on every push tomain.
- Inbound phone line ("call Tacit when you have a minute") and scheduled call-backs
- Multi-expert captures and team knowledge graphs across captures
- Confluence / Notion / SharePoint export and Slack twin
- SSO, roles, audit log, retention policies
- Evaluation harness for extraction quality across models
Build an AI Startup in One Day, an Open Source for AI hackathon in San Francisco (Voice AI track), and the Boson Higgs Audio Hackathon 2026 (tracks: Voice at Work · Agents That Act · Breaking the Language Barrier). Partner technology used: Boson AI (Higgs Realtime, Higgs Audio TTS + voice cloning), Nebius Token Factory (inference + embeddings), with LiveKit + Twilio for telephony. Slides in slides/, demo script in docs/DEMO.md, submission kit in docs/SUBMISSION.md.
See CONTRIBUTING.md. Issues and PRs welcome, especially new role templates and provider adapters.





