Monthly Trends ?Chart showing KPI performance over the academic year. Toggle between line and bar views. Click legend items to show/hide metrics.

Actions Required ?Automated alerts for items needing attention: missing data, expiring cards, at-risk students, birthdays, and similar actionable items.

Monthly Breakdown ?Scorecard table showing key metrics by month: Revenue, Student Count, Class Count, etc. Compare against targets where set.

Metric Sep Oct Nov Dec Jan Feb Mar Apr May Jun Target
Name Age School Year Gender Parent Classes At Risk ? Score ? Start Date Status
Name Email Mobile Suburb Students Total Revenue Date Inactive Status
Class Level Day Time Teacher Venue Capacity Occupancy
Name Email Mobile Class Attendance Sessions Updated Contract
Name Parent Contact Enquiry Date Trial Date Status
Time window: Sorted most recent first
Loading exits…
Active Students ?What: Total count of students with is_active = true.

Source: Same number used by the Students-page header and DanceBiz statistics — the canonical headcount across the whole app.
-
Average Age ?What: Mean age (in years) of all active students.

How calculated: sum (today − DOB in years) ÷ count of active students with a DOB. Students missing a DOB are excluded.
-
Avg Tenure ?What: Mean tenure (in months) of all active students.

How calculated: sum (today − start_date in days) ÷ count, converted to months. Students missing a start_date excluded.

What to look for: Trending upwards = improving retention. A sudden drop = recent influx of new starters (good but unproven).
-
Avg Classes/Student ?What: Mean number of classes each active student is enrolled in.

How calculated: sum students.current_class_count ÷ count of active students.

What to look for: Higher = more committed (and higher revenue per student) cohort. Track over time as a leading indicator of upsell success.
-

Gender Split ?What: Doughnut chart of all currently active students, grouped by gender.

Source: students.gender field (Male / Female / Other / Unknown).

How calculated: count of active students per gender, then displayed as % of total active students. "Active" = is_active flag = true.

What to look for: Material drift over time can signal recruitment imbalance.

Age Distribution ?What: Bar chart of active students grouped into age buckets (Under 4, 4–6, 7–9, 10–12, 13–15, 16–17, 18+).

Source: students.dob.

How calculated: age = years between today and DOB. Each student is counted in exactly one bucket.

What to look for: A "missing middle" (e.g. drop-off at 12–15) often signals secondary-school competing demands.

Age × Gender Breakdown ?What: Cross-tabulation of the two charts above. Each cell = count of active students in that age × gender combination.

How calculated: Same data as Gender Split + Age Distribution, intersected. The % column = row total ÷ total active students × 100.

What to look for: Skews within age bands (e.g. Year 7 mostly female) — useful when planning new classes or marketing campaigns aimed at under-represented groups.

Age Group Female Male Other Total %

Tenure Distribution ?What: How long currently active students have been with the school, grouped into bands (< 6 months, 6–12 months, 1–2 years, 2–3 years, 3 years+).

Source: students.start_date for active students only.

How calculated: tenure = days between today and start_date, then bucketed.

What to look for: A heavy <6 months bar means lots of recent joiners (good) but also risk if conversion to long-term hasn't been proven yet.

Avg Tenure by Gender ?What: Mean tenure (in months) per gender for active students.

How calculated: sum of tenure-in-days per gender ÷ count, converted to months.

What to look for: Big gaps between genders may indicate one cohort isn't being retained as well — worth investigating.

Tenure by Age Group ?What: Avg tenure (in months) per age bucket plus the % of that bucket sitting in each tenure band.

How calculated: Cross-tab of age bucket × tenure band, with the avg-months column = sum tenure ÷ count for that age bucket.

What to look for: Age groups dominated by <6m (e.g. Reception or Year 7 starters) need conversion plans; groups with most students in 3y+ are your stable core.

Age Group Avg (months) <6m 6-12m 1-2y 2-3y 3y+

Classes per Student ?What: Histogram of how many classes each active student is enrolled in.

Source: students.current_class_count.

How calculated: for each value 1, 2, 3, 4+ — count how many active students are at that number.

What to look for: Large 1-class group = upsell opportunity. Heavy multi-class tail = your most committed (and highest revenue) students — worth identifying for retention focus.

Subject Areas ?What: Breakdown of which subjects (Musical Theatre, Singing, Drama, Dance disciplines, etc.) account for current enrolment headcount.

How calculated: for each active enrolment record, classify the class into a subject family from lesson_format; sum enrolments per subject.

What to look for: Heavy concentration on one subject = single-point-of-failure risk if a key teacher leaves. Long tail of small subjects can be candidates for consolidation.

