PRC Workforce · Professional Reality Check™

Operations Dashboard

Single source of truth · Jon Cull

Exceptions: what needs attention

The landing view is what is wrong, not a list of everything. Connect with your admin key to read live. Every figure here is computed in the Worker from the database, with no Kit calls, so it stays fast at any number of cohorts.

Overview

Everything that runs PRC in one place: the systems, the flow, the 90-day schedule, where each cohort is up to, what to do when something breaks, and system health. Seat and cohort numbers are read live from the Worker once you enter your admin key on the Cohorts tab. Until then they fall back to the local snapshot in this file, which drifts.

The protocol in one line

A 90-day anonymous behavioural protocol delivered by daily email. Three pillars: Mapping (Day 1–30), Redesign (Day 31–60), Installation (Day 61–90), then a Day 91 exit. 74 emails, 14 weekly worksheets, a private capture sheet the participant keeps, and a numbers-only dashboard. The employer only ever sees aggregate data.

Key references
Kit sequence2770859 · 74 emails
Kit enrolment form9605800
Kit cohort automation2007537
company_code field1296175
Workerprc-workforce.workers.dev

Systems: what goes where

The moving parts and how they connect. Everything routes through the enrolment page, Kit, and the Cloudflare Worker; the employer touches only the HR dashboard.

1 · Namecheap site: prcworkforce.com

The public pages

participant.html recognition page (employer distributes this) · enrol.html seat claim · /dashboard/ participant view · /score/ PRC Index entry · log.html private capture sheet (Your Log) · /hr/ employer aggregate view.

Static hosting. The pages call the Worker for anything dynamic.

2 · Kit: email engine

Forms, tags, sequence

Form PRC Participant Enrolment (9605800) collects personal email + company_code (field 1296175). Automation PRC Cohort Tagging (2007537) reads the code and applies the cohort:Name tag. Sequence PRC Workforce Protocol (2770859) delivers the 74 emails.

Write-once fields set by the Worker: dashboard_token, prc_protocol_start.

3 · Cloudflare Worker + D1

prc-workforce (reporting rebuild, PRC-WORKER-2026-07-24)

The brain. Reporting now reads D1 only, zero Kit calls. Endpoints: /api/enrol (the only sanctioned way to add a participant), /api/participant, /api/score, /api/weekly-score, /api/emails, /api/cohort, /api/hr, /api/day91, /api/go, /api/note-sheet, /api/admin, /api/admin/add-client, /api/admin/sync-emails, and new in the rebuild: /api/health, /api/admin/exceptions, /api/admin/snapshot, /api/admin/archive, /api/admin/export, /api/admin/backfill.

D1 tables, now the system of record for reporting: seat_register, index_scores, cohort_snapshots, weekly_scores, clients, emails (archive snapshot), retention_audit. The old seats table is retired. Secrets, all bindings, never in code: KIT_API_KEY, ENROL_SECRET, ADMIN_SECRET.

4 · Stripe: billing

Payment

Priced per employee per year, site-wide, no seat cap. 12-month rolling, 90 days notice. No change to the employer's existing EAP or OH contracts.

Verify: the observed enrolment path (page → Worker + Kit) does not itself include a Stripe step. Billing sits at the contract stage. Confirm where Stripe/Zapier are wired.

5 · Night watchman

System monitor (built in Claude Code)

Watches the live system and sends a Telegram alert on faults, breakages, or the sequence firing incorrectly. See the System Health tab for status and how to feed it into this dashboard.

Its exact checks live in the Monitor Operating Guide / Reference Card PDFs, which are image-only and could not be read here. Confirm the checklist so this can be made exact.

6 · Data protection posture

Structural anonymity

Employer sees seats, completion, and cohort-average PRC Index movement only. Never names, emails, or who enrolled. Aggregate reporting is floored at n ≥ 5. The participant's written words live only in the phone-only log and are never uploaded.

End-to-end flow: who does what, when

From signing an employer to reporting back. Gold actions marked "Do" are the manual steps that need you.

The 90-day map: what happens when, what's next

Every one of the 74 emails in order, by pillar. Worksheets carry the weekly number; the PRC Index is taken on Days 1, 30, 60 and 90.

Worksheet weekly number PRC Index Days 1/30/60/90 Daily two-minute input

Cohorts: where each one is up to

Each employer is a cohort, keyed by its company code. Current protocol day, pillar and next email are computed live from each cohort's start date and cadence. To make a change permanent, tell me and I will bake it into this file.

Live cohorts

Not connected. Enter your admin key on the Exceptions tab, or press Ctrl+K, to read live. Nothing is stored: the key is held for this session only and lost on reload.

Add a cohort (quick view)

Adds to this session only. It will not survive a page reload. For a permanent cohort, send me the details and I will write it into the dashboard.

Archive: cohorts that have finished

A cohort's result is only permanent once it is snapshotted. Everything else on this dashboard is recomputed from Kit each time it is asked, so it moves whenever Kit moves. A snapshot freezes seats, completion rate and Index movement into D1 and they never change again.

Take a snapshot

Run this the day a cohort reaches Day 90, before you do anything else with it. It writes one row and never overwrites an earlier one.

Needs your admin key. Enter it on the Cohorts tab first.

Open faults, ranked

The live register. Severity 1 is the one that loses participant work. Anything marked live is not fixed.

Runbook: if this, then that

The known failure and support scenarios, with the exact response for each. Search to jump to one.

System health: the night watchman

Live status of every moving part. The night watchman already sends you Telegram alerts; this panel is where that signal can also surface visually.

The night watchman on this panel

Now wired. When you connect with your admin key, this panel reads /api/health from the Worker live: the database, the Kit key, the email archive count, the cadence, the nightly recompute heartbeat, and the night watchman all report here as chips.

To surface the prc-monitor watchman's own daily checks, have it POST its result after each run to /api/monitor-ping (with your admin key) and body { status, message }, where status is ok / warn / down. It then shows above as the "Night watchman" system, with the time of its last report.

Before you connect, the chips show the reference states below.

What the watchman should cover

Proposed checklist, to confirm against your Monitor Operating Guide:

· Worker reachable (/api/participant returns 200 to a known seat)
· Kit API key valid (sequence read succeeds)
· Sequence step cadence correct (STEP_HOURS = intended value)
· D1 archive row count = 74 and in sync with Kit
· Enrolment path writes token + start and adds to sequence
· HR endpoint returns aggregate for a known cohort.

The Monitor PDFs are image-only and were not readable here. Send the checklist and I will match this exactly.

Incident log

Static log. Tell me the date, system and what happened and I will add rows.