Case study 01 Client: Pepper Partners 28 Aug – 28 Sep 2026

2,388 emails. 7 replies.
1 meeting held.

An autonomous agent ran cold outbound for a reputation-management firm on 24 sending days, against 329 companies that all rated below four stars. This is the entire ledger — the sends, the refusals, the bounce that stopped the machine, and the things it got wrong before anyone outside noticed. Every figure on it is regenerated from the ledgers nightly; the file behind it is public.

776people contacted, at 329 companies
3,389touches attempted, 2,388 delivered
7humans wrote back
1meeting held, 17 Sep 2026, 21:15 UTC
Revenue to date: none Sending domains: 1 Human hours in the send loop: ~0
The account

Selling a star rating back to the people it is costing money

Pepper Partners is a Tallinn firm whose reputation practice does one thing: it takes a company with a bad public review profile and works the profile back above four stars — auditing it, getting fraudulent and competitor reviews pulled, and triggering genuine review invitations at the moments customers are happiest.

Their best argument is a single number they publish themselves: roughly 18% less conversion for every star below 4.0. That reframes a rating from a vanity metric into a line item, which is the only framing that gets a Head of Growth to answer a stranger.

Claim source: pepper-reputation.com. Pepper's own published figures, reproduced as theirs. Their case outcomes (150+ companies, 4.6-star average finishing rating) are likewise their claims, not results measured here.

We are not Pepper. The arrangement is a referral: every email goes out as one person making an introduction, signed with his own name, from his own domain, disclosing the referral in normal type. The agent was never allowed to write “we at Pepper.” That constraint shapes the whole campaign — an introduction can be honest about what it does not know, and a vendor pitch cannot.

The signal problem

The data the pitch needs is fenced off — deliberately

The pitch only works if the first line already contains the prospect's own number. “Your rating is 2.3” earns a reply; “we do reputation management” does not. So the campaign lives or dies on getting ratings at scale. There are four ways to get them. We tested all four in a single day. Three are closed and one we refused on purpose.

Closed

Trustpilot's official API

The sanctioned route, and the right one. It returns the 90-day delta, the star histogram and the company's reply rate. It needs a partner key we do not hold.

Refused

Scraping Trustpilot

Their robots.txt ends in a blanket Disallow: /, refuses 9 AI crawlers by name — anthropic-ai among them — and bars the ones it half-admits from the review pages and every filter. Not attempted.

Biased

The prospect's own site

Companies publish their rating in structured data for Google. Structurally useless: a company marks up its flattering number, never its bad one. Of 20 brands, 17 published nothing and the rest published app-store scores of 4.70–4.87 stars.

Uncorrelated

The public app-store API

Works, needs no key, measures something else. One company carried 4.8 stars across 400,000+ app-store ratings and 1.6 stars across roughly 1,300 on Trustpilot — in the same week. A rating is not a fact about a company. It is a fact about a channel.

A headless browser pointed at that Disallow would not be routing around a technical limit. It would be evading a refusal.

So the agent never fetched a Trustpilot page. The ratings came from the client's own lead file, which already carried the star value and the review count in two columns — and the honest sourcing turned out to be the stronger commercial position anyway.

First parse of that file inverted the entire target list: the star column used a European decimal (3,8 = 3.8) and the review column used thousands separators (10,443). A single strip-the-commas turned 3.8 stars into 38 and made every company look excellent. Two separate parsers now; the campaign would have mailed the wrong half of the market.

What “autopilot” honestly means here

The machine ran the campaign. The human showed up for the yes.

This is the part most case studies fudge, so here is the division of labour exactly as the logs record it.

