In active build
Socle Twin is in active build. Today each twin is built with Claude, hand in hand with our first clients and with Derivatives Academy, our first test case.
How Socle Twin builds, updates and serves an ontology-first digital twin of a small company, and where Claude does the work.
Version 1, October 2026
Socle Twin is an ontology-first digital twin of a small or mid-sized company. It has two parts that point at each other. A typed graph holds what the company is: clients, projects, invoices, people, documents and the links between them. A structured knowledge base holds how it works: rules, procedures, source documents and decisions, attached to the graph objects they govern.
Ingestion connectors read the tools the company already runs, with read-only credentials. Claude does the reading, typing and matching, and people validate what matters. Any agent, Claude or another, reaches the twin through one multi-tenant MCP gateway. The gateway is read-only by default: a write exists only as a proposed action that a person approves.
The company’s tools stay the system of record. Each value carries its provenance, each version is dated and validated by a person, and each answer cites its sources or states what is missing.
A finite, versioned set of object and link types per company. Extraction emits only what the schema allows.
Ingestion connectors hold read credentials only. Any write takes a separate path and starts after a person approves.
Source, method, validity dates and validation status travel with each value.
Merges, versions and model switches keep their lineage, so each can be audited or undone.
The path has eight stages and runs in one direction. Ingestion is read-only, so no stage after the connectors can write to a source system. Any write goes through a separate, approval-gated path (section 7). Each stage replays from the one before it. When a source changes, a new snapshot produces a new graph version (section 5).
| Stage | How it works | Invariant |
|---|---|---|
| 1. Company tools | ERP, CRM, mail, documents and spreadsheets remain the system of record. | The twin build never modifies a source system. |
| 2. Read-only connectors | One adapter per source type sits behind a replaceable interface, with a conversion contract per type. Credentials are read-only. | No business object mirrors a single connector row. |
| 3. Raw snapshots | Each pull is stored as captured, with a content hash and a capture time. | Snapshots are immutable, so later stages rerun without calling the source. |
| 4. Extraction | Claude turns snapshots into candidate objects, links and properties that fit the closed typology. | Output is validated against the schema, and each candidate points to the span it came from. Malformed output is rejected and logged. |
| 5. Typed canonical graph | Entity resolution (section 4) merges candidates into canonical objects, stored as dated versions. | Canonical ids are immutable. Source references stay attached as system and external-id pairs. |
| 6. Knowledge base | Rules, procedures, documents and decisions attach to the objects they govern (section 6). | An item without a valid attachment point is held back from publication. |
| 7. MCP gateway | Tools are generated from each tenant’s schema and served per tenant (section 7). | Read-only by default. Writes follow the separate approval path. |
| 8. Agents and clients | Claude, other MCP clients, a staff cockpit. | Any of them can be swapped without changing the twin. |
The ontology comes before the data. For each company we write a closed typology: a finite list of object types and link types, each with typed properties, identity rules and cardinalities. Extraction emits only instances of declared types. If the schema cannot place something, it goes to a quarantine list for a person to look at, and no new type appears on its own. A change to the typology is a versioned schema change that a person reviews and diffs like code.
The typology still grows, through reviewed versions only.
One client appears as a line in the CRM, an invoice header in the ERP, a short name in a spreadsheet and a sender in a mail thread. Resolution turns those mentions into one canonical object, with a score, a reason and a way back.
Accuracy is measured per client on the eval sets (section 8).
Each value is stored as a fact with its own history instead of a bare column value.
The store is bitemporal. Valid time says when something was true for the company, and transaction time says when the twin recorded it. Two questions then have exact answers: what was true on 3 March, and what did we believe on 3 March. A correction overwrites nothing. It adds a version with a later transaction time, so earlier answers can be reproduced.
A fact starts as a candidate and becomes established once a person validates it. Depending on its role, an agent sees validated facts only, or also labelled candidates. When two sources disagree, both facts are kept with their provenance.
The gateway returns each value with its provenance chain: version, source reference, snapshot, span. Before an answer ships, every cited span is checked mechanically against the source text: the quoted passage occurs at the stated location and matches its stored hash. An answer that cannot be traced says so. Missing information is a result of its own (“missing fact”, “interpretation required”), so the system abstains instead of filling the gap.
The graph says what exists. The knowledge base says how the company works, and it attaches to graph objects so that one lookup returns both.
| Item | What it is | Attaches to |
|---|---|---|
| Rules | Typed, dated and sourced. Each rule evaluates, per object, to one of four states: satisfied, not satisfied, missing fact, interpretation required. | An object type, evaluated per object. |
| Procedures | Ordered steps with owners and preconditions. | The process or object type they govern. |
| Documents | Kept verbatim. Passages are anchored by document, page, version and content hash, so a quotation can be checked. | The objects they describe. |
| Decisions | What was decided, by whom, when and why, and which earlier decision it replaces. | The object concerned. |
One gateway exposes each tenant’s twin to any MCP-compatible agent. As the only way in, it is where isolation, permissions, approvals and audit are enforced.
The gateway is a remote MCP server over streamable HTTP, with OAuth 2.1 authorization per tenant. The tenant id comes from the access token alone and is validated on every request. A session is never an authorization boundary.
Every write is a proposed action that a person approves. It runs in seven steps.
Mail and documents that the twin ingests can contain instructions aimed at a model, so the architecture limits the damage such text can do. Ingested content is treated as data and quoted as material to analyse. The tools a model sees while it extracts or answers are read-only and scoped to one tenant, and that model has no outbound channel. The gateway, not the model, computes the diff of any proposed write, and a person approves it. A model that reads tool output stays influenceable, so injected text can still bias an answer or a proposed write. That residual risk is why every write needs human approval, and it is one of the open questions (section 11).
Each tenant has its own graph and knowledge store. No query path spans tenants: the tool layer receives a tenant-scoped handle, so no shared connection exists. Source-system credentials are held per tenant, with read and write scopes kept apart. Every eval set includes cross-tenant probes (section 8).
The log is append-only and kept per tenant. It records each read, search, proposal, approval, execution and refusal with the actor, tool, arguments, returned facts and outcome, so a team member can reconstruct why an agent said or did something.
Each client twin has its own eval set, since correct means correct for that company’s data and rules. Before a twin’s model assignments change, the set is replayed on the candidate model and compared with the pinned one.
Two citation checks run. The deterministic one confirms that each cited span exists verbatim in the source. The model-graded one judges whether that span supports the claim, against a rubric, and the grader is checked against samples a person has graded. Safety cases are deterministic code.
Each step runs on the model class that fits it, and a client’s eval results tune the allocation.
| Step | Role | Model | Why |
|---|---|---|---|
| Ontology design | Proposes the typology from sample exports, documents and an interview, and lists the open questions. A person reviews every type. | Opus | Judgement-heavy, done once per company. |
| Extraction | Turns snapshots and documents into schema-validated candidates with source pointers. | Sonnet | High volume, bounded task, clear contract. |
| Entity resolution, routine | Arbitrates ambiguous pairs with a written justification. | Sonnet | Volume, with the human queue behind it. |
| Entity resolution, hard cases | Handles contested clusters, conflicting sources and escalations from the routine pass. | Opus | Few cases, and a wrong merge is costly. |
| Classification and routing | Document type, language, duplicate detection, routing into queues. | Haiku | Mechanical, latency-sensitive, cheap. |
| Knowledge authoring | Drafts rules and procedures from documents, with anchored passages. A person validates. | Sonnet | Bounded drafting with verification built in. |
| Item | What it does | Why |
|---|---|---|
| Claude Code and subagents | They write connectors, mappings, tests and each client twin. A person reviews every change. | It is the tooling we build with every day. |
| Prompt caching | The stable company-model prefix (schema, glossary, rule index) goes first and is cached. The changing part, a batch or a question, follows. | That prefix is large and identical across a tenant’s calls, within the cache window. |
The cache rests on a stable serialisation of the schema, with the breakpoint right after it. Tools sit ahead of the system prompt in the cached prefix, so each tenant’s tool list is deterministic and byte-stable. A schema or tool change invalidates the cache on purpose. A cached prefix is reused only within the cache lifetime, so a tenant with little traffic pays the cache write more often.
Socle Twin is in active build. Today each twin is built with Claude, hand in hand with our first clients and with Derivatives Academy, our first test case.
In 2027 the same pipeline becomes a plug-and-play platform.
A company connects its tools with read-only credentials. Claude agents propose the ontology, build the twin and keep it current as sources change, and a person validates what matters. One gateway serves every tenant, and evals replay automatically on each new model.
Four things stay constant: ingestion with read-only credentials, a closed typology, provenance on every field, and a person’s approval before any write.