Research Agents
Outcome: one agent column answering an open question per row, with its sources visible and its accuracy measured against rows you verified yourself.
- Surface
- Sync GTM app
- Level
- Beginner
- Uses
- AI research agent
- Credits
- ~1–2 per row
- Prerequisite
- Lesson 03
Agent or scraper?
| Reach for a scraper when | Reach for an agent when |
|---|---|
| You know the exact URL | The answer could be anywhere |
| You want the literal text | You want a judgement |
| The page shape is stable | Every company presents it differently |
| Cost matters more than flexibility | Coverage matters more than cost |
| Failure means empty | Failure means confidently wrong |
That last row is the whole reason this lesson is careful. A scraper that fails gives you nothing, which is visible. An agent that fails gives you a fluent, plausible, incorrect answer, which is not.
Reference: AI agents, Research.
What an agent does per row
Reads the input you gave it
A domain, a company name, a person, a question. Everything it does downstream depends on this being right.
Decides what to look at
Fetches pages — the site, sometimes search results, sometimes several pages in sequence.
Reasons over what it found
Combines what it read into an answer.
Returns in the format you asked for
Which is your responsibility to specify. Absent a format, you get prose.
The middle two steps are why it costs more than a scrape, and why it can answer questions a scrape cannot.
Give it a starting point
An agent with only a company name will search, and search results are noisy — wrong company, outdated pages, a competitor with a similar name.
Always pass the domain. It anchors the agent to the right entity and cuts the wrong-company failure mode almost entirely.
Better still, pass what you already know:
Company: {{company_name}}
Website: {{domain}}
Industry: {{industry}}
Question: <one question>Context you already paid for is free to include and materially improves the answer.
Never let an agent resolve the company itself when you have a domain. “Find the pricing for Apex” will happily return pricing for a different Apex, and nothing in the output will indicate that it did.
Questions agents are good at
| Good | Why |
|---|---|
| ”Does this company sell to businesses or consumers?” | Judgement over several pages |
| ”What is their primary product category?” | Synthesis, constrained output |
| ”Do they mention any of these competitors: X, Y, Z?” | Search across a site |
| ”What market segment do their case studies target?” | Reading between pages |
| ”Have they announced anything in the last 90 days?” | Recency, multiple sources |
Questions they are bad at
| Bad | Why | Use instead |
|---|---|---|
| ”How many employees?” | A database knows this precisely | enrich_organization |
| ”What is their revenue?” | Not public for private companies | Modelled revenue, as a band |
| ”Are they a good fit for us?” | Requires knowing your business | Score from facts you collected |
| ”Tell me about this company” | No constraint, unusable output | One specific question |
| ”What is their email?” | Wrong tool entirely | find_work_email |
The pattern: agents are for judgement, databases are for facts. Asking an agent for a fact a database holds costs more and is less accurate.
Read its work
Whatever the surface offers — sources, intermediate steps, the pages it read — look at it on the first ten rows. Two things to check:
- Did it read the right company? The single most common failure.
- Did the answer come from the source, or from the model’s prior knowledge? An answer with no supporting page behind it is a guess with good grammar.
Do this now
Write one question
Something a scraper cannot answer, that matters to your qualification.
Build the input block
Company name, domain, and anything else you already have.
Run on ten rows you can verify
Companies you know or can check in five minutes.
Read the sources
Check the agent read the right company on all ten.
Score accuracy
Right, wrong, and unknown. Count all three.
Fix the input before the prompt
Most first-run errors are wrong-entity errors, and the fix is the domain, not the wording.
Compare against a scrape
If a scrape of one page would have answered it, use the scrape — it is cheaper and it fails visibly.
Check your work
- The agent receives a domain, not just a name
- You verified the entity was correct on ten rows
- You have an accuracy count, not an impression
- You confirmed a scraper could not have answered it more cheaply
Where this breaks
Agents do not return errors. Asked something unanswerable, they answer anyway — fluently, in the right format, with a plausible value. Scaled to 5,000 rows, that produces a column that looks complete and is partly fiction, and the first person to notice is usually a prospect. Every agent column needs an explicit “unknown” option in its instructions, and an unknown rate you actually look at. Lesson 06 is entirely about this.
Further automation
Once an agent column is trustworthy, its answer belongs in the fit score rather than just in a cell. A researched judgement — “sells to enterprise”, “already integrates with our category” — is a sharper qualifier than any firmographic, precisely because nobody else’s list has it.
Next lesson
06 — Writing research prompts, the craft that turns an agent from interesting into reliable.
Reference for this lesson: AI agents, Research, AI integrations, enrich_organization.