The agent, unattended
  • Sorted 954 contacts into four cohorts by rating and review volume.
  • Wrote every email from a proof pack that refuses unsourced numbers — a figure with no source fails composition and the email never renders. This page is built by the same rule.
  • Scheduled a 5-touch, 7-business-day sequence on business-day spacing, re-sorted daily toward each recipient's 8am local.
  • Sent 2,388 emails across 24 sending days, ramping 20 → 250/day.
  • Polled bounces, suppressed the addresses, and stood their campaign rows down in the same breath.
  • Ingested replies over IMAP and stopped every colleague at a company that answered.
  • Paused itself when the 24-hour bounce rate crossed 5.0%.
  • Ran ten integrity invariants nightly — each one a leak that had actually happened once.
The human, every time
  • Supplied the lead list. The agent cannot source this market on its own.
  • Signed the cold-send approval: 329 named domains, with an expiry date. The send gate itself refuses any domain outside that file.
  • Answered both live replies personally, from his own mailbox.
  • Made the introduction to the principal.
  • Created the calendar invite by hand.
  • Took the meeting.

Read the right lesson from the right-hand column. It is not a list of gaps waiting to be automated — it is the list of moments where a person's judgment is worth more than throughput. The agent removed the thousand repetitive steps, not the six that matter.

The ledger

Every number, including the denominator

Cold-outbound case studies publish conversion rates and hide the base they were computed on. Here is the base, as of 28 September 2026.

Campaign: pepper-reputation · 28 Aug – 28 Sep 2026
StageCountNote
Companies on the approval329every one below 4.0 stars; median 2.3
Contacts enrolled9542.9 people per company
People actually contacted776the rest are still queued
Touches attempted3,389includes every refusal
Emails delivered2,38822 refused as malformed before sending
Human replies74 under the campaign's own stricter count
Meetings booked21 no-showed
Meetings held117 Sep 2026, 21:15 UTC
Revenue$0the held meeting is unpriced

Reply rate on people contacted: 0.9% (the 95% interval runs 0.4–1.9%). On companies: 2.1%. Both are below the 8% the plan assumed and above the 0% this list had produced before. 24 days of sending is not a verdict on the offer; it is a verdict on the list.

Bounce rate by where the address came from · measured 2026-09-17
Address sourceSentBounced
Supplied by the client4738
Constructed by the agent4711

The agent inferred missing addresses from patterns it could already see at the same domain. It is an order of magnitude worse at this than the client's list, and an MX check catches none of it — every bounced domain publishes valid mail records. The defect is a wrong name on a real company's domain, which only mailbox-level verification sees. 214 untouched constructed addresses were quarantined the day this was measured. Campaign-wide, 37 of 776 recipients have bounced (4.8%).

The failure ledger

Four things that went wrong, and what each cost

The brake bit

On 2026-09-17 the 24-hour bounce rate touched 5.3% and the guardian soft-paused the entire email channel. Roughly 4,000 queued touches were refused over about 13 hours before it cleared itself.

channel:soft-paused until 2026-09-17T16:48:57Z (24h bounce_rate 5.3% exceeded 5.0% threshold)

VerdictWorking as designed. A day of lost volume is cheaper than a burned sending domain — and the source of those bounces was the agent's own guessed addresses, now quarantined.

Wrong company, right recipient

The lead file contained spliced rows where the company name, the domain and the contact belonged to three different organisations. The composer rendered them faithfully, which meant one prospect was told about another company's rating.

FixedThe ingest now flags name/domain mismatches as their own review class — not folded into the existing validation list, because adding a finding to an old list silently changes every decision that list drives. Five provable cases paused; the rest went to a human, since most mismatches are ordinary parent companies.

The best follow-up was starving

With a backlog, owed touches were released in calendar-day order. That meant the day-2 email — 2 replies from 109, both negative — permanently outranked the day-5 email, which had produced the only positive follow-up in the campaign. The weakest touch was systematically eating the strongest one's budget.

FixedOwed touches now queue by measured reply rate, with day order breaking ties. Nothing is skipped; the sequence shape is unchanged.

Arithmetic that insulted the reader

One email computes how many five-star reviews a company needs to climb back to 4.0. On thin profiles the honest answer is “two” — printed directly above a paragraph arguing that reviews move the needle. Twenty-two companies fell under that floor and nineteen had already been sent it.

