The short answer
One worked account brief, six engineering decisions.
A company brain is only as trustworthy as its boundaries. This specification walks one worked example (account A-104, two open tickets, one meeting note) through the six decisions we make before a first answer ships: the source and identity contract, which records may be calculated and which documents may only be quoted, how permissions reach the answer and are rechecked, how freshness and deletion are enforced, which evaluation cases gate the release, and who operates the system afterwards. A typical first release takes 8 to 12 weeks.
What this can change for your team
- A permission model your security lead can sign off
- Freshness and deletion handled by design, not by hope
- A release decision backed by recorded evaluation cases
01 / 06Company brain specification
1. Source and identity contract
Source and identity contract: what we decide before the first answer ships.
How we make this work
The request is: "What is unresolved for account A-104 before its renewal review?" The contract separates the customer identity from the identity of the person asking.
- Account A-104 maps to CRM account C-482 and help-desk organisation H-77 in an approved crosswalk. Each mapping keeps its source ID, verification date and owner. Similar company names alone do not authorise a join; an unmatched record stays in a review queue.
- Signed-in user U-18 maps to the source-system user and current account-reviewers group. The application checks both the account boundary and source permissions. An unmapped user or unavailable permission check receives no protected content.
- The CRM owner defines renewal_date; the service owner defines an unresolved issue as open or pending, excluding merged duplicates. Each imported record carries source_id, account_id, source_updated_at and ingested_at.
02 / 06Company brain specification
2. Records for calculation, documents for context
Records for calculation, documents for context: what we decide before the first answer ships.
How we make this work
Two approved issues are in scope: T-31 is open and T-44 is pending. A versioned query over the permitted structured rows returns an unresolved count of two. The language model does not estimate the count from retrieved text.
- Meeting note N-12, version 3, says: "The customer requested Friday delivery; operations has not confirmed." Retrieval returns that passage with its document ID, version and source link. It is evidence of a request, not an agreed delivery date.
- Expected brief: "Two unresolved issues: T-31 and T-44. Friday delivery was requested but is not confirmed in N-12 v3." The count links to its permitted record evidence; the statement links to the exact note version.
- Keep the original note in its source system. If the design indexes passages or embeddings, register those copies and their permissions too. Notes provide context; an approved record definition decides a metric. Conflicts remain visible for review.
03 / 06Company brain specification
3. Permissions that reach the answer
Permissions that reach the answer: what we decide before the first answer ships.
How we make this work
In this example, the connector can ingest more than U-18 may read. Connector access is not permission to disclose that content to the user.
- Filter structured rows and candidate document passages before they reach the model. Revalidate the source permission version before returning an answer, and withhold the answer if access changed during generation.
- When U-18 loses access to N-12, the next request must omit its passage, title and citation. Permission-sensitive answer caches are invalidated on access changes and checked again on reuse. The model is never asked to enforce access by following a prompt.
- The same boundary covers exports, search snippets and diagnostic traces. Restrict operator access to logs and avoid copying document bodies into them. A source document saying "ignore the rules" is treated as source text, not an instruction.
04 / 06Company brain specification
4. Freshness, deletion and recovery
Freshness, deletion and recovery: what we decide before the first answer ships.
How we make this work
The ticket feed has a maximum age of 30 minutes. A last successful sync at 09:00 cannot support a current-status answer at 09:45. The brief labels issue status unavailable rather than presenting the old count as current.
- Track source update time separately from successful ingestion time. A retry does not reset the freshness clock unless fresh source data was received. Show the last verified timestamp and route a missed-sync alert to the technical operator.
- A deletion event for N-12 first blocks the document from retrieval, then removes derived passages and embeddings and invalidates dependent cached answers. Reconciliation checks catch missed events; a failed deletion job keeps that source blocked until verified.
- The deletion acceptance record names every derived store checked. Backup retention and any already-exported brief have separate handling agreed with their owners; deleting an index entry is not a promise that every copy has disappeared.
05 / 06Company brain specification
5. Evaluation cases and release evidence
Evaluation cases and release evidence: what we decide before the first answer ships.
How we make this work
Run evaluation cases with a versioned fixture pack, including source snapshots, role assignments, query definitions and model configuration.
- Correctness: the baseline answer must report two unresolved issues, cite T-31 and T-44, and preserve the unconfirmed status in N-12 v3. A statement that Friday delivery is promised fails review.
- Isolation: ask as U-18 after revocation and as a user assigned to another account. Neither response, citation nor reusable cache may expose N-12 or unauthorised account records. Any disclosure blocks release.
- Recovery: simulate the 09:45 stale feed, delete N-12, replay an ingestion event and supply an unmatched account ID. Require a stale-data warning, no deleted passage, no duplicated issue and an explicit unresolved identity respectively.
- Evidence: retain each case ID, fixture version, user role, retrieved source IDs, actual answer, expected result, reviewer decision and defect reference. All required cases must pass the agreed gates; an overall quality average cannot excuse a permission failure. Business and technical owners sign the go, revise or stop record.
06 / 06Company brain specification
6. Operating ownership after release
Operating ownership after release: what we decide before the first answer ships.
How we make this work
A read-only release still needs someone responsible when a source changes. The handover assigns roles to named people before live use, not to a shared inbox with no accountable owner.
- The business owner owns the question set and accepts the briefing quality. CRM and help-desk owners approve definitions and identity corrections. The document owner maintains approved versions; the identity administrator owns group membership and revocation.
- The technical operator monitors sync age, deletion queues, denied-access checks and retrieval failures. The runbook explains how to disable a source, invalidate affected answers, notify users and verify recovery before re-enabling it.
- Changes to connectors, business definitions, permissions, retrieval or the model trigger the affected evaluation cases before release. Agree support hours, escalation, running costs and the party responsible for each task separately. Creating tasks or updating the CRM is a later, separately accepted action workflow.
Make the next decision
What to do with this
A source and identity contract for every connected system, with owners named.
A bounded answer path: approved records for calculation, permitted passages for context, sources cited.
An evaluation set covering missing records, revoked access, stale feeds and deletions, with recorded results.
A runbook and named operators for alerts, pauses, restores and change approval.
- 01
Define the source contracts
Weeks 1 to 2: record source IDs, identity mappings, permitted fields and update signals for each system.
- 02
Build the bounded answer path
Weeks 3 to 7: join approved records, retrieve only authorised passages, attach source versions and timestamps.
- 03
Prove the failure boundaries
Weeks 8 to 10: run the evaluation set against missing, conflicting, revoked and stale inputs; fix release blockers.
- 04
Hand over the operating controls
Weeks 11 to 12: agree alert routing, pause and restore procedures, change approval and support hours. Typical total: 8 to 12 weeks, USD 60k to 150k.
Want your technical team to pull this apart before you commit?
Send the specification to your CTO or IT lead with your questions. A Paloren engineer replies within one business day, and a 45-minute technical review is free before any scope is agreed.
Reply from the team within one business day. No deck, no technical brief needed.
Before we begin
Questions we get asked, answered with numbers
How long does a company brain implementation take?
A typical company brain engagement runs 8 to 12 weeks. The timeline depends on the number of sources, the complexity of joins, and the volume of documents to test.
What sources can we connect?
Structured data from your CRM, ERP, service system or reporting database. Documents from approved folders, wikis, or help systems. The sources must have APIs or scheduled data delivery. We plan which sources and fields before ingestion.
How do we handle updates to sources?
Source definitions and access rules are agreed upfront. Changes trigger re-testing of the evaluation set before release. Your business owner approves any changes to what people can see or ask about.
Can the model ever see records a user is not allowed to see?
No. Rows and passages are filtered before they reach the model, and the permission version is checked again before the answer is returned. If access changed during generation, the answer is withheld. The evaluation set includes at least 2 revoked-access cases and 1 cross-account case, and any disclosure blocks release.
Want your technical team to pull this apart before you commit?
