The Problem: An Hour of Research Before Every Call

A 15-person B2B sales team at a data infrastructure company had a consistent complaint: every quality outbound call required an hour of preparation. LinkedIn for the prospect's background and recent activity. Crunchbase for the company's funding stage and investors. The company website for messaging. BuiltWith for tech stack clues. Google News for recent announcements. Job boards to understand hiring priorities. It took an hour minimum to do it properly.

The result was a painful tradeoff: reps either researched well and did fewer calls, or did more calls and showed up underprepared. Neither option was acceptable to the sales director. The reps who invested the research time had significantly better conversion rates — but couldn't scale it without burning out.

The brief was to build an agent that would take a name and company, hit every relevant source simultaneously, synthesise the findings, and push a structured sales brief into HubSpot before the rep even opened the contact record. The time budget was 90 seconds or less.

❌ Challenge
Manual research took 45–60 minutes per prospect — reps skipped it for lower-priority calls, showing up unprepared
✓ Solution
14 sources queried in parallel — full brief delivered in 90 seconds, pushed to HubSpot before the rep opens the record
❌ Challenge
Research quality was inconsistent — some reps did thorough digging, others barely checked LinkedIn. No standardised format
✓ Solution
Every brief follows the same structured format — company intel, prospect intel, pain signals, suggested openers. Consistent quality for every rep, every time
❌ Challenge
No integration with CRM — research lived in browser tabs that got closed. Insights were never recorded or searchable
✓ Solution
Brief auto-posted to HubSpot contact as a structured note — searchable, timestamped, accessible to any team member who touches the account

Every Signal That Actually Matters

The 14 sources weren't chosen arbitrarily — each one was mapped to a specific piece of intelligence the sales team said affected their call quality. If a source didn't change how a rep approached a call, it wasn't included.

💼
LinkedIn
Role history, recent posts, career signals
🚀
Crunchbase
Funding rounds, investors, stage
🌐
Company Website
Messaging, product, team size signals
📰
Google News
Recent press, announcements, coverage
🛠️
BuiltWith
Tech stack — what tools they already use
G2 Reviews
What customers say, pain points surfaced
🏢
Glassdoor
Culture signals, internal friction hints
🐦
Twitter / X
Opinions, interests, engagement style
💼
Job Boards
Hiring priorities reveal growth bets
📋
Companies House
Financials, directors, filing history
📊
Pitchbook
Investor details, deal terms, comparables
🔍
SEMrush
Organic traffic, keywords, digital health
📡
Apollo.io
Contact data, org chart, direct numbers
💡
Patents DB
IP filings reveal R&D priorities

What Happens in Those 90 Seconds

The agent isn't a sequential research bot — it fans out to all 14 sources in parallel, then uses a synthesis step to combine findings into a coherent brief. Speed comes from parallelism; quality comes from the synthesis prompt.

1
Input Validation & Entity Resolution
Name and company are validated and disambiguated. If "Marcus Holt" at "Vantage Analytics" matches multiple people, the agent uses the optional LinkedIn URL or job title to resolve to the correct individual before any research begins. Prevents the whole brief being built around the wrong person.
~5 seconds
2
Parallel Source Querying — All 14 Simultaneously
All 14 source workers fire at once using async parallel execution. Each worker has a 20-second timeout — if a source is slow or unavailable, it's skipped gracefully and the brief is generated from the remaining sources. Partial briefs are always better than no brief.
~60 seconds (parallel)
3
GPT-4o Synthesis — Raw Data into Structured Brief
Raw data from all sources is passed to GPT-4o with a tightly structured synthesis prompt. The model extracts the most sales-relevant signals, cross-references findings across sources (e.g. job posting for "data engineer" + recent LinkedIn post about pipeline problems = strong pain signal), and outputs a structured JSON brief.
~18 seconds
4
Conversation Opener Generation
A second GPT-4o pass generates 2–3 highly specific conversation openers based on the enriched brief — referencing the prospect's actual recent activity (a post, a talk, a hire) rather than generic compliments. These are the openers reps said made the biggest difference to call quality.
~5 seconds
5
HubSpot Push & Slack Notification
Structured brief posted to the HubSpot contact record as a formatted note. Owning rep pinged on Slack with a summary card and a direct link to the contact. Brief is also stored in the enrichment database for analytics — tracking which fields drove the best conversion rates.
~2 seconds

