All articles

We shipped an agent that briefs every client meeting before you walk in

·7 min read

Look at tomorrow's calendar. Pick the first external meeting on it. Now, without opening Attio, answer three things: what stage is that deal in, what did you promise on the last call, and what question is still open.

Most people cannot. The answer is not hard. It is just spread across an email thread, a call recording, a deal record, and a task nobody reopened. Pulling it together is ten minutes of work, and ten minutes across a day of calls is an hour you do not have at 9am.

So prep gets skipped. You walk into the call with a name and a company, re-ask something the customer already told you, and miss the thread that was actually open.

We built an agent that does the reading. We call it Meeting Prep. Every evening it reads tomorrow's calendar, links each external meeting to its record in Attio, gathers the history, and writes a six-section brief that lands in Slack before you log off.

This post is what it reads, what it writes, how it runs, and how to put it on your workspace.

Why prep is the work that never gets scheduled

Meeting prep has a scheduling problem. The meeting is on the calendar. The prep is not. It is the work you are supposed to do in the gaps, and the gaps fill up.

When prep does happen it is rushed. Five minutes before the call you open the deal, skim the last note, scan the email thread, and hope you caught the important part. You usually catch the recent part, which is not the same thing. The objection raised three calls ago and never closed does not show up in a five-minute skim.

A good prep doc is not hard to write. It is just work, and it is the same shape of work before every call. That is the kind of job an agent should absorb.

What the agent reads

Each evening the agent runs one pass.

It reads tomorrow's calendar and looks at every event. It splits attendees into internal and external by email domain. A meeting with no external attendee is an internal sync, and it is skipped. For every external attendee it searches Attio for a matching Person, then resolves the linked Company and the open Deal. A meeting it cannot link to a record is skipped too. The agent only preps real external meetings with a customer behind them.

For each meeting that links, it pulls the context bundle:

  • Recent emails on the record, within a lookback window you set.
  • The last call recording.
  • The last meeting.
  • The deal: stage, value, days in stage, owner.
  • Open tasks on the deal.

That is the same set of tabs you would open by hand. The agent opens all of them, for every meeting, every night.

The six-section brief

The agent turns each bundle into one prep doc with six sections.

  1. Meeting. Time, and who is in the room, with their roles.
  2. Deal snapshot. Stage, value, days in stage, owner. Where this stands at a glance.
  3. Recent context. What the emails and the last call actually covered, and the questions left open.
  4. Flags. Unanswered questions, stalled items, anything raised twice and never resolved. The things you do not want to walk past.
  5. Talking points. Two or three, each tied to something in the history. Not generic advice. Points specific to this customer.
  6. Suggested agenda and recommended outcome. A shape for the call and the result worth aiming for.

One rule holds the whole thing together: every claim traces to something on the record. The agent does not invent a quote or a history. If the record is thin, the brief says so plainly instead of padding. You are reading a summary of what is actually known, not a guess dressed up as prep.

Where the brief lands

The brief is delivered two ways.

It arrives as a Slack DM to the meeting owner the evening before. The prep is waiting before the day starts, not chased during it.

It is also saved as a note on the Attio record. That matters more than it sounds. When the prep lives on the record, the rep, the manager, and anyone who joins the call see the same brief. Prep stops being something locked in one person's head and becomes part of the deal's history.

How it runs

Meeting Prep ships as a Claude Code skill. The customer installs it once, schedules it once, and never touches the infrastructure again.

The runtime stack is short:

  • color:var(--color-text-heading)]">The skill is a markdown file in a public GitHub repo at [github.com/gmaramigin/attio-meeting-prep-skill. No Python runner. No Anthropic API key. No server to host.
  • The readers are MCP connectors already on your Claude Code: the Attio MCP for records, emails, calls, and tasks, and the Google Calendar MCP for tomorrow's events. Delivery goes through the Slack connector.
  • The schedule is /schedule inside Claude Code. The run happens as a Claude Code routine on Anthropic's cloud, so the agent fires every evening whether or not anyone's laptop is open.

The customer's Claude Code subscription is the entire runtime. We do not host the agent. We do not hold an API key. We do not see your calendar or your pipeline. If we disappear tomorrow, the agent keeps running.

This is the rule for every agent we ship. Deal Focus works this way. Pipeline Hygiene works this way. The customer owns the runtime, the data, and the schedule.

Why an agent beats a reminder

Your calendar already nudges you. A reminder pops up, the meeting turns yellow, you get an email an hour before. None of it does the prep. A reminder tells you a meeting exists. You already knew that.

You can also prep by hand, and for one important call you should. The problem is the day with eight calls on it. Prep that depends on you having a free ten minutes before each one is prep that does not happen on a busy day, which is exactly the day you needed it.

The agent does not get busy. It reads every linked meeting on tomorrow's calendar at the same depth, the night before, and hands you the brief. A reminder makes the meeting visible. The agent makes you ready for it.

What it costs

Build. A one-time build inside your workspace. The skill installed on your Claude Code, the company domains and lookback window set, the calendar connected, the Slack delivery wired, the schedule live.

Run. An optional monthly retainer if you want us tuning the brief format and adjusting what the agent flags as your team's calls change.

Claude Code consumption. The agent runs on your existing Claude Code subscription. No separate Anthropic API key. No usage-based bill from us.

Pricing for both options is on the pricing page.

How to install

Three steps if you want to install it yourself.

  1. Clone the skill repo into your Claude Code skills directory. git clone https://github.com/gmaramigin/attio-meeting-prep-skill ~/.claude/skills/attio-meeting-prep-skill.
  2. Connect the MCPs for Attio, Google Calendar, and Slack on your Claude Code. Each takes about five minutes the first time.
  3. Schedule the run. Inside Claude Code: /schedule "Run the attio-meeting-prep-skill in scheduled mode" --cron "0 17 * * *". That is 5 PM every day in your local timezone.

If you want it live this week without doing the install yourself, book a call and we will set it up on your workspace.

Start here if you prep in the hallway

Every team says it prepares for client calls. Most prepare in the hallway, on the way to the room, from memory.

The fix is not more discipline. Prep that competes with a full calendar loses, every time. The fix is to take the prep off your plate and put it on something that does not get busy. Reading one customer's history is ten minutes. Reading every customer's history, every night, before every meeting, is an agent.

If you run Attio and your calls keep starting cold, Meeting Prep is a good one to ship next.

Need help with your Attio setup?

We migrate teams, build data models, wire automations, and train Claude agents inside your workspace. Discovery call is free.

Book a free discovery call