Trust · Substrate datasheet

What runs underneath Ediccio. Disclosed.

Ediccio's brand surface leads with customer outcomes. This page is the opposite: the substrate underneath, named and measured, for the architect reading the trust page before the pricing page.

Last revised 2026-06-12 Applies to all Ediccio tenants on the default substrate.

Composition

Default substrate. By capability.

Ediccio's substrate provides two capabilities (per ADR-0001): an extract capability that turns a raw signal into structured profile observations, and an embed capability that turns text into vectors for similarity search. Each capability is pinnable per tenant; the default composition is shared across all tenants unless they opt out.

Capability Default model Substrate Region
extract · primary Anthropic Claude 4.6 Sonnet Amazon Bedrock eu-west-1
extract · fallback Mistral Large Amazon Bedrock eu-west-1
embed Amazon Titan Text Embeddings v2 Amazon Bedrock eu-west-1

The fallback is composed: a FallbackSubstrate wraps the primary and a secondary, and routes to the secondary when the primary returns a TransientSubstrateError. Both substrates are independently qualified against the same golden set (§3 below).

Better substrate is a silent product upgrade. We don't sell it as an SKU axis, we don't expose it on pricing pages, and we don't ask the customer to choose a model. We measure quality, and if a substrate change improves quality, we roll it out without changing the contract.

Region

EU-resident inference. By default.

Tenant data and inference both live in eu-west-1 (Ireland) by default. The Bedrock inference calls use the EU-routed inference profile (eu. prefix); the inference does not leave the EU under the default substrate.

Two non-EU exceptions are AWS-contract-driven and hold no tenant data: Amazon CloudFront (global edge, serves only the marketing site) and AWS Certificate Manager + Route 53 (us-east-1, DNS + cert plane; CloudFront requires its certificate to be in us-east-1). These are disclosed in the sub-processor list and processed under the same AWS DPA umbrella.

A customer on the BYO substrate option (§7) controls the region of their own provider; their region is recorded in the per-tenant DPA addendum.

Quality

Per-substrate qualification. Reproducible.

Every substrate that ships passes the published golden set (30 rows across six dimensions: intent, pain, sentiment, preferences, traditional fields, adversarial). The harness is open-source under Apache 2.0 in the evals/ directory of the public repo; the numbers below are reproducible with make eval-baseline EDICCIO_SUBSTRATE=<name>.

Substrate Last run Pass rate Precision Recall F1 Status
bedrock-claude
default extract
2026-06-08 28 / 30 · 93.3% 1.000 0.952 0.976 Qualified
fallback
Claude → Mistral composition
2026-06-11 28 / 30 · 93.3% 1.000 0.952 0.976 Qualified
bedrock-mistral
fallback secondary, standalone
2026-06-08 18 / 30 · 60.0% 0.962 0.595 0.735 Not standalone

Mistral standalone is below the qualification threshold and is not shipped as a customer-selectable extract substrate. It serves as the secondary inside the fallback composition only; the composed fallback matches the primary's score because Mistral only runs when the primary throws. Under nominal load, Claude carries every request.

The two intent recall misses on bedrock-claude are semantic disagreements between authored golden labels and substrate readings; both are under active review (intent-003, intent-004 in the golden set). Per-dimension F1 is 1.000 for pain, sentiment, preferences, traditional, and adversarial.

Sub-processors

Every AWS service we touch. Named.

Ediccio acts as a processor under Article 28 GDPR (and equivalent provisions of the UK GDPR, Swiss FADP, and analogous frameworks). The customer is the controller; they bring the end_user_id of every subject. The third parties below are sub-processors within the meaning of Art. 28(2) and (4), all of them AWS services, governed by the AWS GDPR Data Processing Addendum incorporated into the AWS Customer Agreement.

Sub-processor Service Region Role
Amazon Web Services EMEA SARL Amazon Bedrock eu-west-1 extract and embed inference
Bedrock AgentCore: Identity eu-west-1 Access-token verification at the request gate
Bedrock AgentCore: Gateway eu-west-1 MCP server hosting and tool dispatch
Bedrock AgentCore: Observability eu-west-1 Request-path telemetry
Amazon Aurora PostgreSQL eu-west-1 Tenant data plane
Amazon RDS Proxy eu-west-1 Connection pooling in front of Aurora
AWS Lambda eu-west-1 MCP + Management API handlers
Amazon ECS Fargate eu-west-1 Projection worker compute
Amazon S3 eu-west-1 DSAR export bucket; marketing-site bucket
Amazon CloudFront Global edge Marketing-site CDN, no tenant data
Amazon Route 53 us-east-1 control plane Authoritative DNS, no tenant data
AWS Secrets Manager eu-west-1 Per-tenant DB credentials + substrate API keys
Amazon CloudWatch eu-west-1 Operational logs and metrics (90-day retention)
AWS Certificate Manager (us-east-1) holds the CloudFront cert, no tenant data.