Classes Distribution ?What: Same data as the "Classes per Student" chart but tabular: # classes → student count → % of total → cumulative %.

What to look for: The cumulative % column tells you "X% of students take 2 or fewer classes" — useful for setting realistic targets for upsell campaigns.

# Classes Students % of Total Cumulative %

Cohort Retention Curves ?What: For each intake month (cohort), the % of those students still active N months after they joined.

Source: students.start_date assigns each student to a cohort; students.exit_date determines when they dropped off. Inferred-only exit dates are excluded by default (toggle to include).

How calculated: for each cohort and each month-since-intake, % still active = students from that cohort still active at month N ÷ original cohort size.

What to look for: Cohort lines that drop fast = onboarding problem for that intake. Cohorts that stay flat at 90%+ are sticky — what was different about how they joined? Replicate it.

For each intake month, what % of those students are still active N months later. Reveals which cohorts are sticky and which leak fastest.

Retention curves ?What: Same data as the heatmap below, plotted as a line per cohort. X-axis = months since joining, Y-axis = % still active.

How to read: Each line is one intake month. Lines that crash early = bad early-experience cohorts. Lines that stay above 75% past month 6 = your retention sweet spot.

Heatmap (rows = intake month, columns = months since intake) ?What: Triangular matrix — each row is an intake cohort, each column is months elapsed since they joined. Cell value = % of that cohort still active at month N.

Colour bands: green ≥90% (excellent), amber 75–89% (healthy), orange 50–74% (concerning), red <50% (critical).

How to read: Look down a column to compare same-tenure retention across cohorts. Look across a row to see how a single cohort decays. Diagonal red bands = a specific event hit multiple cohorts (e.g. a teacher leaving in month X).

Cell colour: ≥90% 75–89% 50–74% <50%
Student School Year Age Classes At Risk ? Attendance ? Tenure Customer Email

Weekly Pack

Loading…

Run every Monday morning. The Reception/Principal weekly debrief.

What's inside (7 sections)
  • Headline numbers — last weekend at a glance
  • Weekend Retrospective — birthdays, no-shows, trials, watch list
  • Trial Conversion Tracker (last 7 days)
  • Missed-3-Weeks call list
  • Recent Exits (last 7 days)
  • Compliance heads-up (next 30 days)
  • Action log — blank prompts for what was decided

Monthly Pack

Loading…

Run on the 1st Monday of every month. The leadership review.

What's inside (7 sections)
  • Headline KPIs — Scorecard summary
  • Student headcount movement (started / joined / left / now)
  • Recent Exits (last 30 days) with parent contacts
  • At-Risk students summary (high-risk band only)
  • Class Revenue + Wage Costs — top/bottom margin classes
  • Cohort Retention snapshot
  • Action log + decisions taken

Why use the cycles?

The Reports hub is for "answer this specific question right now". Cycles are for "do the regular discipline". Running the same pack every Monday means co-Principals see the same data in the same order each week — patterns become visible, decisions get tied to evidence, and nothing slips through because someone forgot to look at it.

What this is. The Mailchimp PTSSIGNUP journey is a 9-email, 112-day sequence that runs from the day a new student is tagged. This view infers each email's send date from the student's DanceBiz start_date — so it's a planning tool, not a delivery log.
  • Day 0 Initial Sign Up · Day 5 Week 1: Stay Connected · Day 12 Week 2 · Day 19 Week 3 · Day 26 Week 4: Check In
  • Day 47 Week 6: LAMDA (skipped for Pre-School) · Day 61 Week 9 · Day 68 Week 10 · Day 82 Week 12: 3 Months In · Day 112 tag removed, sequence ends.
Caveat: if the PTSSIGNUP tag wasn't added on the start date (or wasn't added at all), the real Mailchimp send dates won't match these. Use Mailchimp's report for ground truth on actual delivery.

Sending in the next 7 days

Send date Days away Student Parent Email

Per-student schedule

Active students whose start date falls within the 112-day journey window. Pills show each email — green = already sent, amber = due in next 7 days, red = upcoming, grey = skipped (Pre-School LAMDA).

Student Parent School year Start Day Next email Sequence ends Timeline
1

Term Dates

40 teaching weeks. We back-fill from the first weekend of September and slot the holidays around your choices.

Show full week-by-week calendar
Word table preserves formatting when pasted into Word/Pages/Google Docs
2

Summer School

Auto-generates 4 courses ending in the last full week of August. Edit names, ages, dates, prices and features as needed — pattern repeats year-on-year. Editing a start date shifts every other course by the same offset.

Edit course details
3

Fees Matrix

