Use case · Sales agents

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
01 · What breaks

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.

  1. 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.

  2. 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.

  3. 03

    Every team speaks a different pipeline

    One team says "qualified opportunity", another says "SQL", and the forecasting agent counts both, twice.

02 · What it's made of

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.

Leads · Shared context

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.

03 · What feeds it

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.

CRM exportsCall transcriptsEmail threadsAccount researchProposals (Google Docs)Slack deal rooms
  1. 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.add
    import 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  },});
  2. 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.add
    await 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"],  },});
  3. 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.search
    const { 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.

04 · Where it runs

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 & compliance
Deployment
  • Managed cloud

    Encrypted in transit and at rest, isolated per organization, and scoped at write time.

  • Dedicated infrastructure

    Enterprise

    Single-tenant, with VPC peering when your data cannot share a network boundary.

  • Self-hosted

    On-premise

    Run the context layer on your own infrastructure, with OpenTelemetry for observability.

Talk to us

Bring the email that should never have been sent.

The one that went to the champion who had already left.