agentleFS
creatop-gtmcreatop-gtm/apollo-operator/skills/positive-reply-scoring/SKILL.md

positive-reply-scoring

Skill8 starsChanged 46 days agoMITView on GitHub

Classify replies and compute positive reply rate, the metric that predicts revenue. Use to tell whether a campaign is actually working, not just getting replies.

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    After a campaign has run at least 14 days (before that, the sample is too small to trust).

    line 18
  2. Distinctive:

    When comparing two campaigns in an experiment (use the same cutoff for both).

    line 20
  3. Very specific:

    No borrowed benchmarks. Use the reply-rate reality from ../operator-context/references/outbound-principles.md: below 1% something is …

    line 59

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Positive Reply Scoring (Iterate)

Reply rate tells you people are paying attention. Positive reply rate tells you they want what you are selling. This computes the second, because it is the number that actually predicts revenue.

A campaign can get a 5% reply rate and still be a disaster: if most of those replies are "unsubscribe" and "not a fit," you are burning domains for nothing.

positive reply rate = positive replies / total sent

When to use

  • After a campaign has run at least 14 days (before that, the sample is too small to trust).
  • Weekly, as the Wednesday task in weekly-rhythm.
  • When comparing two campaigns in an experiment (use the same cutoff for both).

Getting the replies

For the counts around the replies (sent, bounced, and reply rate by sequence, step, and variant), run campaign-reporting first. This skill is the part a report cannot do: deciding which replies are actually positive.

Pull reply data from Apollo, which carries more than it used to (verified 2026-09-14):

  • Which emails got a reply, with Apollo's own read of it. apollo emails search --stats replied (CLI) returns each replied message with a reply_class, such as willing_to_meet or follow_up_question, or no class at all. On MCP, apollo_emailer_messages_search gives per-sequence reply counts and per-message replied flags, and apollo_analytics_sync_report gives campaign-level numbers.
  • Treat reply_class as a first pass, not the verdict. It is Apollo's classification, some replies carry none, and its classes do not map one to one onto the buckets below. Use it to sort the queue, then classify yourself.
  • The reply text itself is not reachable. apollo_emailer_messages_get_content returns your own sent emails and explicitly excludes customer replies. So ask the operator to paste or export the reply bodies: the value of this skill is the classification and the metric, not the fetch.

Classify every reply

One bucket each. Classify only the first reply per lead (later messages are the conversation, not the signal).

LabelMeaningPositive?
interested"yes, tell me more," bookedyes
soft"send info," "reach out in Q3"yes
referral"not me, talk to X"yes (high value)
neutrala question, no commitmentno
not-now"not right now"no
not-fit"not a fit"no
hostileangry, complaint, reportno (track as risk)
unsubscribeopt-outno
ooo / bounceauto-reply / delivery failexclude from the denominator

Positive reply rate = (interested + soft + referral) / total sent. Exclude OOO and bounces from the denominator, they are not real replies.

Report

  • The number: positive reply rate, and positive as a share of real replies.
  • Act now: list the interested replies. Respond to these within minutes, not hours. A fast reply converts far better than a slow one.
  • Follow up: referrals, reach the named person within a day and mention who sent you.
  • Watch: hostile replies and the unsubscribe rate. Elevated hostility usually means bad targeting, not bad luck.

Reading the number

No borrowed benchmarks. Use the reply-rate reality from ../operator-context/references/outbound-principles.md: below 1% something is broken, 1 to 5% is normal, near 5% is good, above 5% is excellent. Positive reply rate is the stricter cut of that, so judge it against your own past campaigns, not an industry chart.

Common mistakes

  • Trusting reply rate alone. Spam-trap and unsubscribe replies inflate it while the campaign fails.
  • Scoring later messages instead of the first reply.
  • Sitting on interested replies. Speed is the whole game once someone raises a hand.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.