Three blocks (per the Yellow Sheet). Block 1 is the standard tier table; Block 2 is the smaller graded dance classes; Block 3 is named flat-rate classes (e.g. Musical Munchkins, Didi Drama). Prices are per term (10 weeks) — per week + per class auto-calculated.

A single-page A4 PDF in the traditional Yellow Sheet layout — term dates + holidays + all 3 fee blocks.
4

Inspirations & Content

The bits only the principal can write. Saved as you type.

Performance & show dates
5

Terms & Conditions

The legal wording handed to parents at sign-up. Edit here, save to the cloud, generate a branded PDF whenever you need a fresh copy. The wording carries across academic years — bump the version date when you make material changes.

Last saved:
Formatting guide
Section heading: start the line with ##  (two hashes + space).
Numbered item: 1. **Title**: body text…  or  1. **Title** on its own line followed by the body underneath.
Bullet: start the line with (dash + space). Bullets attach to the numbered item or paragraph above them.
Plain paragraph: just write text. Blank line = paragraph break.
6

Payroll Diary

Monthly schedule of invoice deadlines and payment dates. Defaults: invoices in by the 28th of the month, payment on the last working day. February shifts earlier (28-day month). December usually moves earlier still so payroll lands before Christmas — both are configurable below.

7

Generate

Three formats — pick whichever your handbook needs. Everything is saved automatically and can be re-opened from the year picker.

📄 Branded PDF

Generate a PTS-branded PDF with whichever sections you tick. Logo and colour scheme inherited from the rest of the app.

Preview the handbook outline

                    
8

Generate mid/late August Reminder Letter

The "welcome back" letter that goes out to parents in the run-up to Term 1. Term-start dates are pulled live from your Year Setup calendar — placeholders like {{TERM_START_SAT}} are swapped at PDF time. Edit the wording, save to the cloud, generate the branded letter as a PDF on PTS letterhead.

Last saved:
Available placeholders & formatting
Date placeholders (filled from the Year Setup calendar at PDF time):
{{ACADEMIC_YEAR}} — e.g. 2024/2025
{{LETTER_DATE}} — e.g. August 2024
{{TERM_START_SAT}} — e.g. Saturday, 7th September 2024
{{TERM_START_SUN}} — e.g. Sunday, 8th September 2024
{{TERM_START_SAT_SHORT}} — e.g. 7th September
{{TERM_START_SUN_SHORT}} — e.g. 8th September
{{TERM_START_WEEKEND}} — e.g. 7th/8th September
{{SIGNATORY_NAME}} — defaults to Jenna Rushton
{{SIGNATORY_ROLE}} — defaults to Co-Principal
Formatting:
## Heading on its own line — centred & underlined section title (e.g. NEW SCHOOL YEAR — USEFUL INFORMATION).
**Whole line bold** — bold & underlined sub-heading (e.g. FAQ questions).
--- on its own line — hard page break.
• Each line in the source = one line in the PDF. Blank line = paragraph break. So the signatory name and role on consecutive lines render on consecutive lines.
£

Fees Matrix

Inherit last year's fees and apply a single % across the board, or edit any tier directly. The same data feeds the Year Setup handbook + PDF.

Freelance Contract Template

Wording used by every contract generated from the Staff page. Use the placeholders {{FREELANCER_NAME}}, {{FREELANCER_EMAIL}}, {{FREELANCER_ADDRESS}}, {{DATE}}, {{HOURLY_RATE}}, {{TERM_LABEL}}, {{TERM_DATES}}, {{PTS_SIGNATORY_NAME}} — they're swapped in at PDF time.

Upload weekly report CSV

From Google Forms → Responses → Download CSV. Re-upload the full sheet each week — existing weeks are updated, new weeks are added.

Stored weeks

No data uploaded yet.

Recent weeks (last 12)

Upload data to see weekly entries.

Dates auto-save as you type. Stored locally in your browser; if your Supabase staff table has columns dbs_expiry, first_aid_expiry, safeguarding_expiry (date type), they sync across devices automatically.

Notes auto-save as you type. Stored locally in your browser, scoped per academic term. PDFs use the same branded letterhead as the reminder letter.

📁
Drop CSV file here
or click to browse

Recent Imports

No imports yet this session

Data Tools

Retention & Risk

Students at risk of leaving and why

Attendance Watch

Active students with concerning attendance patterns — bucketed by severity. Click any row to open the student.

Loading…

Missed Recent Weeks

Active students who haven't attended in 3+ weeks (from a recorded last-attended date) or who've missed 2+ consecutive sessions where the date isn't tracked. Sorted by longest absence first — the immediate intervention queue.

