◇ CM ~/builds/truth-triage
← BUILDS
§B02 CASE STUDY 2026.04
LIVE · DEPLOYED

Truth Triage

A cron Worker that watches a high-volume public feed, triages the market-relevant posts with Claude Haiku, and drops a ready-to-paste research prompt into Discord. A draft step — never a trade signal.

Cloudflare WorkersClaude HaikuAI GatewayKVDiscord Webhooks
$ cat truth-triage.spec
DATE
April 12, 2026
STATUS
LIVE · DEPLOYED
TAGS
cloudflare · workers · ai · claude · discord

What it is

Truth Triage watches Trump’s Truth Social posts and surfaces only the ones that might move markets. Every few minutes it checks the feed, runs a cheap keyword pass, and sends the survivors to Claude Haiku, which returns structured triage — impact, sector, tickers to verify, and a one-line “why.” The result lands in Discord as a color-coded card plus a ready-to-paste prompt for a deeper analysis chat. It is explicitly a triage and drafting step, not a trade trigger.

Why I built it

Market-relevant posts are rare and buried in a high-volume feed. I wanted an early, cheap filter that flagged the few worth a closer look — without paying a model to analyze every post, and without trusting an LLM to quote the source accurately.

How it works

RSS feed ─► keyword cull (free) ─► Haiku triage via AI Gateway ─► Discord
                                   {impact, sector, tickers, why}   (embed + paste-block)
              KV: dedup · repetition memory · bootstrap guard

The key design choice: the verbatim post text always comes from the feed, never the model. Haiku only produces metadata, so it physically can’t mangle the quote I paste into a deeper analysis. Calls go through a Cloudflare AI Gateway, which adds logging, retries, and provider fallback for free — and makes the model swappable. KV handles deduplication, short-term repetition memory (so it can flag “possible repeat”), and a bootstrap guard: the very first run marks everything seen and sends nothing, so I’m not spammed with the backlog.

The whole pipeline fails open. Malformed triage JSON surfaces as a “review manually” notice rather than getting dropped; an error leaves the post un-seen so it retries next run. It costs about sixty-six cents a month.

What I learned

Separate the deterministic from the probabilistic. The fact (the quote, the date, the link) is plumbing that must be exact; the judgment (is this market-relevant?) is where a cheap model earns its keep. Keeping them in separate lanes is what makes an AI step trustworthy. And designing for failure first — dedup, bootstrap, fail-open — is what lets a thing like this run unattended without becoming a liability.

What’s next

Optionally swapping Haiku for free in-edge inference on Workers AI, and tuning the impact threshold to cut more low-priority noise.