agentleFS
corebits-iocorebits-io/deal-origination-system/skills/reply-classification/SKILL.md

reply-classification

Skill1 starsChanged 3 months agoMITView on GitHub

Sort owner replies into real interest, not-yet, not-selling, broker referrals, and opt-outs. Extracts what the owner actually said, updates the pipeline, and drafts the right response for each. Triggers on: classify replies, sort replies, handle responses, reply classification, triage inbox, what did the owner mean, process replies, categorize responses, owner replied, handle owner replies.

3 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

8 rules. 0 are common, 2 are distinctive, and 6 are very specific to this project.

  • 0

    Common

    Most of the 3 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 6

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read thesis-profile.md for sender identity and compliance notes.

    line 19
  2. Distinctive:

    Every reply gets exactly one class, from this list and no other:

    line 33
  3. Very specific:

    opt-out overrides everything: If there is any opt-out language anywhere in the reply, it is an opt-out, however friendly the rest is.

    line 48
  4. Very specific:

    "Not selling" from an owner is very often "not yet.": Read the wording. "Not for sale" with a timing hint is open-later.

    line 51
  5. Distinctive:

    An auto-reply is not a reply: Do not count it in reply rate.

    line 58
  6. Very specific:

    Any objection to the approach itself: If three owners say "this looked like spam", that goes back to outreach-writer

    line 75
  7. Very specific:

    Write to pipeline.csv, using reply_class and stage per the schema:

    line 86
  8. Very specific:

    Opt-outs are forever: Not per-campaign, not per-year.

    line 189

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “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

Reply Classification

Sorts what came back, so a genuinely interested owner never waits three days and a "maybe in a couple of years" never gets treated as a no.

Owner replies are not investor replies. They are personal, often guarded, and frequently a test: is this buyer a real person or another blast? The reply to the reply decides which one you are.


Step 0 — Input

  1. Read thesis-profile.md for sender identity and compliance notes. If it does not exist, stop and walk the user through creating it from templates/thesis-profile.md.
  2. Accept replies in whatever form the user has them: pasted text, an export, a forwarded thread, or a description. Ask for the raw text rather than a summary. The exact wording carries the signal.

For each reply, capture: who, which company, which channel, which touch they were on, and the full text.


Step 1 — Classify

Every reply gets exactly one class, from this list and no other:

ClassWhat it looks likePriority
interestedOpen to a conversation, asks who you are, asks a real question about the processRespond same day
open-later"Not now, maybe in a few years", "ask me after my son decides", timing signalHigh. This is a future deal
wants-infoWants to know more before engaging: who is the buyer, is this realHigh
not-sellingClear no. "Not for sale", "we're keeping it in the family"Polite close, log
broker-referral"Talk to my broker/banker/accountant", or a broker replies on their behalfFlag separately
auto-replyOut of office, autoresponderReschedule, do not count
opt-outDo not contact me. Remove me. Any variantImmediate, permanent
deadThread is over: hostile, company dissolved, owner deceased, wrong entityClose the row

Classification rules

  1. opt-out overrides everything. If there is any opt-out language anywhere in the reply, it is an opt-out, however friendly the rest is. Suppress permanently and immediately, on every channel.
  2. "Not selling" from an owner is very often "not yet." Read the wording. "Not for sale" with a timing hint is open-later. A flat, final "never, do not ask again" is not-selling. When it carries any opt-out language, it is opt-out.
  3. A broker referral changes the deal, not just the contact. A broker-run process means competition and a market price. Flag it — the user decides whether that still fits the thesis.
  4. An auto-reply is not a reply. Do not count it in reply rate. Reschedule the sequence past the return date.
  5. When genuinely ambiguous, ask the user. Do not guess. A misread interested is the most expensive miss in the system.
  6. Read the whole message. A polite opening followed by "but we would never sell" is not-selling, not interest.

Step 2 — Extract signal