Loading…

Exit Reasons Report

Why students leave, broken down by category (Within Control / External Factors / Engagement) and specific reason. Use to spot trends and focus retention efforts.

Loading…

Data Quality Audit WEEKLY

Comprehensive scan of all records for malformed phones, bad emails, orphans, duplicates, and date anomalies. Send to reception weekly for cleanup in DanceBiz / VTiger.

Current status:
Loading...
What does the audit check?
DanceBiz — Customers (active)
  • Malformed UK mobile numbers
  • Invalid email format
  • No contact details at all
  • Missing Reg ID (if has active kids)
  • Duplicate mobile/email
DanceBiz — Students (active)
  • No linked parent/customer
  • Parent marked inactive but student active
  • Missing Reg ID or DOB
  • Invalid dates (future DOB, exit before start)
  • Active but enrolled in 0 classes
DanceBiz — Staff (active)
  • Malformed mobile numbers
  • Invalid email format
  • No contact details
VTiger — Leads
  • Malformed mobile numbers
  • Invalid email format
  • No contact details (cannot follow up)
DanceBiz — Classes (active)
  • No teacher assigned

Severity: Critical = blocks linking/tracking. Warning = should fix but not urgent.

Trial Conversion Tracker

Leads who attended a trial but haven't converted yet. Conversion rate plummets after 14 days — call the recent ones first while the trial is still fresh in their mind.

Trials from:
Loading…

At-Risk Student Lists

Active students at risk of leaving. Most teams want "All at-risk"; the band-specific reports are for focused outreach.

Periodic

Monthly and term-by-term review

Monthly Snapshot Report COMPREHENSIVE

A 10-section branded PDF for any month: KPIs, trends, cohort analysis, demographics, areas of concern, high-risk students, recent joiners that need follow-up, trialled-but-not-signed-up leads, classes to look at, and where to focus marketing. Each section includes how it's calculated.

What's in the report?
  1. Cover & KPI summary — 5 headline KPIs vs target with status (on-track / at-risk / off-track)
  2. KPIs in detail — calculation methodology for each KPI
  3. Trends — last 12 months of every KPI in a single table
  4. Cohort retention — last 12 cohorts at month 6 + 12, plus the heatmap
  5. Demographics — active student counts by age band, gender, and school year
  6. New joiners — three buckets (≤2 weeks, ≤5 weeks, ≤6 months) with intervention flags
  7. High-risk students — score ≥ 61, ranked, with the contributing factors
  8. Trialled but not signed up — leads who attended a trial and didn't convert
  9. Classes of concern — under-filled, no teacher, recent dropouts
  10. Where to focus filling — fill rate by lesson format and by age band, ranked

Watchlist Report FOCUS

Surfaces the teachers, age groups, and classes that need attention right now — low fill, recent leavers, attendance issues, empty classes. One PDF, three sections, ranked by severity. Use this to decide where to focus next.

Current snapshot:
Loading...
What does the watchlist flag?
Teachers of Concern
  • Attendance rate < 70%
  • 2+ leavers from their classes this month
  • Avg occupancy across their classes < 50%
Age Groups of Concern
  • 3+ leavers in same age bucket this month
  • Active count down > 5% vs 30 days ago
  • Bucket retention < 90%
Classes of Concern
  • Empty (0 enrolled)
  • Occupancy < 50% (under-filled)
  • No teacher assigned
  • 3+ dropouts in last 30 days

Marketing

Demographics, postcodes, and lead sources

Marketing & Demographics Report NEW

Comprehensive multi-page PDF with postcode analysis, demographics, enrolment trends, lead sources, and marketing recommendations. Ideal for strategic reviews and board reports.

📊 Full Strategic Report

7-page PDF covering: executive summary · Liverpool area breakdown · district roll-up · top 15 areas visualisation · age & gender demographics · 12-month enrolment trends · lead source performance · actionable marketing insights.

~10 seconds
What's analysed:
  • Postcode → Liverpool area (L1–L40, CH41–CH66, WA8+)
  • District roll-ups (Sefton, Wirral, Knowsley, etc.)
  • Active vs inactive students per area
  • Retention rate, avg age, avg LTV by area
  • Net growth per area (last 12 months)
  • Underserved local areas (marketing targets)
  • Highest-value areas (where wealthy families cluster)
  • Lead source conversion rates

Data quality

Audits, missing refs, duplicates

Data Quality Reports

Identify records missing critical DanceBiz references (active students only)

👥 Customers Missing DanceBiz Ref

Customers with active students who are missing a DanceBiz ID. Need manual matching.

