Skip to Content
CoursesResearch & Web Scraping06 Writing research prompts

Writing Research Prompts

Outcome: a research prompt that returns a valid, consistent value on every row, tested against a labelled set you built yourself.

Surface
Sync GTM app and MCP server
Level
Beginner
Uses
AI research agent
Credits
~10 across several test iterations
Prerequisite
Lesson 05

The six parts

Every reliable research prompt has these, in this order. Missing any one produces a specific, predictable failure.

Context

What the row is. Company name, domain, anything relevant you already hold.

Missing it: the agent researches the wrong company.

The question — exactly one

If the word “and” appears in your question, it is two columns.

Missing it: answers that address one part and ignore the other, inconsistently.

The source instruction

Where to look. “Using their website at {{domain}}” or “Using their careers page”.

Missing it: answers from the model’s memory, which may be years old.

The output format

The allowed values, listed explicitly, or a word limit.

Missing it: prose you cannot filter on.

The abstain instruction

“If you cannot determine this from the source, answer Unknown.”

Missing it: confident guesses indistinguishable from findings. This is the most important line in the prompt.

The suppression instruction

“Return the value only. No explanation, no preamble.”

Missing it: “Based on my analysis of their website, it appears that…” in every cell.


A template

Company: {{company_name}} Website: {{domain}} Using the company's website, determine whether they sell primarily to businesses or to consumers. Answer with exactly one of: B2B, B2C, Both, Unknown. Use Unknown if the website does not make this clear. Return the value only, with no explanation.

Six parts, ten lines, and it will outperform a paragraph of instructions almost every time.


Constrained beats open, always

OpenConstrained
”What does this company do?""What is their primary product category? Answer in three words or fewer."
"Who are their customers?""Which segment do their case studies target? Answer: SMB, Mid-market, Enterprise, Mixed, Unknown."
"Are they growing?""Do they list more than 10 open roles? Answer: Yes, No, Unknown.”

Constrained answers can be filtered, sorted, scored and counted. Open answers can only be read by a person, which defeats the purpose of running them 5,000 times.

If you genuinely need colour for a message, take two columns: a constrained value you filter on, and a one-sentence evidence field you quote from. Do not try to get both out of one column — you will get neither reliably.


The abstain instruction

The single highest-leverage line in any research prompt, and the one people leave out.

Without it, a model asked an unanswerable question produces an answer, because that is what it does. With it, you get a value that means “no evidence” — and a rate you can watch.

Read the Unknown rate on every run:

Unknown rateReading
0%Broken. The abstain path is not firing.
Under 10%Either an easy question or a suspiciously confident model — spot-check
10–30%Healthy for a real question
Over 40%The source cannot answer it. Change the source or the question.

Testing properly

Build a labelled set

Twenty rows where you know the answer. Include hard cases and at least three where the answer genuinely is not available.

Run and score

Correct, incorrect, unknown. Score the unavailable rows as correct only if they returned Unknown.

Change one thing

One prompt element per iteration, against the same twenty rows. Changing three things tells you nothing about which helped.

Stop at 90%

Above 90% correct with a plausible unknown rate is usable. Chasing 99% on a research column is not worth the iterations.


Five rewrites that fix most failures

SymptomRewrite
Wrong companyAdd the domain to the context block
Verbose answersAdd “Return the value only” and a word limit
Inconsistent valuesList the allowed values explicitly; the model is inventing categories
Never says UnknownMove the abstain line directly after the question, and give an example of when to use it
Right answer, wrong formatShow the exact output shape rather than describing it

Do this now

  1. Take the question from lesson 05 and rewrite it into the six-part structure.
  2. Build a 20-row labelled set, including three unanswerable cases.
  3. Run and score. Note the unknown rate.
  4. Change one element. Re-run the same twenty. Compare.
  5. Repeat until above 90% correct with a sane unknown rate.
  6. Save the final prompt somewhere reusable — a prompt that works is an asset, and it will be needed again next quarter.

Check your work

  • Your prompt has all six parts
  • You tested against rows you labelled yourself
  • Unknown appears in the output at a plausible rate
  • Every answer is one of the allowed values
  • The prompt is saved somewhere you will find it

Where this breaks

Tuning a prompt against rows you have not labelled is self-deception. Output that looks reasonable is not evidence of accuracy — a fluent wrong answer looks exactly like a fluent right one, and you cannot tell them apart by reading. The labelled set is the whole test. Twenty rows takes twenty minutes and it is the only thing standing between you and a column of confident fiction.


Further automation

Keep a prompt library with each prompt’s tested accuracy and unknown rate beside it. When you reuse one on a new segment, re-run the twenty-row test — accuracy is a property of the prompt and the data, and a prompt validated on enterprise SaaS can fail badly on local business.


Next lesson

07 — Structuring the output, turning validated answers into fields the rest of your pipeline can use.

Reference for this lesson: AI agents, Research, AI integrations, Anthropic.