A research brief, thirty minutes before the call
Decide which meetings matter by attendee domain, not by title. Make the lookahead window the same length as the schedule interval so nothing is briefed twice. Research from the company's own site and free news, keep only stories that name them, and make the brief admit what it could not find rather than filling the gap.
Five sections, three questions, one page. Read on a phone on the way into the room.
Most of a calendar does not need a brief
This is the step that decides whether the emails get read or muted. Brief everything and within three days you are ignoring a message that arrives before your standup. The filter has to be aggressive.
Judge by attendees rather than the meeting title, since titles are unreliable and domains are not:
keep only if someone is on it whose email domain
is not yours, and not a subdomain of yours
is not a free mail provider
gmail, outlook, hotmail, yahoo, icloud, proton
is not a calendar resource
[email protected]
then drop
titles matching standup, 1:1, retro, sprint,
all hands, hold, focus, lunch, PTO
meetings you declined
meetings that were cancelledThe free mail exclusion matters more than it looks. Without it a coffee chat with someone using a personal address produces a brief researching gmail.com, which reads as a broken system rather than a missing company.
When several external guests are on the call, the company is the domain most of them share. That handles the common case of two people from the prospect and one partner or consultant.
The window and the interval must match
A rolling calendar check has one arithmetic trap in it, and it is the difference between a useful system and one that mails you the same brief three times.
schedule runs every 15 minutes
brief lands 30 minutes before the call
look at meetings starting between
now + 30 and now + 30 + 15
window length == interval length
-> every meeting falls in exactly one window
-> briefed once, never missed, never repeatedDerive the window from the same configured numbers that set the lead time, so that changing when the brief arrives cannot silently break the arithmetic. If you widen the window without widening the interval, you get duplicates. If you narrow it, meetings fall through the gap and get no brief at all.
Free sources, and where they let you down
Three sources cover most of what a brief needs, and none of them need a key:
- The homepage. What they do and who they sell to, in their own words. Strip nav, script, style and footer before reading it or you will brief on their cookie banner.
- The pricing page. Often missing, and its absence is itself informative. Let this fetch fail without taking the run with it.
- Google News RSS. Free, no key, and it answers what changed recently.
News search is where this gets interesting. Company names collide with ordinary words, and the failure is not subtle. A news query for one well known payments company returned a Cincinnati Bengals headline as its top result, because the company name is also a common noun.
So filter, and be explicit about it:
keep a story only if it names the company
drop obvious off-topic categories
NFL, NBA, premier league, box office,
recipe, horoscope, weather forecast
then tell the model plainly:
some of these may be a different organisation
with a similar name, ignore any that do not
match the homepage aboveRecord how many stories were considered against how many survived. When a brief has thin news, that pair of numbers tells you whether the company had a quiet month or whether the name is too generic to search, which are different problems with different fixes.
A thin brief beats a padded one
The failure mode that matters is not a missing brief. It is a confident brief about a company whose site did not load, because you will repeat what it says out loud to the person who knows it is wrong.
Two mechanisms prevent it. First, the prompt receives only what was fetched and is told it has no other knowledge of this company. Second, and more reliably, check the output against the evidence:
if nothing was retrieved
and the brief does not say so
-> flag it as claiming detail without evidence
also require
all five sections present
at least three questions, each ending in ?
120 to 700 words
no [PLACEHOLDER] left behindA brief that opens with the site could not be read and no recent news was found is a success. It took ten seconds to read, it told you the truth, and it stopped you walking in with borrowed confidence. That is worth more than four paragraphs of plausible summary about the wrong company.
Who this is for, and what to change
Founders taking sales calls between everything else
The problem. You booked the call three weeks ago and you are opening their website while the call connects.
What to change. Nothing, this is the default case. Set the lead time to match how you actually work, which for most people is closer to fifteen minutes than an hour.
Consultants and agencies
The problem. Client calls, prospect calls and partner calls all look the same in the calendar and need different preparation.
What to change. Keep a list of existing client domains and route those to a shorter brief built from your account log rather than their homepage. You do not need to be told what your own client does.
Recruiters
The problem. Candidate calls need context about the employer, not about the candidate.
What to change. Point the research at the careers page instead of pricing, and swap the objections section for what they are likely to ask about the role.
Anyone with back-to-back external meetings
The problem. Preparation is the first thing cut, and it is invisible until a call goes badly.
What to change. Tighten the skip list hard in the first week. The instinct is to brief more meetings, and the thing that keeps this alive is briefing fewer.
The shape of it
Schedule: every 15 minutes
-> Set: your domain, where to send, lead time, window
-> Google Calendar: meetings inside the window
-> Code: keep external meetings, work out the company
-> Filter -> Loop over meetings
-> HTTP: their homepage
-> HTML: title, meta description, body text
-> HTTP: their pricing page, allowed to fail
-> RSS: Google News for the company name
-> Code: assemble ONLY what was retrieved
-> AI: write the five section brief
-> Code: reject a brief that claims what it cannot know
-> Docs: save it
-> Gmail: send it to you
-> Sheets: log itSeventeen nodes, one paid credential, no enrichment provider. Every external fetch is allowed to fail on its own without killing the run, because a company with no pricing page is normal. This is a free n8n template you can import.
Meeting prep questions, straight answers.
What should a pre-call brief actually contain?
Five things and nothing else: who you are meeting, what the company does, what changed recently, the objections you should expect, and three questions worth asking. Anything longer will not be read in the five minutes before a call, which is the only moment it exists to serve. The three questions are the part people keep, because they are the hardest thing to produce cold.
How does it know which meetings to brief?
By the attendees, not the title. A meeting is worth briefing when someone outside your company is on it, so compare each attendee's email domain against your own. That single test removes most of a calendar. Add a skip list for the meeting types that are external but never need research, and drop anything you declined or that was cancelled.
How do you avoid briefing the same meeting twice?
Make the lookahead window the same length as the schedule interval. If the workflow runs every fifteen minutes and looks at meetings starting between thirty and forty five minutes from now, each meeting falls into exactly one window. Get this wrong in the other direction, a window wider than the interval, and you will send yourself the same brief three times, which is how people turn the whole thing off.
Where does the research come from without a paid data provider?
The company's own homepage and pricing page, plus Google News RSS, which needs no key. That combination answers what they do, roughly how they charge, and what has happened recently. It will not give you headcount, funding history or org charts. If you need those, that is what a paid enrichment provider is for, and you should decide that deliberately rather than assume the free version failed.
Is a free-mail address enough to identify the company?
No, and treating it as one is a common bug. Someone joining from a gmail or outlook address gives you no company domain, and fetching gmail.com as a homepage produces a brief about Google. Exclude the free mail providers explicitly, along with calendar resource addresses for meeting rooms, which otherwise look exactly like an external guest.
Does searching the company name actually work?
Often, but not reliably, and you have to design for that. Company names collide with ordinary words. A news search for one well known payments company returned a Cincinnati Bengals headline as the top result, because the name is also a common noun. Keep only stories that name the company, drop the obvious off-topic categories, and tell the model to ignore anything that does not match the homepage it was given.
What stops the brief from making things up?
Two rules working together. The prompt gets only what was actually fetched and is told it has no other knowledge of the company. Then a check afterwards compares the brief against the evidence: if nothing was retrieved and the brief still reads confidently, it gets flagged. A brief that says the site could not be read is doing its job. One that invents a funding round is worse than no brief at all, because you will repeat it out loud.
Should the brief go to a document or an email?
Both, for different reasons. The email is what you read on a phone walking into the call. The document is what you search two months later when the name comes up again. They cost one extra node to produce together, and the archive turns out to be the half people value once a few dozen have accumulated.
How many calls did you walk into cold last week?
A community of builders shipping marketing and AI automations together.
Keep reading.
Stop retyping your call notes
Your notetaker already wrote the summary. Fire on a Gmail label so you never pay for transcription, and produce records instead of more prose.
Find who is writing cheques now
Funding announcements name the investor, the stage and the amount every weekday, for free. Score each one against your thesis and draft an intro that opens on their deal.
The host's email is in the feed
Apple's catalogue needs no API key and the contact address sits in the show's RSS. Filter out shows that stopped publishing, then draft a pitch that quotes a real episode.
Build the next one with us.
A community of builders shipping marketing and AI automations together.
