Status & monitoring¶
2026-06-21 — JSON /status moved to bridge
The old trades.yourevenings.com/status was behind Cloudflare Access — the monitoring cron couldn't read it (302 → email PIN, ignores STATUS_TOKEN). Fix: ported the check functions to the bridge at https://bridge.yourevenings.com/status?token=<STATUS_TOKEN> (2026-06-21) and on 2026-06-22 moved the HTML dashboard to https://bridge.yourevenings.com/status.html so we could drop CF Access from trades.yourevenings.com entirely (needed for Google indexing of the marketing page). Same JSON shape. Implementation: bridge/src/status.js. Deepgram and ElevenLabs were dropped — they're visibility-only (Vapi uses its own STT/TTS keys at call time, so our admin-key billing doesn't reflect runtime health). Auth: the dashboard is now open-by-URL with the ?token=<STATUS_TOKEN> query param (no CF Access).
Dashboards¶
- Pilots dashboard (per-pilot call log):
https://bridge.yourevenings.com/pilots?key=<INTERNAL_API_KEY>— added 2026-06-22. Shows live pilots with 24h / 7d call counts, jobs captured, and flagged calls. Click any pilot to see every call with caller, callback, job, urgency, duration, SMS-handoff status, recording link, and quality flags. - Status JSON (cron):
https://bridge.yourevenings.com/status?token=<STATUS_TOKEN> - Status site (humans): bridge.yourevenings.com/status.html — still on trades.yourevenings.com behind CF Access.
- Refresh: 30s auto.
- Source of truth (stack): monitoring cron
aa4111a7runs every 15 min. - Source of truth (pilots): daily digest cron
39e7d26eruns 07:00 UTC (08:00 BST).
Quality flags¶
The bridge /vapi-webhook computes these on every call write:
| Flag | Trigger |
|---|---|
missing_callback |
callback_number empty or <10 digits |
no_caller_name |
caller_name empty or '—' |
no_job |
job empty or '—' |
short_call |
duration <30s |
not_clean_end |
endedReason not (assistant\|customer)-ended-call |
extraction_empty |
structured-data object empty |
sms_failed |
job-handoff SMS to trade errored |
Review flagged calls weekly. Common fixes are prompt tweaks to the base Polly UK assistant — changes propagate to all live clones (they inherit the system message body at clone time, but the underlying call logic is the same model + voice config).
What's monitored¶
| Component | Check | Pass criterion |
|---|---|---|
| YE bridge | GET https://bridge.yourevenings.com/ |
not 000 or 5xx (404 OK) |
| Vapi assistant | API responds, credits > 0 | response 200, balance > $5 |
| Twilio account | API responds, balance > 0 | response 200, balance > $5 |
| Polly UK number | Vapi reports number bound | bound to assistant ID |
| Status site itself | self-check | 200 |
Alert behaviour¶
- state-change-only. We don't alert on every poll — only when something flips colour.
- Vapi transient timeouts → reported as
skipped(silent), notyellow. Eliminates flap noise. - Bridge 404 → green (acceptable per HEARTBEAT.md).
Alert sinks¶
- Telegram → Matt's chat (
5336018303) - Cron failure-alert mode:
announce
Heartbeats¶
Matt's main OpenClaw session runs heartbeats every 30 min:
- Reads
/data/.openclaw/workspace/HEARTBEAT.md - Runs
curl https://bridge.yourevenings.com/ - Reply
HEARTBEAT_OKif all green - Trading is shut down — no trading checks run
When something goes red¶
- Check the status site.
- Check the failing component's dashboard (Vapi, Twilio, CF, bridge).
- See Runbooks for component-specific recovery.
- If you can't fix in 10 min, ping Matt.
What "skipped" means¶
A component check timed out or hit a transient network issue. Not a fail. If the next 15-min check is green, it was a blip. If two consecutive skippeds → investigate.