For Great Energy, one of our own companies, we built 'Ask Daniela,' a private assistant that answers only from one teacher's own body of work, with a second teacher's material already ingested and held in its own separate knowledge base. Great Energy is a part-time education business Christopher built with his wife Daniela, so this ran in our own shop first. Its only source of knowledge is that teacher's own transcripts, articles, and notes, so it answers from her real work or it does not answer at all. It is live now on the Great Energy site.
Great Energy has two teachers and more than a decade of teaching behind it, and a body of knowledge that existed only as hundreds of raw class transcripts, hand-written articles and course manuals scattered across project folders, and a curated bank of stories and quotes that had never been surfaced anywhere. Tens of thousands of files, in every format from word-processor bundles to meeting-call captions. None of it searchable. No way for a student, a prospective client, or even the teachers themselves to ask 'what have we said about this?' and get an answer grounded in their actual work.
Great Energy's two teachers cover different material for different people. A single 'search everything' tool would blur two distinct voices, so each teacher gets their own assistant, drawing on their own knowledge base and nothing else. Ask Daniela is live on the Great Energy site; the qigong teacher's knowledge base is already ingested and isolated, with its assistant to follow. The exchanges below are representative previews.
Start smaller than you think you need to. Five to ten minutes, at the same time each day, matters far more than a long session you can only manage twice a week. The body learns the rhythm from repetition, not from intensity.
Pick one simple standing posture and one slow breath to return to, and let that be the whole practice for the first couple of weeks. Once it feels like something you look forward to rather than a task, you add to it. Consistency first, depth second.
A few patterns are worth noticing: fatigue that does not lift with rest, that comes with joint aches, digestive changes, or flares that track with stress or certain foods. On their own none of these confirms anything, and the pattern over weeks tells you more than any single day.
The next step is testing with a practitioner who reads the full picture, not one marker in isolation. What this work adds is the daily inputs, sleep, food, and stress, that move the pattern one way or the other while you get to the bottom of it.
Representative previews. Example questions and answers are mocked to show the experience; they are not quotes pulled from anyone's real material.
Four independently-deployed pieces, each doing one job. The embeddings and reranking run on Cloudflare's own network, and Claude writes the final answer.
Walks human-reviewed source folders, extracts text from mixed formats, parses speaker-labeled transcripts, chunks with overlap, embeds every chunk.
The vector database, the embedding and reranking models, and a custom search API, all on one platform.
A chat workflow per assistant: a forced think step, the search Worker called as a tool to ground the answer, Claude writing it, and memory across turns.
The assistant is embedded on Great Energy's existing Squarespace site, on a password-protected page, styled to match, with access locked to its domains.
The debugging journey is part of the credibility: vector-ID collisions were caught and fixed, and the content-safety net caught a mislabeled sensitive file by reading it rather than trusting its name. The embeddings and reranking run on Cloudflare, the vector database and the search API live there too, so the retrieval path sits in one platform, one bill, one place to watch cost and latency. What the primary assistant does with that retrieval, and the second way we run the same knowledge base, is the next section.
The same assistant runs twice over the same knowledge base, with the same voice rules and the same retrieval. Only the model and how much agency it is given change. One lane lets a frontier model decide what to look up; the other runs a fixed pipeline behind an open-weights model. Running both answers the question every prospective client actually has, which is whether they need to pay frontier-model prices.
Only the model and its agency differ. Everything in the middle is identical, so when the two answers differ, nothing else can be responsible.
The question is embedded into a 1024-dimensional vector.
Twenty candidates come back, filtered by namespace and content type.
The candidates are re-scored against the actual question.
The five best chunks go to whichever model is running that lane.
| Lane A, Claude Sonnet 5 | Lane B, gpt-oss 120B | |
|---|---|---|
| Who decides what to retrieve | The model | The pipeline |
| Model calls per reply | About 4 | 1 |
| Where it runs | Anthropic | Cloudflare, open weights |
| Conversation memory | Yes | Yes |
| Citations shown | Prompted | Deterministic, built from what was retrieved |
| Answer quality | Best. Finds her real stories and places them well | Good. Occasionally looser with counts |
Lane B is a fixed pipeline by necessity, not by taste. No agent can work against Cloudflare's OpenAI-compatible endpoint, and it took direct API calls to isolate why.
| Request | Result |
|---|---|
tools array present | 200 |
Forced tool_choice | 200 |
tool_choice: required | 200 |
Assistant tool_calls plus a tool result in the conversation | 400 |
An agent asks for its final answer through a tool call, so that call lands in the history and the next request fails. Two different models failed in two different ways before the cause was found. Taking agency away from the model removes the entire failure class, which is exactly what Lane B does.
The index started at 237,328 vectors and is now 71,110. That is not a system that shrank by accident. A folder of personal notes that should never have been ingested was purged, a third-party book was removed, and low-value fragments were filtered out. A smaller, cleaner index answers better than a big one full of noise.
| What changed | Vectors |
|---|---|
| Personal notes removed (see the security audit below) | -154,540 |
| Third-party book removed | -360 |
| Low-value fragments filtered out | -11,318 |
| Live index now | 71,110 |
We measured the cleanup on an 80-chunk sample. The share of chunks carrying junk that hurts retrieval dropped to near zero.
Every control on this system exists because something failed first. That is more honest than a feature list, and it is what a careful buyer wants to see.
These run on a schedule and log to a database on every commit, so a regression turns a row red the moment it happens, in front of us rather than in front of a student.
If your business is sitting on years of documents, transcripts, or know-how that nobody can search, this is the pattern. Start with a free 20-minute call and we will talk through what it would take for your material.