The lifecycle at a glance
1. The initial read
The instant demo crawl (/try)
When you paste a URL on animam.ai/try, the crawl runs on Cloudflare Browser Rendering — a real headless browser, off our infrastructure:
- JavaScript is rendered. Single-page apps and JS-injected content are read like a visitor would see them.
- Up to ~8 pages are fetched per demo, priority-ordered: pricing, services, contact and about pages are preferred over blog archives.
- Each page is converted to markdown and becomes corpus entries, and a profile of the business (what it sells, to whom, in which tone) is synthesized for the agent’s system prompt.
- Pages behind authentication, and content only reachable through interactions (open-a-modal pricing, configurators) are not captured — add those by hand or over the API.
Other ways in
2. Curation — contradictions, old content, and who arbitrates
The honest answer to “what does the agent do with contradictory content?” is: it doesn’t arbitrate — you do. The crawl seeds the corpus; the corpus is then yours:- Every entry is editable and deletable in the dashboard or over the API.
- Priority and segments let you rank entries and scope them to parts of your site (different pages → different context).
- If two prices coexist because an old page still says the old price, the fix is curation: delete the stale entry, or fix the source page and resync.
3. Staying fresh — auto-synced sources
You can declare up to 10 source URLs per tenant (CorpusSource). Each source is re-fetched:
- daily (server-side job), or
- on demand —
POST /tenants/{slug}/corpus/sources/{id}/sync, from the dashboard, or by asking your own agent over MCP.
- It is cheap and unlimited — freshness doesn’t consume a browser-rendering quota.
- It does not execute JavaScript. For JS-only content, use the API, the bulk upsert, or the WordPress plugin instead — those push content rather than pull it.
4. Retrieval at answer time — two-tier, deterministic
At chat time the agent uses a two-tier corpus:- Tier 1 — summaries in the system prompt. Every entry’s summary is visible to the agent on every turn. It always knows what it knows.
- Tier 2 — full content on demand. When a summary looks relevant, the agent calls the
EXPLORE_CORPUStool to fetch the entry’s full text before answering.
- Deterministic: the same question finds the same entries. No vector-similarity surprises, no silent index drift after a resync.
- Transparent: when an answer is wrong, you look at the entry, fix the text, done. There is no opaque embedding space to debug.
- Language-agnostic: works identically in any language your corpus is written in.
Testing it yourself
Before paying, measure rather than trust:- Build a demo on your real site (
/try) and ask questions whose answers live on different pages. - Ask something not on your site — the agent should say it doesn’t know or escalate, not improvise.
- Add a corpus entry over the API and ask again — the change is live on the next message (summaries are rebuilt per conversation turn).
- Declare a source URL, edit the target page, trigger
POST .../sources/{id}/sync, and verify the answer changed.