A daily monitor for telecom, fintech and data-protection regulation
across Vodafone/Vodacom markets. Pulls 31 sources of headlines, keeps
only what's genuinely new, uses Claude to decide what matters, and
delivers it three ways — a morning bulletin, urgent same-hour alerts
for binding rule changes, and a mobile-first board where you triage
and dig deeper.
How data moves
Ingest
24 Google News queriesEN · AR · FR · PT · Egypt, footprint, precedent
7 verified direct feedstechnotime · Daily News Egypt · TechCabal · IT News Africa · Disrupt Africa · EU Commission · GSMA
Feed probe endpoint/api/probe vets new URLs before they go live
Pipeline
Fetch (browser-shaped UA)All feeds in parallel · 8 s per-feed timeout
Dedupe: exact then fuzzySame story from two publishers collapses to one
Classify with Claude HaikuTier · country · regulator · category · importance · so-what
Post-classify dedup on summaryCatches same-story different-language, different-publisher
Supabase storeRolling history, feedback column, feed health
Expert-agent refinementSonnet + web_search re-scores top items every 2h, downgrades noise
URGENT single-item alertsFires the same hour a binding rule lands
Web + mobile boardFilters · window toggle · Useful / Not relevant
Deep Dive on any cardSonnet + 4 web searches → 200-word brief, stored in the DB
Team read-only view/team.html — Egypt-only, today only, admin's deep-dives included
Archive search/api/search — free-text across headline, summary, so-what across the full history · admin + team
Watchlist digestsradar_subscribers — per-person morning email filtered by category
Deep links + permalinksEvery card has /page#item-N — bulletin & URGENT emails open the specific card
Feedback loop
Every Useful / Not relevant tap on the board writes to Supabase.
A weekly cron reads the "not relevant" rows, drafts a prompt update,
and opens a GitHub pull request you review and merge — the classifier
gets sharper without you ever pasting into a file.
What fires when
GitHub Actions hits the pipeline in urgent-only mode. Silent unless a fresh importance-5 item exists — then a standalone URGENT email lands within the hour.GitHub Actions hits /api/expert. Sonnet + web_search picks up to 3 pending high-signal items, verifies against the primary instrument, and writes refined importance + summary + so_what back onto the row.Vercel cron runs the full pipeline and sends the daily bulletin (~07:00 Cairo).Vercel cron reads your "Not relevant" votes and opens a tuning pull request. You skim, merge, Vercel auto-deploys the sharper classifier.
Capabilities
Ingest
31 sources across English, Arabic, French, Portuguese
Direct regulator/industry feeds when they exist; Google News for the rest
Silent-feed detection surfaces dead sources in the bulletin footer
Probe endpoint vets new candidate URLs before you commit them
Understand
Haiku classifier tags each headline: tier · country · regulator · importance
Batches of 25 headlines per call — deterministic cost
Egypt-context floor: NTRA / CBE / MCIT mentions never scored below 3
Two dedup passes — Jaccard on the raw headline before classify, and again on Claude's paraphrased summary after, to collapse cross-language and different-publisher rewrites
Expert-agent refinement — Sonnet with server-side web_search re-reviews the top items after Haiku's screen; verifies against the primary instrument, rewrites summary + so_what, downgrades noise so it drops out of the bulletin
Confidence surfaces on every card as High / Medium / Low so borderline classifications catch the eye
Deliver
Branded morning email grouped by tier, with "so what" per item
URGENT single-item email for importance-5 rule changes
Admin board — mobile-first, full controls
Team read-only view at /team.html — Egypt-only, today-only, no feedback / no dive button, but every dive the admin runs shows up here too