One account memory, however many agents touch it
The research agent found that the champion changed jobs. The outreach agent emailed the old one anyway. Both were working. Neither knew what the other knew.
The mixture
- 01 · Persistent memory
- Uses
- 02 · Current context
- Uses
- 03 · Traceable decisions
- Uses
- 04 · Shared context
- Leads
- 05 · Scoped retrieval
- Light
Every agent has its own version of the account
Sales was the first function to get a fleet of agents. It was also the first to find out they do not talk to each other.
- 01
Agents do not share what they learn
Research, outreach, call notes and forecasting each keep their own context. What one discovers, the others never see.
- 02
The CRM is a summary, not a memory
The CRM says "Stage 3." It does not say the buyer's CFO objected to annual billing on the last call, which is exactly what the next email needs to know.
- 03
Every team speaks a different pipeline
One team says "qualified opportunity", another says "SQL", and the forecasting agent counts both, twice.
Mostly shared context. Then three others.
Every application on Alchemyst is a different mixture of the same five jobs. That mixture is what makes this a different piece of software from the one next to it, even though the API underneath is identical.
One version of the business, however many agents read it
Every agent reads and writes the same account context, scoped by account and team. What the call agent hears is available to the outreach agent on its next turn, and every agent resolves pipeline terms to the same definition.
- What one agent learns, the next one knows.
- Pipeline terms mean one thing.
- Scopes keep territories separate.
Uses · Persistent memory
The buyer's objections, remembered
Objections and preferences from every call are written back to the account.
Uses · Current context
The deal as it stands
Superseded pricing and old proposals are subtracted before the agent drafts.
Uses · Traceable decisions
Why this email said that
Every drafted message carries the calls and notes it drew on.
That is four of the five. The fifth, scoped retrieval (intersection, subtraction and ranking decide what enters the window, not similarity alone), is what leads in Research agents, Coding agents and Voice AI instead. Same API, different mixture.
The sources you already have
Bring sources in through the data-source integrations (PostgreSQL, MongoDB, Google Docs, Google Sheets, Amazon S3), an n8n workflow, or a direct context.add call. Each one lands scoped, so retrieval can intersect it with everything else.
01 · Ingest
Scope what you ingest
Every document lands with a groupName: the sets it belongs to. Those sets are what retrieval intersects later, so the structure you choose here is the precision you get there.
context.addimport AlchemystAI from "@alchemystai/sdk";const client = new AlchemystAI(); // reads ALCHEMYST_AI_API_KEYawait client.v1.context.add({ context_type: "resource", scope: "internal", source: "calls", documents: [{ content: "CFO objected to annual prepay; prefers quarterly billing. New champion is Priya (VP Ops). Previous champion left in August.", }], metadata: { fileName: "acme-discovery-2026-09-12.txt", groupName: ["sales", "acct_acme"], // the sets this belongs to },});02 · Write
Pin what the pipeline words mean
Shared context only helps if agents agree on the words. Store the definitions sales leadership owns, once, and every agent reads the same ones.
context.addawait client.v1.context.add({ context_type: "instruction", scope: "internal", source: "revops", documents: [{ content: "A qualified opportunity has a confirmed budget owner, a timeline under two quarters and a completed discovery call. SQL is an alias, not a separate stage.", }], metadata: { fileName: "definition-qualified-opportunity.md", groupName: ["sales", "definitions"], },});03 · Search
Search before drafting
Search intersects the scopes, subtracts superseded and duplicate content, and ranks what survives. Only that reaches the model, and the whole decision is recorded as a Context Trace.
context.searchconst { contexts } = await client.v1.context.search({ query: "Draft a follow-up to Acme after the pricing call", scope: "internal", similarity_threshold: 0.8, minimum_similarity_threshold: 0.5, metadata: { groupName: ["sales", "acct_acme"] }, // ∩ narrow scope});// − superseded, deduplicated → ranked → into the window// Every search is recorded as a Context Trace.const reply = await llm.respond(message, { context: contexts });
npm install @alchemystai/sdk or pip install alchemystai, both ship the same client. Full reference in the docs.
Deal context is competitive intelligence
Pricing, discounts and buyer objections are exactly what competitors would like to see. Keep them scoped per account and team, with SSO in front of every agent that can read them.
Security & complianceManaged cloud
Encrypted in transit and at rest, isolated per organization, and scoped at write time.
Dedicated infrastructure
EnterpriseSingle-tenant, with VPC peering when your data cannot share a network boundary.
Self-hosted
On-premiseRun the context layer on your own infrastructure, with OpenTelemetry for observability.
The same API, a different mixture
Each of these leads with a different job, pulls from a different set of sources and needs a different call. All of them, by job.
Bring the email that should never have been sent.
The one that went to the champion who had already left.