1
Define your AI market
Create the product in Epode, open AEO, and enter the public market truth:
brand, primary domain, audience, topics, and competitors. Epode builds discovery, evaluation, decision, and
head-to-head queries from those inputs. Customer prompts and private conversations are not imported.
2
Review the evidence ladder
Confirm that the query portfolio covers the buying journey. The dashboard labels answer visibility as
synthetic evidence, crawler and referral data as observed traffic, confirmed agent behavior as protocol
evidence, and business results as company evidence. A collection layer that is not connected remains marked
as not running.
3
Connect first-party evidence
Copy the product’s shown-once server key into your secret manager:Never put this key in browser code, a mobile app, an agent configuration, source control, or logs.
4
Install Epode once
/_epode/v1/enrichment/consent and /_epode/v1/enrichment/answers routes. The agent never needs an Epode
account, key, plugin, or direct write to an unfamiliar domain. Put rejecting product authentication in the
authenticate option—not in middleware above Epode—so the adapter can bypass it only for those two exact,
capability-authenticated relay routes.5
Use permitted context
contextFor safely combines company-authenticated identity with the bounded ephemeral continuation header,
when one exists. It returns an empty, unavailable context instead of failing the product when Epode is down.6
Measure the outcome
7
Run a real customer journey
First call the product as a fresh anonymous or known customer. The response preserves the original fields and
adds
_epode.customerContext. A capable agent finishes the product task, asks only the returned permission
question when required, and submits bounded context through the same-origin route. Call the product again and
verify that the permitted context changes the result. Finally submit the business outcome.The enrichment lookup is on this selected response path, with a 250 ms timeout by default. The original
response is returned unchanged on timeout or failure. Tune timeoutMs to your latency budget and monitor
timeout warnings.Identity states
For the last row, the response tells the agent to return
Epode-Context-Interaction on the immediate retry of
that same product operation. customer.contextFor(req) validates and reads it automatically. This handle does
not create identity or continuity across unrelated interactions, products, or later visits, and expires with the
enrichment request.
Use opaque internal IDs from verified company state. Never send names, email addresses, prompts, raw request
content, bearer tokens, or agent-supplied identity.