Contact Us

Work / AI Agents / Sourcebook

Sourcebook Answers with sources, or says it does not know.

A knowledge assistant for one team. It answers only from your documents, shows the exact source for every answer, and says so when the documents do not contain the answer. This page shows what it does and how it is built. Every real engagement is fitted to your documents, systems and rules.

QuestionsSample data
QuestionResultWhy
Topic in the documentsAnsweredQuote, page and section shown
Topic not in the documentsNot foundSays so, shows the closest passages
Unknown product codeNot foundWill not guess
Request to guessDeclinedAnswers only from the documents
The pipeline

How one question travels through it.

Documents are indexed once. Each question is searched, answered from the passages found, and checked in code before anyone sees it.

01IngestManifest, checksumsand page ranges02Extract and labelText by page; printedpage numbers verified03SplitPassages stay withina page, with headings04SearchKeyword and semanticsearch together05AnswerModel sees only theretrieved passages06Verify in codeSource retrieved, quoteand numbers present07Show or refuseAnswer with sources, or"not found"08MeasureQuestion set with an answerkey, incl. unanswerableSteps 1 to 3 run when the documents change · the model is used only in step 5
Fig. 1
  1. IngestA manifest lists each document with its checksum and the pages to index. A changed file fails the check instead of being quietly re-indexed.
  2. Extract and labelText is read page by page. Printed page numbers are verified against the page itself.
  3. Split into passagesPassages stay within a page and keep their section heading.
  4. SearchKeyword and semantic search together, so exact codes and loose wording both match.
  5. AnswerThe model sees only the retrieved passages and must cite them.
  6. Verify in codeEach cited source must have been retrieved, each quote must appear in it, each number must appear in the cited text.
  7. Show or refuseA verified answer with sources, or "not found in these documents" with the closest passages marked as not an answer.
States

What can happen to a question, and where it can go next.

Weak evidence and failed verification both end in a clear "not found". Technical failures are shown as errors, so a refusal always means the documents did not say.

questionsearchingansweringverifyinganswerednot founderrorA model outage or unreadable output is an error. It is never shown as a refusal.
Fig. 2
The system

A small set of parts, and a verifier at the end.

The model never talks to the user directly. Whatever it writes passes through the verifier first, and the model can be local or hosted without changing anything else.

SOURCESYour documentsPDFs, with checksumsand page rangesINDEXSearch indexPassages with page and section;keyword and vectorAPIWeb APIQuestion limit, rate limit,daily request capPEOPLEWeb interfaceAnswer, sources, link tothe original pageCLIIngestionChecksum, page labels;repeatableONE SEAM FOR THE MODELLanguage modelLocal (Ollama) or hosted;sees only retrieved textCODEVerifierSource retrieved, quote present,numbers presentDashed: ingestion, run when the documents change
Fig. 3
What it does

The parts that do the work.

Citations you can check

Document, printed page, section, the quoted words, the full passage and a link to the original page.

A clear "not found"

Absent topics, unknown product codes and requests to guess get a refusal, not an invented answer.

Honest errors

A model outage or unreadable output is shown as an error. It is never presented as a refusal.

Spend and abuse controls

A cap on question length, a per-minute rate limit and a hard daily request cap.

Rules it keeps

Written down first, then enforced in code.

  • Answers come only from the indexed documents. Nothing is added from the model’s general knowledge.
  • An answer is shown only if it passes the checks. Citation retrieved, quote present, numbers present.
  • It starts with one team, not the company. A narrow collection is easier to get right and to check.
How it is built

Plain parts, chosen to be swapped.

Python (FastAPI) · hybrid keyword and vector search · local model through Ollama, or a hosted model · accessible web interface

Your data, your decision

Where your data lives, and which model ever sees it, is your decision. We design to it.

It runs with a model on your own machine, so documents and questions never leave it. If you prefer a hosted model, the same code calls one in the region you choose, with the key held in your environment.

  • In your own cloud account, in the region you name.
  • On your own servers, with nothing in our hands.
  • With a language model that runs on your hardware, so no data goes to an AI provider.
  • With a hosted model in a region you approve, under the terms you choose.

Australia

The Privacy Act 1988 and the Australian Privacy Principles. Principle 8 covers sending personal information overseas: the sender stays accountable for how it is handled there. Some sectors and government work require data to stay onshore.

New Zealand

The Privacy Act 2020. Information privacy principle 12 limits disclosing personal information to a body outside New Zealand unless it is protected to a comparable standard or the person has agreed.

European Union

The GDPR. Moving personal data outside the EEA needs a legal basis for the transfer. Hosting and model endpoints inside the EU avoid the question.

United States

No single federal privacy law. State laws such as California’s CCPA, and sector rules such as HIPAA for health and GLBA for finance, decide what applies. Contracts often require US-only processing.

This is a summary to explain how we work, not legal advice. Your own counsel confirms what applies to you, and we build to what they decide. More on the privacy page.