Subscription quantity
The billing system.
Tech integration and data
We name the source of each fact, keep the permission attached to it, and put the index in an account you control.
Source of truth
Before any index is built, the design says where each fact the workflow needs lives, and which way a conflict resolves. The model is not a place facts are stored.
The billing system.
The contract.
The ticket tool.
The CRM.
Ingestion and identity
These folders, these ticket views, these tables, refreshed on this cadence. Credentials, human-resources files, material under legal hold, and anything the workflow does not need stay out. A document that arrives later does not enter the index because it happens to sit nearby.
Passages, embeddings, and the metadata that make them safe to retrieve, including source, timestamp, and the permission of the original, sit together. Retrieval checks that permission for the person asking, before the model sees a passage.
It is not an anonymized form of the document and it is not a security control. A shared “company knowledge base” that ignores who could have opened the file is a defect, even when the answers sound right.
Knowledge graphs
Search over a named corpus answers “what does the policy say.” A graph answers “how these records connect”: which contract covers this product, which account owns this invoice, what depends on this service. Most first systems at this size do not get one. Building the second before the first has failed an evaluation is how a small company acquires a system it cannot feed.
When a graph is in the path, the schema stays small. Entities and edges point back at the source record and carry a permission. Extraction the model proposes is reviewed before it is treated as a fact. The graph is rebuilt from the source, and every hop on it is authorized again. A graph nobody maintains is removed.
Movement between systems
Where the workflow has to read or write a system you already pay for, the integration is built to be unremarkable.
The same instruction applied twice produces the same record once.
A failed call is retried against a key, not against hope.
What could not be delivered waits where someone will notice it.
Held in your secret manager, limited to the one thing it does.
Where your data goes
The site states the rule. A vendor matrix would be stale in a quarter.
The CRM, mailbox, ticket tool, drive, and database remain where you already keep them. Birdeye does not become a second copy of the business.
Often in the database you already run. A separate vector host is a subprocessor, and adding one is a decision recorded in the design.
The retrieved passages and tool results for that question. Not the corpus, not credentials. The commercial APIs we use do not train on customer content by default; their retention windows and zero-retention arrangements are a term of the design. When your data cannot accept the default, the design uses an approved zero-retention arrangement or a model hosted inside your cloud account, or that data is not sent.
Architecture notes, the runbook, and the decision log stay with the firm and are written so they contain no raw customer content. Samples for the evaluation set stay in your project. Working copies of production data do not live on personal machines or in personal chat tools.
How it is protected
Questions
If yours is not here, ask. We answer plainly, including when the answer is that this is not the right engagement.
Most first systems at this size do not. Search over a named corpus answers “what does the policy say.” A graph answers “how these records connect.” We build the second when a measured task has shown the first cannot hold the relationship still, and we keep the schema small.
In an account you own, often in the database you already run. A separate vector host is a subprocessor; adding one is a decision recorded in the design, not a library install.
At request time, a bounded context: the retrieved passages and the tool results for that question. Not the corpus. Not credentials. The design names the vendor, the region, and what that product retains.
Then the design chooses a path that carries the constraint: an approved zero-retention arrangement on an eligible endpoint, or a model hosted inside your cloud account. If neither is available, that data is not sent.
Retrieval is filtered by the caller’s existing permissions before the model sees a passage. The index inherits the permission of the source object. A shared knowledge base that ignores who could have opened the file is a defect, even when the answers sound right.
No. It is the work of connecting the systems the model depends on: a named corpus, idempotent writes, retries that do not double-apply, a dead letter a person can see. A general implementation of your CRM or a warehouse program is a different engagement.
We will write the source-of-truth table and the corpus list before anything is indexed.