InTouch Hub · Blue Isle Software

Inbox Triage Judge

Decide whether a message sent to a published contact address is a person trying to reach the business or bulk outreach. Returns REACH, BULK or UNSURE with one line of reasoning, and errs toward letting people through.

Provided free and as is, without warranty of any kind — including merchantability, fitness for a particular purpose, and the accuracy or completeness of any result. See the licence. You are responsible for checking what this produces before relying on it.

aiclassificationcommunicationcontactcustomer-servicedigestemailfilterinboxmessagepipelinereview

Inbox Triage Judge

Reads a message sent to a published contact address and answers one question: would a human at this business want to see this?

What it does

Returns REACH, BULK or UNSURE with a confidence, one line of reasoning, and a short topic for a digest line. It does not reply to anyone and it does not act — it produces a verdict that something else routes on.

Use case

You publish [email protected] instead of a contact form. Most of what arrives is authenticated, well-formed, and utterly irrelevant: SEO offers, outsourcing pitches, directory listings. A spam filter cannot help, because none of it is spam — it is legitimate bulk mail that simply isn't for you. This is the step that tells those apart from the customer asking whether your product works with Xero.

Why this exists as a skill and not a rule

Everything else in this pipeline is deterministic: header forensics, rate limits, known-sender lists — all arithmetic, all free, all identical every run. Separating "a person wants something" from "a template wants a meeting" is reading comprehension, and no keyword list has ever done it without blocking real customers.

So the model is used for exactly one judgement and nothing else, on messages that already passed authentication. It never sees forged mail, never sends anything, and never decides what happens next.

The rule it is built around

A missed customer costs more than a read pitch.

Getting BULK wrong costs ten seconds of reading. Getting REACH wrong loses a customer who will never know they were filtered and will never tell you. The skill is written to be asymmetric on purpose: when a message could be either, it answers UNSURE rather than BULK, and a short, blunt or badly written message from a real person is REACH every time.

Judge it on that. A version of this that catches every pitch and quietly drops one enquiry a month is a worse product than one that lets ten pitches through.

Input

The message: sender, subject, body. Header authenticity is decided before this runs and is not its job.

Output

{
  "verdict": "REACH | BULK | UNSURE",
  "confidence": "high | medium | low",
  "reason": "one plain sentence naming what decided it",
  "topic": "three or four words for a digest line"
}

Pairs with

better-than-captcha — the workflow that reads the mailbox, runs the header forensics, applies the known-sender list and routes the result. This skill is its judgement step.

Not yet measured

The verdicts have not been scored against a labelled set of real contact-inbox mail. The rule above says which way to err, but the actual REACH/BULK error rates on live mail are unknown. Before relying on it to hide anything, run it in report-only mode — everything still reaches you, the verdict just rides along in the digest — and check what it would have hidden.