AWS does not retain Bedrock prompts or completions for model training or any other secondary use under the AWS Service Terms. Inference for an eu-west-1 caller is served from eu-west-1.

Ediccio commits to give controllers at least 30 days' prior notice of any addition or replacement of a sub-processor, via the contact established in the DPA. The full sub-processor commentary lives in the customer-facing DPA package.

Retention & erasure

Hard delete. PII-free audit record.

A data-subject erasure is a hard physical delete of the subject's rows from the tenant database, accompanied by a PII-free audit record. There is no crypto-shredding (the bytes are removed) and no soft-delete-then-purge (the operation is atomic). The audit record names the request, the requester role, and a salted hash of the subject identifier, never the subject's identifier itself.

DSAR endpoints (POST /v1/dsar/erasure, POST /v1/dsar/export, GET /v1/dsar/{request_id}) are exposed on the Management API. The customer's Consent Management Platform (OneTrust, Transcend, Ketch, or in-house) is the system of record for consent and calls these endpoints from its workflow. We integrate with CMPs; we are not one.

Verification

How we know it still works. Continuously.

Most disclosures stop at architecture. This one doesn't, because architecture without verification is a guess. Ediccio runs a seven-gate integration-verification stack that asserts the substrate is still producing the quality the datasheet claims, the request gate still enforces tenant isolation, and the DSAR flow still completes end-to-end against live AWS, not mocks.

Gate What it proves Floor
make-check Lint + types + 233 unit tests 0 failures
substrate-quality Live Bedrock run against the 30-row golden set F1 ≥ 0.95
worker-e2e Per-tenant substrate routing through the projection worker Provider matches per-tenant config
mcp-roundtrip MCP write → outbox → worker → Bedrock → observation → MCP read Round-trip succeeds; envelope shape correct
identity-gate Tenant isolation by construction handle_read cannot serve another tenant's data
fallback-path Secondary serves when primary throws TransientSubstrateError Fallback substrate qualifies; round-trip succeeds
dsar-smoke DSAR endpoints + state machine + audit trail Full erasure / export cycle completes

Cadence. The non-AWS gates run on every push, every pull request, and a weekly cron. The Bedrock-touching gates run locally on the maintainer's machine (~2.5 min, ~$1.55 per run): a deliberate choice not to put AWS credentials in CI before there's a multi- engineer team to govern them.

Audit trail. Green-run history is committed to the public repo under evals/verification-log/. As that history accumulates, the availability target in §7 will be reportable from the log itself, not from an estimate.

Availability

Not yet measurable. Deferred, not omitted.

Availability and fallback rate are not measurable yet. The verification log needs roughly eight weeks of clean history before the numbers stop being noise. The published target will land in this section once the log can back it; the expected publication window is 2026-08.

The temporary line: we don't have customer traffic and so cannot report production availability. The verification cadence above is the closest proxy until traffic exists.

BYO substrate

Bring your own model. Via Gateway.

The substrate is interchangeable by interface (per ADR-0001). A customer who needs to pin a specific provider (for sovereignty, for an existing enterprise contract, for cost reasons) configures the Gateway substrate against any OpenAI-compatible endpoint. The customer's provider becomes the customer's sub-processor, not Ediccio's. Pricing in BYO mode reflects a mechanical, published substrate-cost pass-through (ADR-0001 §5).

The contract is capability-shaped (extract, embed), not provider-shaped. There is no streaming, no tool-calling, no chat surface inside Ediccio's substrate abstraction. Those are deliberate non-features; the boundary is narrow on purpose.

Change notification

30 days. Per the DPA.

Substrate composition or sub-processor changes are announced to controllers at least 30 days in advance, via the contact established in the DPA. Model-version changes within the disclosed default (Anthropic's Claude moving to a newer Sonnet release, for example) are silent product upgrades unless they change the disclosed default substrate; if they do, the 30-day rule applies.

A dated diff log of substrate-default changes lives under this page as it accumulates.