Skip to content
PulseCheck AI / 01 · Pilot Ops Console
last refresh ·

white-glove window

Day 1 through Day 7 ops for pilot brand #1.

Five-minute morning check. Green is healthy. Yellow means watch closely. Red means investigate before the operator notices. Every claim links to a SQL probe.

Headline KPIs

data freshness
1.2 days
SLO < 2.0 days · within range
pos events · 24h
1,847 rows
bronze → silver bridge healthy
last briefing
06:32 ET · today
delivered · auto path

Ingest chain

bronze → silver → gold → platinum
  1. bronze.raw_pos_events last row · 4 min ago
  2. silver.sales_transactions promoted 1,847 · 0 errors
  3. gold.agg_daily_metrics behind 1 day · backfill running
  4. platinum.morning_briefings 1 row · formatted_text 1,184 chars

Customer state and monitors

onboarding chain · pilot brand #1
  • /api/pilot/register · auto-scaffold 200 OK · organization + brand + location
  • Square OAuth callback tokens stored · expires 60d
  • webhook registration · 7 events manual · via Square dashboard
  • first $1 test order received visible in bronze · 04:11 ET
  • notification delivery · email manual day 1, automated day 3+
monitors
  • monitor_briefing_webhook_health 0 dead in 24h

    fires hourly · queries ops.outbound_http_queue

  • monitor_data_freshness 1.2 days · < 2 SLO

    fires every 6h · queries gold.agg_daily_metrics

  • slack alert path app.ops_slack_webhook_url GUC

    unset returns log-only · safe fallback

Day-1 through Day-7 timeline

white-glove cadence
D1
brief sent
D2
manual ok
D3
auto check
D4
today
D5
pending
D6
pending
D7
transition

Action queue

ranked by leverage
  1. 01
    Verify briefing endpoint mount shipped

    curl with Bearer service token returns 200 (was 404 across 8 days of pg_cron retries).

  2. 02
    Square OAuth · automatic post-callback webhook register manual today

    Post-pilot ticket. For Day 1, register webhook via Square dashboard with signature key. Confirm bronze.webhook_registrations populated.

  3. 03
    Notification service end-to-end verification day 3 check

    Email path is manual Day 1 only. Confirm auto-delivery from ProactiveBriefingService on Day 3 morning.

  4. 04
    Per-merchant signature keys post-pilot

    Single Render env var works for one pilot. Multi-tenant requires encrypted per-merchant keys in integration.square_oauth_tokens.

Verification probes (run from psql)

Every status above resolves to one of these SQL queries against Supabase production.

SELECT MAX(business_date) AS latest, NOW()::date - MAX(business_date) AS days_stale
FROM gold.agg_daily_metrics
WHERE organization_id = $1;
SELECT COUNT(*) FROM bronze.raw_pos_events
WHERE organization_id = $1 AND created_at > NOW() - INTERVAL '24 hours';
SELECT title, briefing_date, length(formatted_text) AS chars
FROM platinum.morning_briefings
WHERE organization_id = $1
ORDER BY briefing_date DESC LIMIT 3;
SELECT job_name, status, COUNT(*) FROM ops.outbound_http_queue
WHERE enqueued_at > NOW() - INTERVAL '24 hours'
GROUP BY 1,2 ORDER BY 1;

Risk register

risk · critical

Square ETL silent 0-rows

Same pattern as 2026-04-12. Mitigated by monitor_data_freshness fail-loud alert. If days_stale > 2, page on-call.

risk · high

Webhook signature key drift

Single Render env var SQUARE_WEBHOOK_SIGNATURE_KEY. Rotate on Square side breaks ingest silently. Mitigation: 401 alert on bronze receiver.

risk · high

OAuth refresh path

60-day token. Refresh failure pre-expiry needs human intervention. Mitigation: 7-day warning probe scheduled.