Back to blog
CRM/ Copilot

Apr 10, 2026

An AI agent in your CRM that actually knows the deal

Most AI bolt-ons into CRMs are chat windows with no context. Your sales reps don't want a chatbot — they want a copilot that reads the account, the pipeline stage, and the last call notes before it opens its mouth.

Every CRM has a text input now. Most of them launch a chat window, dump a model behind it, and call it AI. The rep opens it, asks "what should I do next on this deal?" and gets a response that could have come from any assistant on the web. The rep closes it and goes back to the record.

The problem isn't the model. It's that the model doesn't know where it is. It doesn't know which account is open, what stage the pipeline is in, who owns the deal, or what was logged after the last call. You're paying a frontier model to guess from scratch.

The part teams keep rebuilding

Every "AI in our product" project reinvents the same scaffolding: an iframe or floating widget that doesn't talk to the host route, a context-passing layer that gets re-plumbed for every new page, a system prompt hardcoded in a config file somewhere, streaming and retries and tool-calling written from first principles. By the time it all works, the team has forgotten why they started.

Copilot lives in the route

Copilot is a web component. You put it inside the route that already has the deal record loaded, and you hand it the state you want it to read — as typed props, not as an iframe.

<wy-copilot
  agent="crm-coach"
  contextualData='<%= JSON.stringify({
    stage: deal.stage,
    account: deal.account,
    owner: deal.owner,
    lastActivity: deal.lastActivity
  }) %>'
></wy-copilot>

The agent attribute is the agent uid you configured in Weavy. contextualData is the reference data the agent reads. Navigate from one deal to another and the same component re-renders with the new data — the model knows it's looking at a different account now, at a different stage, with a different history behind it.

Instructions that swap per tenant, per route, per user

Ship a base agent, then override its instructions where it matters. Sales coach persona for the individual contributor view, manager tone for the pipeline review page, a different voice for the enterprise tenant that complained the bot was too casual.

<wy-copilot
  agent="crm-coach"
  instructions="You are a sales coach for <%= user.name %>. The deal is in the <%= deal.stage %> stage. Suggest a next action, cite account history, keep it under three sentences."
></wy-copilot>

All of it is props. No config service, no per-tenant redeploys, no forked prompts in a JSON file somewhere.

What you don't have to build

  • WebSocket streaming, retries, and token accounting.
  • The context-injection layer that keeps the model in sync with the route.
  • A prompt config surface that your sales ops team will touch anyway.

The model is yours. Claude, GPT, a self-hosted Llama — bring whatever. What Copilot ships is the surface and the plumbing, so you stop rebuilding both.

Ship the collaboration layer today

Free to start. No credit card. Your first component running in under ten minutes.

Talk to us

Questions, integrations, or just kicking the tires. Real answers from real engineers.