Scored Reply Targeting

The reply queue scores every candidate tweet with three separate checks, relevance, slop, and author fit, each returning its own score and reason. A bad pick traces to the check that caused it, and you can tune the blend per Hunt.

The reply queue used to judge each candidate tweet with one AI call that decided relevance, quality, and author in a single opinion. When a keyword with two meanings pulled in the wrong conversation (MCP the protocol vs MCP the Tron villain, real ones from our logs), all three judgments failed together and there was no way to tell which one was wrong. Scored Reply Targeting splits that call into three independent checks that run in parallel on every candidate, and every verdict is saved so you can see exactly why a tweet was picked or rejected.

The three checks

Each check returns a 0 to 100 score plus a one-line reason:

  • Relevance. Does this tweet actually match the Hunt's intent? This check never sees the keyword that surfaced the tweet, on purpose. Telling it the search term invites it to confirm the match, which is exactly how homonym false positives slip through. It judges the tweet against the Hunt's target brief and the names of its bound brains.
  • Slop. Is this engagement-farmed, repackaged, or manufactured content? Recycled demos posted as breaking news, "RT if you agree", follow-to-get-the-guide mechanics, fake insider leaks. High slop is a hard veto: a perfectly on-topic tweet that is manufactured still gets skipped, because replying there puts your name under it.
  • Author fit. Is this someone worth being seen replying to? Practitioners and builders talking about their own work score high. Newsletter feeds, aggregators, brand accounts, and engagement farms score low. Having a product in your bio is a positive signal here, not a strike.

How the decision is made

The three scores blend into a weighted composite, and the action (reply, quote, or skip) is derived from the numbers by fixed rules. There is no fourth AI call making a recommendation:

  1. Slop at or above the veto (default 70) skips the tweet, whatever its relevance.
  2. A composite below the threshold (default 60) skips it, attributed to the weakest check.
  3. Everything else gets drafted. A clean, emphatic match on a high-reach tweet is flagged as a quote candidate.

Drafting only runs on survivors, so cost scales with what is worth replying to, not with everything the search returned.

Every verdict is saved

Each scored candidate gets a row with all three scores, all three reasons, the composite, and the derived action. Rejects included. When the queue builds thin or empty, the build note says why by check ("9 filtered by scoring: 5 relevance, 3 slop, 1 author fit") instead of handing you an empty list. When a pick looks wrong, the row tells you which check to blame.

Tuning the blend per Hunt

Defaults are relevance 0.5, slop 0.3, author fit 0.2, threshold 60, slop veto 70. Override any of them per Hunt with score_weights on create_hunt or patch_hunt:

{
  "id": "your-hunt-id",
  "score_weights": {
    "relevance": 0.6,
    "slop": 0.3,
    "author_fit": 0.1,
    "threshold": 70,
    "slop_veto": 60
  }
}

Weights are relative and get normalized, so you can pass any positive numbers. Pass score_weights: null to reset a Hunt to the defaults. A Hunt that keeps drafting replies to newsletter feeds wants more author fit weight. A Hunt drowning in farmed content wants a lower slop veto.

Related

Want this page as machine-readable markdown? GET /docs/features/scored-reply-targeting.md