System Map

Regulatory Radar · Vodafone Egypt · Regulatory Affairs
Last updated
13 Jul 2026
← Back to the board

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

Deliver

Morning email bulletinGrouped Egypt · Footprint · Precedent
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
  • Category chips + pinned NTRA chip + Today / 48h / Week window
  • Archive search on both boards — full history, not just the current window
  • Editorial override — the admin can pin or hide any item on the team view, one tap per card
  • Watchlist digests — a subscriber row with a category array gets that morning's items filtered to their scope; NULL categories = whole bulletin
  • Recent urgents strip on the team page — last 7 days of importance-5 items, tap to jump or open the source
  • Permalinks — every card has a copy-link button; bulletin + URGENT emails deep-link into the specific card

Investigate

  • Deep Dive button on every card
  • Sonnet + up to 4 web searches → 200-word regulator-primary brief
  • Result cached on-device — no re-run cost when you re-open
  • Deliberately outside the cron so a slow search can't delay the bulletin

Automate

  • Daily bulletin — Vercel cron, unattended
  • Hourly urgent check — GitHub Actions, unattended
  • Weekly self-tuning PR — opens for review, never merges itself
  • Every push auto-deploys via Vercel–GitHub integration

Operate

  • Dry-run mode reports what would ship — no DB writes, no email
  • Feed health per source in Supabase for silent-failure diagnosis
  • Every endpoint accepts a ?t= token for one-tap mobile access
  • Fully re-deployable from git — no local build, no dev server