🎭 Students Missing DanceBiz Ref

Active students without a DanceBiz registration ID. Includes parent contact details.

Operations

Day-to-day operational outputs

Weekend Operations Brief FORTHCOMING

A printable pack for Reception and Admin: this weekend's birthdays, new students, trial bookings, students to watch, and follow-up calls. Run on Friday — circulate before Saturday.

Loading…

Weekend Retrospective LAST WEEKEND

A Monday-morning debrief on how last weekend actually went: birthdays celebrated, first-timers who showed up, confirmed no-shows for follow-up calls, trial outcomes, and current watch list.

Loading…

Weekly Ops Log Trends RECEPTION REPORT

Trends pulled from Reception's manual weekly report (Setup → Weekly Ops Log). Trial / sign-up / exit weekly trend, fees received vs outstanding over time, recurring maintenance & complaints, divergence vs DanceBiz, cover-teacher league, free-text search.

Upload data via Setup → Weekly Ops Log first.

Class Revenue per Term FEES x ENROLMENTS

Per-class term revenue derived from active enrolments and the fee blocks set in Year Setup. 1:1 lessons excluded. Each student's per-term fee is allocated across their classes — so a class shows what it's actually contributing to revenue, not just headcount.

Loading…

Birthdays Coming Up

Active students with a birthday in the next 14 days. Use the call list for that personal touch — a card, a quick message, a shout-out at the end of class.

Loading…

Weekend Timetable

Generate a branded Time × Studio grid PDF in 15-minute slots — print-ready for noticeboards and welcome packs. Pulls live class data, teachers, levels and venues.

Saturday

15-min grid · Studios as columns · classes drawn as cards spanning their full duration.

Sunday

Same layout as Saturday, branded with PTS palette and wordmark.

Both days

Two-page PDF — Saturday on page 1, Sunday on page 2. One file for the whole weekend.

Exports & snapshots

Raw data for AI analysis & longitudinal tracking

Data Exports & Snapshots

Centralised JSON exports for AI analysis (date-windowed Lead Funnel, Class Trends, Teacher Trends, Attendance, etc.) and weekly snapshots that build a true longitudinal time-series.

📤 JSON exports Date-range aware — Lead Funnel, Attendance, Class Trends, Teacher Trends and more.
📸 Weekly snapshots Freeze today's metrics — over time, builds a true week-by-week trend series.

Reference

How the metrics work

About Risk Scores

A weighted 0–100 score across four behavioural signals. Modelled on standard Early Warning System practice. Full methodology →

Attendance rate (40 pts)

90%+ = 0 · 80–89% = 10 · 70–79% = 22 · 60–69% = 32 · <60% = 40

Recent absences (30 pts)

Streak 0–1 = 0 · 2 in row = 12 · 3 in row = 22 · 4+ in row = 30

Class engagement (20 pts)

3+ classes = 0 · 2 = 5 · 1 = 12 · 0 = 20 (review record)

Tenure (10 pts)

12+ mo = 0 · 6–12 = 3 · 3–6 = 6 · <3 = 10

Low Risk · 0–30 Medium Risk · 31–60 High Risk · 61–100 Static factors (year group, new joiner) appear as context flags on the breakdown — not scored.

Data Quality Tools

Tools to improve and maintain data quality across your records.

🔧 Repair Baseline Import Dates
If a baseline import wrongly stamped today's date on historical leavers (crashing retention), this clears those bogus dates so you can re-infer correctly.
Run this FIRST after a baseline import, then Infer Exit Dates.
🔮 Infer Exit Dates
For inactive students without exit dates, estimate based on average tenure.
Applies Year 13 cap for students who would be over 19.
🔗 Re-link Orphaned Leads
Scans every lead with no customer link and tries to match it to a customer by mobile, then by email.
Catches leads imported before their customer existed, and leads with mobile typos where the email matches.
Runs automatically after every customer import — this button is for ad-hoc cleanup.

📊 Scorecard Targets

Configure monthly lead targets for the scorecard calculations.

📄 Freelance Contract Template

The contractor contract editor has moved to its own page under Setup → Contractors. This keeps Settings focused on system configuration.

Database Connection

Current Supabase connection status.

Connected jegfjhkffgdnzgtxvced.supabase.co

Date Range

Date range applies to time-windowed exports (Class Trends, Teacher Trends, Lead Funnel, Attendance). Pure snapshots are tagged "as of today" instead.

Weekly Snapshots ?A snapshot freezes today's key metrics. Take one each week to build true longitudinal trends — over time you'll have a real time-series of class fill, teacher load, lead conversion, and student counts.

KPI

Records

--

Loading...