FixedThat touch now refuses to render below a minimum gap. For thin profiles the argument is different and so is the email.

What transferred

Findings, with the sample sizes attached

Rates below come from the 2026-09-12 conversion analysis; reply latencies are recomputed nightly from the send ledger.

2 of 34 vs 1 of 235

Of 34 second people contacted at a company, 2 replied positively. Of 235 first people, 1. Two replies is a direction, not a rate — the intervals overlap — but both booked meetings came from the second person (1 held, 1 no-show), and the next campaign threads every company by default.

5, 14, 18, 27, 32 min

5 of 7 replies arrived inside 35 minutes of a send. The 2 that did not took a day and three days — and one of those slow ones is the meeting that was held. Fast replies are common; the valuable one was not.

2 of 3 from touch 1

2 of the 3 positive replies came from the opening email. The third — the one that became the meeting — came from the day-5 colleague touch, on that person's fourth email. The proof email went 0 for 46.

61.1% absent

201 of 329 companies were not named when an AI assistant was asked for the top five in their own category — a second, unclaimed problem, and a better opening line for thin profiles.

All 3 under 2.5 stars

Every positive reply came from a profile rated 1.6, 1.7 or 2.2. Severity in the right vertical sells. In the wrong one it does not: 68 residential real-estate contacts produced 1 reply, and it was an unsubscribe — their reviews were true, and no reputation work fixes that.

One hard no

A prospect rejected the entire category — “we deliberately do not manage ratings in any form.” Logged as a loss against the offer, not the copy. A campaign that cannot record that keeps optimising the wrong thing.

The dataset

Who an AI assistant names instead

Every company in the campaign was checked once: name the top five providers in this category, asked of an AI assistant, answer recorded verbatim with the date and the model. Aggregate results, no company named.

Absent from an AI assistant's top five, by industry · asked 2026-09-13
IndustryCompaniesAbsentShare
Insurance1098678.9%
Financial Services573256.1%
Hospitality403075.0%
Real Estate25936.0%
Banking24729.2%
Hospitals and Health Care13861.5%
All 329 companies32920161.1%

Single-model snapshot, asked once — a reading, not a ranking. Quoted to prospects only as what it is: “when we asked an AI assistant on this date, it named these three, not you.” Industries with fewer than ten companies are folded into the total.

Where it stands, 28 September 2026

1 meeting, no revenue, 359 people still in sequence

The meeting that was held came from a US consumer-finance brand rated below two stars by its own customers — reached through a colleague, after the first people contacted there stayed quiet. From the campaign's first email on 28 Aug to twenty minutes on a call on 17 Sep. It has not yet been priced.

One meeting is not a business. It is the first evidence that the machine can produce a conversation a principal wants to be in — which is the only thing 24 days of sending can prove, and the thing this list had never produced before.

Held-meeting receipt: calendar invite, class calendar_invite. The campaign has one writer for that status and it demands a receipt and a pointer; a positive reply can never be counted as a meeting.

What is still missing is supply. Every lead file on hand is fully enrolled, and the four ways to find more companies without a human are the four closed routes above. That is the honest constraint, and it is not a software problem.

The offer

The same machine, pointed at your list

Rick Acquisition runs this loop for one client at a time: segment the list, compose from a proof pack that refuses invented numbers, sequence it, send it, catch the replies, and stop itself when something is wrong. You supply the list and the approval, and you show up for the yes.

Rick Acquisition — $800/month

Every figure on this page is regenerated nightly from the campaign's send ledger, referral record and integrity checks; the renderer refuses to print a number that is not in figures.json. Prospect names are withheld deliberately: they did not consent to appear in marketing, and a campaign that publishes the people it emailed has no business asking anyone to trust it. Trustpilot is a trademark of Trustpilot A/S; this page describes its published crawling policy and is not affiliated with it.

Running an acquisition agent in public · part 1 of 3

The other two