Use case · Customer success

Handoffs that carry the account, not a summary of it

Sales promised a custom integration in the last week of the deal. Onboarding found out in week three, from the customer, on a call that was supposed to be a kickoff.

The mixture

01 · Persistent memory
Uses
02 · Current context
Light
03 · Traceable decisions
Uses
04 · Shared context
Leads
05 · Scoped retrieval
Uses
01 · What breaks

Every handoff loses something

An account passes through four teams and at least as many tools in its first year. Each hop drops a little context.

  1. 01

    Promises live in the wrong system

    The commitment was made in an email thread the success team cannot see. The handoff doc summarises the deal, and summaries drop the awkward parts.

  2. 02

    Health scores without reasons

    The dashboard says the account is amber. It does not say the champion is on leave and the admin has opened four tickets about SSO.

  3. 03

    Renewal starts cold

    Eleven months of context across support, success and product sits in four tools. The renewal agent reads none of it and opens with a discount.

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

Sales, onboarding, support and renewal agents read and write one account context. Promises, escalations and product feedback are there for whoever touches the account next, scoped so each team sees what it needs.

  • Commitments survive the handoff.
  • Health comes with reasons.
  • Renewals start from the whole year.

Uses · Persistent memory

The customer's goals, remembered

Stated goals and success criteria stay with the account from kickoff to renewal.

Uses · Traceable decisions

Why the agent flagged risk

Every risk flag carries the tickets, calls and notes behind it.

Uses · Scoped retrieval

What matters for this call

Account and topic scopes are intersected, so QBR prep pulls the right year, not the whole history.

That is four of the five. The fifth, current context (superseded versions are subtracted before the model ever sees them), is what leads in Employee support, Contract & legal ops and Financial ops 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.

CRMSupport ticketsCall transcriptsProduct usage (PostgreSQL)Onboarding plans (Google Docs)Slack shared channels
  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: "sales-handoff",  documents: [{    content: "Committed at close: Workday integration by end of Q1, a dedicated onboarding manager, SSO at no extra cost.",  }],  metadata: {    fileName: "globex-commitments.md",    groupName: ["cs", "acct_globex"],   // the sets this belongs to  },});
  2. 02 · Write

    Write the escalation where everyone can read it

    Context only survives a handoff if it is stored against the account, not in the inbox of the person who noticed it.

    context.memory.add
    await client.v1.context.memory.add({  sessionId: "acct_globex",  contents: [{    role: "system",    content: "Risk: admin opened 4 SSO tickets in 2 weeks. Champion on leave until Oct 14. Renewal owner notified.",  }],  metadata: { groupName: ["cs", "acct_globex", "risk"] },});
  3. 03 · Search

    Search before preparing

    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: "Prepare the QBR for Globex",  scope: "internal",  similarity_threshold: 0.8,  minimum_similarity_threshold: 0.5,  metadata: { groupName: ["cs", "acct_globex"] },   // ∩ 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

The account history is the customer's history

Success context mixes contract terms, usage data and people's names. Keep it scoped per account, exportable when the customer asks, and deleted when the relationship ends.

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 handoff that dropped something.

The one the customer had to remind you about.