Concept demo · simulated data, sped up · open the learner app in another tab to see your learner here live

Live board

All systems normal
Active learners
100
of 100 seeded
Detections / min
0
rolling, sped up
Alert latency p95
–
target < 10s
Active holds
0
10-minute holds
Confirmed today
0
pay-on-success
Queue depth
0
Redis · jobs waiting

Detections & alerts DetectionsAlerts sent

Your demo learner live from the learner tab

No learner connected yet. Open the learner app in another tab and press Start watching. They'll appear here and at the top of Clients.

Live detections waiting for first opening…

    Sources Manage

    Clients

    Each learner's criteria, priority and message history. Click a row for details.

    LearnerCentresMonthsTimePriorityStatusWaiting

    Detection history

    Every opening, where it came from, who it was offered to and what happened.

    SeenCentreSlotSourceOffered toLatencyOutcomeCorrelation ID

    Sources

    Each source is an adapter with the same interface (fetch → normalise → report health). Pause, tune or add one without touching the rest. Proposal §5, §6

    Log an opening operator entry: goes through the same matching and alert flow

    System health

    Service checks, the dead-letter queue and a live structured log stream.

    Structured logs

    Dead-letter queue

    Jobs that failed after every retry. Retry policy: exponential back-off 2s → 4s → 8s → 16s, max 4 attempts.

    JobErrorTries

    Settings & edge

    Matching rules, retry policy, quiet hours and the Cloudflare panel protecting your own platform.

    Matching & alerts Proposal §7, §8

    Hold timeHow long a slot is held for one learner
    RankingCriteria → priority → time waiting
    Fair queue
    Quiet hoursNo alerts 22:00–07:00 unless the learner opts in
    SMS fallbackSend SMS if WhatsApp isn't delivered in 20s
    Retry policyBack-off with jitter, then dead-letter
    2s · 4s · 8s · 16s
    Circuit breakerPause a source after 3 failures in a row; retry after 30s

    Cloudflare edge Proposal §6

    Protects earlycartest.co.uk and the API from abuse and scraping. Nothing here targets DVSA's systems.

    WAF blocks (24h)1,284
    Turnstile passes642
    Rate-limited93
    WAF managed rulesOWASP core rule set
    On
    Turnstile on sign-up & loginStops fake accounts and swap-network abuse
    On
    API rate limit60 requests / min per IP
    On
    Bot managementBlocks scrapers copying your data
    On