What Every Rep Receives

The output format was designed collaboratively with the sales team — they reviewed 50 drafts before the final structure was locked. Every field maps to something they said they actively used in calls.

Field What it contains Source(s)
Company overview Product, market, size, revenue signals, growth trajectory Website, Crunchbase, LinkedIn
Funding status Round, amount, lead investors, date, burn rate estimate Crunchbase, Pitchbook
Tech stack Tools currently in use, gaps relevant to your product BuiltWith, job posts, LinkedIn
Hiring signals Open roles — what they reveal about priorities and pain LinkedIn, Indeed, Greenhouse
Prospect background Career history, tenure, seniority signals, recent promotion LinkedIn, Apollo
Recent activity Posts, talks, interviews — anything they've said publicly LinkedIn, Twitter, News
Pain signals Cross-referenced indicators of problems your product solves GPT-4o synthesis layer
Conversation openers 2–3 highly specific, reference-based opening lines GPT-4o generation layer

Technologies Used

GPT-4o (OpenAI) LangChain Python / FastAPI Playwright (scraping) Bright Data Proxies HubSpot API Apollo.io API Crunchbase API BuiltWith API Slack API Redis (caching) AWS Lambda

First Brief Delivered in 6 Weeks

1
Week 1
Sales Team Discovery & Source Selection
Sat with 6 reps and watched them research. Timed each source. Identified which data points they actually used in calls vs. which they collected out of habit. Narrowed from 22 candidate sources to the final 14. Output brief structure drafted and approved.
2
Week 2–3
Source Workers + Parallel Execution Engine
14 source workers built — mix of API integrations and Playwright scrapers. Async parallel execution framework built with per-worker timeout and graceful skip logic. Entity resolution layer built and tested against 100 ambiguous prospect names.
3
Week 4
GPT-4o Synthesis & Opener Generation
Synthesis prompt iterated 40+ times against real prospect data. Sales director reviewed every output draft. Pain signal detection logic tuned specifically for the client's ICP. Conversation opener quality reviewed by top-performing reps and calibrated against their own best openers.
4
Week 5
HubSpot Integration + Slack Notifications
Brief posting to HubSpot contact records live. Slack notification card built with summary + CRM link. Enrichment history database set up for analytics. Caching layer added — previously enriched prospects are served from cache if brief is less than 7 days old.
5
Week 6
Pilot with 3 Reps, Calibration & Full Team Rollout
3 reps used the agent for one week on live prospects. Brief quality reviewed after every call — specific fields rated by reps. Final prompt calibration based on feedback. Full 15-person team onboarded. First fully-automated enrichment batch run on 200 pipeline contacts overnight.

More Calls. Better Calls. Same Team.

The first thing the sales director noticed was how reps talked about their calls. Instead of "I need to prep this one" being a reason to delay, reps started treating every contact as equally prepared. The research anxiety — the knowledge that you're going into a call underprepared — disappeared.

More prospects researched per day — same team, same hours
55min
Saved per prospect vs. manual research — every single time
28%
Increase in call-to-meeting conversion in the first 60 days

The 28% conversion uplift wasn't tracked as a primary goal — the team was just trying to save time. It emerged from the 60-day review when the sales director noticed that the same reps who had been best at manual research were no longer the only ones converting at a high rate. The agent had levelled up the whole team to the research standard of the best reps.

The client has since commissioned an extension: a batch enrichment mode that processes the entire CRM pipeline overnight, flagging contacts whose situation has materially changed since they were last touched — job change, new funding round, new hire in a relevant role.