Upload Data
Drag & drop or pick CSVs from your machine. The app auto-detects each file by its column headers and stores everything locally on your computer.
1 · Chiro Leader Mapping
Practitioners → Leaders / Clinics / Area Managers
2 · Weekly Stats
Rebook % & Future Booking %
3 · Weekly Compliance
Compliance Rate per practitioner per week
4 · Cliniko Attendees
Used to compute ROF categories
Detected file structures
Auto-detection rules:
- Mapping: contains both "Leader" and "Name" columns (or no header — treated as the directory layout).
- Weekly Stats: columns "Practitioner", "Date", "Rebook Rate", "Future Appointments %".
- Compliance: columns "Practitioner", "Date" or "Week", and any column matching "Compliance".
- Attendees: contains "Appointment Type" and "Practitioner" (Cliniko export).
If a file doesn't match, you can re-upload to the correct slot.
Chiro Leader View
Drill into one Chiro Leader's team.
ROF Conversion
Report-of-Findings outcomes from Cliniko Attendees, grouped by practitioner and month.
| Practitioner | Chiro Leader | Month | Total ROFs | Paid & Mapped | Paid & Non-Mapped | Non-Paid & Mapped | Symptomatic | Declined | P&M % |
|---|
Weekly Metrics
Rebook %, Future Booking % and Compliance % per practitioner per week — current value, 4-week average, and trend for each.
Manage Practitioners
Reassign chiropractors when leadership changes. Manual edits here override the directory CSV and survive future uploads.
| Practitioner | Status | Chiro Leader | Area Manager | Clinic / Practice | In data |
|---|
next to a field means it has been manually overridden — directory re-uploads will not change it.
Change history
Audit log of every practitioner edit.
| When | Practitioner | Field | Old → New | Changed by | Reason |
|---|
Data Validation
Issues to clean up before performance numbers can be trusted.
Unmatched practitioners
Practitioners showing up in Stats / Compliance / Attendees but missing from the directory.
Missing Chiro Leader
Practitioners with no leader assigned. Reassign on Manage Practitioners.
Unmapped appointment types
Appointment types in attendees that haven't been mapped on the ROF Mapping tab — currently treated as "Ignore".
Duplicate practitioner names
Multiple raw spellings collapsing into one canonical practitioner. Verify they're really the same person.
Rows excluded from calculations
Rows discarded during ingestion (missing key fields, unparseable dates, or appointment types currently mapped to Ignore).
Settings
Targets & thresholds — change these and the app re-flags everything.
Targets
Logged in as
This name is recorded against every practitioner change in the audit log. Set it before making changes.
View mode
Switch to Chiro Leader mode to see the app the way leaders see it: only Leader View, ROF Conversion, Weekly Metrics, Action Tracker and Settings appear in the nav.
Cliniko sync
Connect to your Cloudflare Worker so the dashboard can pull live appointment data from Cliniko. See cliniko-worker/SETUP.md in the project folder for one-off deployment steps.
ROF denominator
Off (default): Paid & Mapped % = Paid & Mapped ÷ (5 final-decision categories).
On: Paid & Mapped % = Paid & Mapped ÷ (5 final-decision + Undecided).
About this app
Single-page, browser-only app. Data is stored in this browser's localStorage – never sent anywhere. Re-upload any of the 4 CSVs at any time to refresh the dashboard.
v1.0 · 2026