Beyond the class, pull out what is actually useful, quoted verbatim:

  • What they said about timing. "After I turn 65" is a calendar entry and a succession signal — write it to succession_signal in targets.csv
  • What they asked for. Usually "who are you" — the buyer one-pager exists for exactly this
  • Any objection to the approach itself. If three owners say "this looked like spam", that goes back to outreach-writer
  • Referral target. Broker name, firm, or the family member who "handles these things"
  • Anything about the business they volunteered. Owners reveal more in one annoyed reply than a week of research finds

Step 3 — Update the pipeline

Write to pipeline.csv, using reply_class and stage per the schema:

Classstagenext_action
interestedin-dialogueRespond today. Propose a short call
wants-infoin-dialogueSend the buyer one-pager, answer directly
open-laterdormantRevisit date from what they said. "A few years" becomes a real date
not-selling (soft)dormantPolite close now, revisit in 12 to 18 months
not-selling (final)not-sellingPolite close. No revisit
broker-referralin-dialogueFlag as broker-led in notes. User decides
auto-replyunchangedReschedule past the return date
opt-outnot-sellingAdd to do-not-contact list. Permanent. No reply sent
deadpassedLog the reason. Close the row

Also update targets.csv: status, succession_signal, and notes.

Stop every active sequence for anyone who replied. Continuing to send after a reply is the single most damaging thing you can do to a live conversation with an owner.


Step 4 — Draft responses

Per references/outreach-voice-rules.md and references/compliance-and-ethics.md. No implied valuations, no invented urgency, no pretending an offer exists.

interested — Short. Warm without gushing. Confirm who the buyer is in one line, propose two specific times for a short call. Do not attach anything they did not ask for. Do not start negotiating. They said yes to a conversation, nothing more.

wants-info — Answer the actual question, directly, in the reply. Send the buyer one-pager. Do not deflect a factual question to a call; owners read that as evasive.

open-later — Two lines. Thank them, confirm the timing they gave, say you will check in then. No pitching. No "before you go." Then actually follow up on that date. A well-timed note in two years closes deals no cold letter ever will.

not-selling — One or two lines. Thank them, respect the answer, leave the door open without pushing on it. Never argue, never "just one call." These markets are small and owners talk.

broker-referral — Thank them, confirm you will contact the broker, and flag internally: the user should decide whether a brokered process fits before anyone reaches out.

opt-out — No response at all. Suppress and move on. Replying to an opt-out is itself a contact.

dead — No response unless a correction is owed (wrong entity: apologize briefly, close).

🚧 HARD GATE

Show every classification and every draft. Flag anything ambiguous and ask. Get approval before writing to pipeline.csv, targets.csv, or the do-not-contact list, and before any draft is treated as ready. Nothing sends from this system; the user sends.


Step 5 — Report

Replies processed — 19

  interested        2   ← respond today
  wants-info        3
  open-later        5   ← revisit dates set, 2 with succession signals
  not-selling       4   (3 soft → dormant, 1 final)
  broker-referral   1   ← flagged, brokered process, your call
  opt-out           1   ← do-not-contact, permanent, no reply drafted
  auto-reply        2   (not counted in reply rate)
  dead              1   (company dissolved 2024, registry checked)

Real reply rate:   17 of 71 sent  (24%)
Live or future:    10 of 71       (14%)  interested + wants-info + open-later

Worth noting:
  "Looked like a mass mailing"     2  ← back to outreach-writer
  Succession signals captured      2  → written to targets.csv

Sequences stopped: 17
Drafts ready for your review. Nothing sent.

Notes

  • Respond to interested within hours, not days. An owner who raised their hand is deciding whether you are serious. Speed is the answer.
  • open-later is the crop. Most proprietary deals close one to three years after first contact. The revisit date is the asset; guard it.
  • Never argue with a no. The owner who says no this year refers you to their neighbor next year, unless you pushed.
  • If the same complaint about the approach appears three times, it is a copy or targeting problem. Send it back to outreach-writer with the quotes.
  • Opt-outs are forever. Not per-campaign, not per-year. Forever, on every channel. See references/compliance-and-ethics.md.

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.