🐉
Internal Documentation

CEO Quick Start Guide

Everything you need to manage your Purple Dragon dojos from a single dashboard.
2.3
May 2026
CEO / Franchise Owner
Internal
Navigation
Table of Contents

What's New in May 2026
Five updates rolled out across the network this month. They surface at the dojo level, but visible aggregate effects show up on your Overview:
  • AI Retention Digest — the dashboard now includes a weekly Claude-drafted briefing of members at risk of attrition, with suggested interventions. CEO Overview rolls these up across locations.
  • Lead Cadence Engine — the AMAA Sales Cycle (Awareness → Meet → Assess → Activate) now drives automated follow-up timing on every lead. Conversion-rate trends are visible in Reports & Analytics.
  • Training Schedules with iCal Subscriptions — members can subscribe to their personal class calendar from the portal. Drives engagement; no CEO config required.
  • Location Calendar Closures — admins can now publish holiday/closure dates that cancel sessions and notify booked members automatically. Set defaults at the org level under Settings → Closures.
  • Dojo Rent & Ad-Hoc Line Items — monthly financial reports now support custom line items (rent, utilities, one-off fees). Useful when reconciling P&L per location.
1

Logging In

Access the CEO portal with your credentials

  • Navigate to /login in your browser.
  • Enter the email address and password associated with your CEO account.
  • Complete two-factor authentication if prompted (SMS or authenticator app).
  • You will land on the CEO Overview Dashboard automatically because your account has the ceo role.
Tip
The system is a PWA. On your tablet or phone, tap Add to Home Screen for a native app-like experience with offline check-in support.
Security
CEO sessions expire after 24 hours of inactivity. All login attempts are recorded in the audit log. If your account is locked after 5 failed attempts, contact your system administrator.
2

CEO Overview Dashboard

A bird's-eye view of all dojos at a glance

The CEO Overview Dashboard at /ceo-dashboard aggregates data from every location in real time. No location filter is applied by default, so you see the entire organization.

Total Members
1,247
+23 this month
Monthly Revenue
$84.2K
+8.3% vs last month
Active Locations
6
All operational

The dashboard includes:

  • Revenue chart — month-over-month revenue across all locations with drill-down by dojo.
  • Enrollment trends — new members, cancellations, and net growth per location.
  • Alert panel — failed payments, expiring memberships, and overdue belt promotions.
  • Staff quick links — jump to the cross-location staff roster, onboarding wizard, or platform admin.
Failed Payments
12 need attention
Expiring Soon
34 memberships in 30 days
Check-ins Today
187 across all dojos
3

Organization Settings

Tier 1 & Tier 2 settings that cascade to every dojo

Navigate to /ceo-dashboard/settings to manage organization-wide configuration. Settings follow a three-tier inheritance model (see Section 16).

TabWhat It ControlsTier
BrandingOrganization name, logo, primary/accent colors, email footerTier 1
PaymentAuthorize.net credentials, late fee amount, retry schedule (24/48/72h), grace periodTier 1
CommunicationsSendGrid API key, Twilio SID, default SMS/email templates, WhatsApp fallback for Caribbean locationsTier 1
Billing DefaultsDefault plan prices, billing cycle (1st/15th), 3-day advance notice toggle, $25 late feeTier 2
Belt RanksMaster discipline list, default rank progressions (location-scoped copies created on dojo onboarding)Tier 2
ProgramsProgram templates (e.g., Little Dragons, Adult Karate) that new dojos inheritTier 2
How Inheritance Works
Tier 1 settings (branding, payment, comms) are organization-global and cannot be overridden by individual dojos. Tier 2 settings provide defaults that each dojo can customize. Tier 3 settings are dojo-local only. See Section 16 for the full inheritance diagram.
Payment Credentials
Changing Authorize.net credentials affects all locations immediately. Schedule changes during off-hours and verify with a test transaction before going live.
4

Staff Management

Cross-location staff roster with transfers and role management

The staff management page at /ceo-dashboard/staff shows every staff member across all dojos in a single, filterable table.

  • View all staff — see name, role, assigned dojo, last login, and status at a glance. Filter by location or role.
  • Change roles — promote or demote staff by selecting a new role from the dropdown. Changes apply immediately and are audit-logged.
  • Reset password — send a password reset email to any staff member. The link expires in 24 hours.
  • Transfer between dojos — reassign a staff member to a different location. Their permissions carry over; location-specific data (schedules, classes) does not.
  • Deactivate / reactivate — suspend a staff account without deleting it. Deactivated accounts cannot log in but preserve historical data.
RolePermissionsScope
CEOAll permissions, all locations — bypasses RLS via is_ceo()Global
AdminFull access within assigned location, including billing and settingsSingle location
Program DirectorDay-to-day operations — members, schedule, communications. Cannot rotate payment credentials.Single location
InstructorClass management, attendance, belt promotionsSingle location
Front DeskCheck-ins, member lookup, walk-in paymentsSingle location
Role Naming
The database enum is still owner for the top location role, but the UI label reads Admin everywhere. When staff see "Admin" in the role dropdown, that's the role with full location access.
Dojo Transfer
When transferring staff, the system preserves their user ID and audit trail. The old dojo's admin is notified automatically. You can transfer staff back at any time.
Role Changes
Changing a staff member's role takes effect immediately. If you downgrade an admin to instructor, they lose access to billing and member management features on their next page load.
5

Subscription & Billing

Platform subscription, location chargebacks, and invoicing

The subscription panel at /ceo-dashboard/subscription manages the platform-level subscription for your organization and individual location billing status.

  • Platform subscription — view your current plan (per-location pricing), billing cycle, and next invoice date.
  • Location chargebacks — configure how much each of your dojo locations pays your organization for use of the platform. Choose a charge model per location: flat (fixed monthly fee), per-member (rate × active member count), or custom. Use "Add Location" to set a rate or "Edit" to change an existing one.
  • Chargeback invoices — monthly invoices generated from your organization to each location based on its configured rate. Track status (pending, paid, overdue, waived, suspended) and view expected monthly totals across all locations.
  • Location suspend/reactivate — temporarily suspend billing for a location (e.g., seasonal closure). Suspended locations remain visible but stop generating chargeback invoices.
  • Invoice generation — generate and download PDF invoices for any date range. Invoices include line-item detail per member and payment method breakdowns.
  • Payment retry — failed auto-charges follow the retry schedule: 24h, 48h, 72h. After three failures, a $25 late fee is applied and the member is flagged for manual follow-up.
Billing Lifecycle
The system sends a 3-day advance notice before each charge. If payment fails, retries occur at 24h, 48h, and 72h intervals. After all retries fail, a $25 late fee is added and the admin is notified. See the billing workflow documentation for the complete lifecycle.
How Chargebacks Work
Your organization pays the platform subscription fee. You then charge each of your dojo locations a chargeback to cover that cost (and optionally generate margin). Each location owner sees their assigned rate and your organization's payment instructions on their own subscription page, where they enter their bank or card details to pay you.
6

Switching Between Dojos

Narrow your view to a single location

  • Click the location dropdown in the top navigation bar (shows "All Locations" by default).
  • Select a specific dojo to filter the dashboard, members, and financial data to that location only.
  • The selected location is stored as a cookie so it persists across page navigations.
  • To return to the cross-location view, select "All Locations" from the dropdown.
Security Note
The location dropdown is a UX convenience filter only, not a security boundary. Your CEO role grants access to all locations via Row Level Security policies at the database layer, regardless of which location is selected.
7

Dojo Dashboard

Location-specific metrics and management

After selecting a specific dojo, the dashboard adapts to show location-specific data:

  • Member count — active, paused, and cancelled members for this location.
  • Revenue breakdown — monthly recurring revenue, one-time payments, and outstanding balances.
  • Today's schedule — classes scheduled for today with instructor assignments and enrollment counts.
  • Recent check-ins — live feed of member check-ins at this dojo's kiosk.
  • Quick actions — add a member, create a class, process a payment, or view the schedule.
Tip
Each dojo dashboard is also accessible to the local admin at that dojo. The only difference is that admins see their own dojo only, while you can switch between any dojo.
8

Viewing Members Across Dojos

Unified member roster with cross-location search

  • Navigate to /members — because you are signed in as CEO, Row Level Security automatically returns every member across all locations (not just one dojo).
  • Use the search bar to find members by name, email, phone, or member ID.
  • Filter by location, membership status (active, paused, cancelled), belt rank, or program.
  • Click any member row to view their full profile, billing history, attendance log, and belt progression.
Multi-Location Members
If a member trains at multiple dojos, they appear once with all locations listed. Their billing and attendance are tracked per-location, but you see the unified view.
9

Membership Renewals

Track expiring memberships and automate renewal workflows

The Expiring Memberships widget on the CEO Overview at /ceo-dashboard surfaces memberships approaching expiration. There is no separate renewals page — drill into any specific member from the widget to take action.

  • Expiring memberships widget — shows members whose plans expire in the next 7, 14, or 30 days. Grouped by location.
  • Renewal types — auto-renew (card on file charged automatically), manual renewal (member must take action), or lapsed (no renewal configured).
  • Notification schedule — automated emails/SMS sent at 30 days, 14 days, 7 days, and 1 day before expiration. A final "membership expired" notice is sent on the expiration date.
  • Bulk actions — select multiple members and send a renewal reminder, extend their membership, or change their plan.
NotificationTimingChannel
First reminder30 days before expiryEmail
Second reminder14 days before expiryEmail + SMS
Urgent reminder7 days before expiryEmail + SMS
Final notice1 day before expiryEmail + SMS
Expired noticeDay of expiryEmail
Tip
Members with auto-renew enabled and a valid card on file will be charged automatically. The renewal widget only highlights those who need manual attention or whose payment method has failed.
10

Financial Data

Revenue, collections, and payment analytics

  • Revenue overview — total collected, outstanding, and projected revenue across all dojos or filtered by location.
  • Transaction log — every payment processed through the Payment Abstraction Layer, with status (settled, pending, failed, refunded).
  • Failed payments — a dedicated queue showing members with failed charges, retry status, and days overdue.
  • Export — download transaction data as CSV for accounting software import.
Collected (MTD)
$72.4K
94% collection rate
Outstanding
$4.8K
12 members overdue
Refunds
$1.1K
3 this month
PCI Compliance
The system never stores raw card numbers. All payment data is tokenized through Authorize.net's Accept.js. The transaction log shows last-four digits and transaction IDs only.
11

Onboarding Wizard

Guided first-time setup for new CEO accounts

Rather than a separate setup page, onboarding runs as an inline checklist widget at the top of your CEO Overview dashboard. It checks what's already configured and only shows the items that still need attention, with a progress bar and "Resume" links that jump to the right settings page.

  • Organization Profile — name, logo, primary contact. Jumps to /ceo-dashboard/settings → Branding.
  • Payment Setup — Authorize.net credentials for organization chargebacks (separate from each location's processor). Lives under Settings → Payment Processing.
  • Communications — email (SendGrid) and SMS (Twilio / Vonage / Telnyx) providers. Test both before going live.
  • First Location — opens the "Onboard New Dojo" modal (covered in Section 12).
  • Programs & Belt Ranks — set up disciplines and belt progressions at the org level; locations receive location-scoped copies on onboarding.
  • Invite Staff — add the first Admin at each location. They receive a password-setup email automatically.
Resume or Dismiss
The wizard saves progress automatically — each item is a link to the relevant page, so you can complete them in any order. Once every item is green you'll see a short celebration screen; dismissing after that hides the widget permanently (you can still edit settings from the sidebar).
12

Onboarding a New Dojo

Add a new location with zero code changes

Adding a new dojo is a data-only operation. No code deployment is required.

  • From the CEO Overview at /ceo-dashboard, click the "Onboard New Dojo" button. A modal wizard opens.
  • Fill in the dojo name, address, timezone, phone number, and operating hours.
  • The system creates the locations row and copies Tier 2 defaults (belt ranks, programs, billing settings) from your organization settings.
  • Belt ranks are location-scoped copies — the new dojo gets its own set that can be customized independently.
  • Create an admin account for the new location as part of the same wizard. The admin receives an email invitation with a setup link.
  • The new dojo appears in your location dropdown immediately and begins receiving data.
Caribbean Locations
For dojos in Caribbean regions outside standard NANP coverage, SMS is automatically routed through WhatsApp as a fallback. This is configured at the organization level in Communications settings.
Multi-Tenancy
Every table in the database has a location_id column. Row Level Security ensures that staff at Location A can never see data from Location B. Only your CEO account bypasses this filter.
13

Grading Events

Schedule and manage belt promotion events

  • Navigate to /belt-progress/grading and click "New Grading Event".
  • Enter an event title (e.g. "Spring 2026 Grading") and the event date, then click Create & Edit.
  • Inside the event, build one or more grading groups (for staggered sessions on the same day) and add candidates. The system suggests eligible members based on their current rank, days at rank, and classes since last promotion — instructors can add or remove candidates before finalizing.
  • For each candidate, set the attempt belt and review prerequisites (days trained, injuries/notes). Generate a printable grading sheet for the committee from the event page.
  • When the event is done, click Complete. The system validates that every candidate has been scored and that any grading fees are paid.
  • Once completed, all passing candidates are auto-promoted to their attempt belt. Their profile and belt history are updated instantly.
Belt Rank Isolation
Each location maintains its own belt rank progression. A "Blue Belt" at Location A may have different requirements than at Location B. The CEO copies ranks from an existing dojo during onboarding but each location can then customize independently.
14

Reports & Analytics

Data-driven insights across your organization

  • Membership report — active vs. inactive members over time, churn rate, and growth by location.
  • Revenue report — monthly/quarterly/annual revenue by location, plan type, and payment method.
  • Attendance report — class attendance rates, peak hours, and no-show patterns.
  • Belt progression report — average time-in-rank, promotion rates, and grading outcomes by discipline.
  • Staff report — classes taught, members managed, and login activity per staff member.

All reports support date range filtering, location filtering, and CSV/PDF export.

Tip
Use the "Compare Locations" toggle to see side-by-side metrics for any two dojos. This is useful for identifying best practices at high-performing locations.
15

Accounting Exports

QuickBooks, Xero, and monthly financial exports

The DMS exports financial data as CSV files that import cleanly into QuickBooks, Xero, FreshBooks, or any accounting software. The export tools live on the Finance → Overview page at /billing, plus a separate financial summary dashboard at /reports/financial.

  • Monthly Financial Export card — on /billing, pick a month and year, then choose an export:
    • Transaction Journal (CSV) — every ledger entry for the month, ready to paste into your general ledger.
    • Revenue Summary (CSV) — totals by category: revenue, tax, refunds, processing fees.
    • Email to me — sends both reports to your logged-in email address on demand via the /api/reports/financial-export/email endpoint.
  • Financial summary dashboard — at /reports/financial, filter by any date range to see net revenue, charges, credits, and a per-source breakdown. Click Export CSV for the raw ledger over the selected range.
ExportFormatBest For
Transaction Journal.csvQuickBooks, Xero, or any general-ledger import
Revenue Summary.csvMonthly bookkeeper package, tax prep, audits
Financial summary export.csvCustom date-range raw ledger pull
Tip
The current app does not schedule the monthly export automatically — you (or your bookkeeper) click Email to me at the start of each month. Each location's data is tagged separately so multi-location books stay clean.
Per-Item Tax
Taxes are now calculated per line item (not per invoice), so each export includes accurate jurisdiction-level tax breakdowns. Processing fees are recorded at charge time so they reconcile cleanly with your gateway statement.
16

Outreach Hub

Unified marketing, leads, and communications workspace

Outbound lead and communication tooling is consolidated under a single Outreach top-level sidebar item at /leads. Inbound replies live one click away in the separate Messages top-level item at /communications/inbox — not inside Outreach, so an unread badge is always visible no matter which page you're on.

Location in SidebarPurpose
Messages (top-level, /communications/inbox)Inbound SMS and email replies from members, threaded per member. Unread red dot on the sidebar. Reply in-line.
Outreach → root (/leads)Kanban pipeline of prospects. New → Contacted → Trial → Converted. Drag-and-drop, one-click convert to member.
Outreach → Journeys (/leads/forms)Build and embed web lead-capture forms. Submissions drop straight into the Outreach pipeline.
Outreach → Campaigns (/communications)Bulk email / SMS / WhatsApp campaigns to member or lead segments. Schedule sends, preview, track delivery.
Outreach → Referrals (/referrals)Member referral program tracking. Auto-credit referrers when their referral converts to a paying member.
Outreach → Automations (/automations)Trigger-based message flows: welcome series, birthday emails, re-engagement after absence, post-trial follow-up.
Outreach → Delivery Health (/communications/analytics)Open rates, click rates, bounces, unsubscribes, SMS carrier feedback. Flags providers that are degrading.
Inbound Messaging
When members reply to an SMS or email sent from the DMS, the response lands in Messages threaded against the member's profile, with an unread red dot indicator on the sidebar. Reply in-line without leaving the DMS — the reply uses the same channel as the original.
Multi-Provider SMS
Configure one of Twilio, Vonage, or Telnyx at the platform or organization level and all locations inherit automatically. Caribbean dojos fall back to WhatsApp where NANP SMS coverage is limited.
17

Member Merging

Family-aware duplicate detection and safe merging

The duplicate-detection engine has been rewritten to avoid false positives when family members share contact details. Navigate to /members/duplicates to review pairs.

How the new scoring works:

  • Family-linked pairs are excluded entirely — if two members already share a family_id, they're known relatives, not duplicates.
  • Date-of-birth conflicts are a hard exclusion — a 7-year-old and a 35-year-old will never be flagged as duplicates, even if they share an email address.
  • High-confidence matches require corroboration — same email and same DOB scores 100. Same name and same DOB also scores 100.
  • Single-signal matches score low — "shared email only" or "shared phone only" scores 20-25 with a "likely family — review" reason, instead of being flagged as a strong duplicate.
Match PatternScoreConfidence
Same email + same date of birth100Strong
Same name + same date of birth100Strong
Same email + same name90Strong
Same phone + same date of birth90Strong
Same phone + same name80Likely
Same first and last name only50Possible
Shared email only (likely family)25Review
Shared phone only (likely family)20Review
Merge Preview
Before confirming a merge, you see a row-by-row preview of every table that will be affected: attendance, plans, ranks, transactions, invoices, ledger entries, notes, documents, and bookings. Nothing is destroyed — the source member is deactivated and linked to the target via merged_into_id.
When to Use Family Linking Instead
If you see two real people who share contact info (parent + child, siblings), don't merge them. Instead, link them as a family from the member profile. The Family panel groups them together, applies family discounts, and stops them from showing up as duplicates.
18

Platform Admin

System health, audit logs, and advanced administration

Platform Admin is a separate surface for the platform operator (not the CEO of a single organization). It lives under /platform/* and is gated by the is_platform_admin() check server-side. Primary pages: /platform/dashboard, /platform/tenants (plus /platform/tenants/onboard), /platform/health, /platform/audit, /platform/alerts, /platform/impersonate, /platform/database, /platform/feature-flags, /platform/billing, /platform/ops, and /platform/settings.

FeatureDescription
System HealthReal-time status of database connections, payment gateway availability, SMS/email delivery rates, and API response times.
Audit LogEvery significant action (login, role change, payment, member edit) is recorded with timestamp, user, IP address, and details. Searchable and exportable.
Tenant ManagementView all locations as tenants. See database row counts, storage usage, and active user counts per location.
ImpersonationLog in as any staff member to troubleshoot their view. All actions during impersonation are clearly marked in the audit log.
Subscription ManagementView and modify the platform subscription tier, add/remove location slots, and manage payment method for platform fees.
Alert ConfigurationSet thresholds for automated alerts: failed payment count, low check-in rates, API error rates, and more.
Global SettingsFeature flags, maintenance mode toggle, and API rate limit configuration.
Impersonation
Impersonation is a powerful tool for support purposes. Every action taken while impersonating is logged with both the CEO's identity and the impersonated user. Use this feature responsibly and only for troubleshooting.
Tip
Set up alert thresholds early. For example, configure an alert if any location has more than 5 failed payments in a single day, or if the payment gateway error rate exceeds 2%.
19

Settings Inheritance Model

How Tier 1, Tier 2, and Tier 3 settings cascade

The DMS uses a three-tier settings model to balance consistency with per-dojo flexibility.

TierScopeWho Can EditOverride Allowed?
Tier 1 Organization-global CEO only No — applies to all locations uniformly
Tier 2 Organization defaults CEO sets defaults; local admins can override Yes — per-location customization
Tier 3 Location-only Local admin N/A — no inheritance, purely local

Tier 1 examples: Authorize.net credentials, SendGrid/Twilio keys, organization branding, CORS and security headers.

Tier 2 examples: Default billing cycle, late fee amount, belt rank templates, program templates, class duration defaults.

Tier 3 examples: Class schedule, instructor assignments, local promotions, dojo-specific announcements, kiosk PIN codes.

How Overrides Work
When a Tier 2 setting is overridden at a location, the local value takes precedence. If the local override is deleted, the setting reverts to the organization default. The settings UI shows a visual indicator (badge) next to any locally overridden value.
Tip
Use Tier 2 defaults strategically. Set your most common configuration as the default, then only override at locations that differ. This minimizes configuration drift across your dojos.
20

Mobile App (Android TWA)

Native Android wrapper for staff and members

The DMS now ships as an installable Android app via a Trusted Web Activity (TWA) wrapper. The app is a thin native shell around the existing PWA, so functionality stays in sync automatically — no separate codebase to maintain.

  • Distribution — the APK is published to Google Play under your organization's developer account. Members and staff install it like any other app.
  • Offline check-in — the kiosk page works offline inside the TWA wrapper. Check-ins are queued in IndexedDB and synced when connectivity returns.
  • Push notifications — the wrapper enables true native push for class reminders, payment alerts, and announcements.
  • Auto-updates — because the wrapper points to the live PWA, app content updates immediately when you deploy. Only the wrapper shell needs Play Store submission.
  • iOS — iPhone members can still install the PWA via Safari's "Add to Home Screen" for the same experience without a Play Store equivalent.
Branding
The Android wrapper uses your organization's logo, splash screen, and color theme from /ceo-dashboard/settings → Branding. Update branding once and the next wrapper build picks it up.
21

Accessibility

Built for everyone, on every device

  • Keyboard navigation — every interactive element is reachable via Tab. Focus indicators use a visible purple ring.
  • Screen reader support — all images have alt text, all buttons have aria-labels, and dynamic content uses aria-live regions.
  • Touch targets — all buttons and interactive elements meet the 44x44px minimum touch target size for mobile devices.
  • Form inputs — all inputs use 16px minimum font size to prevent iOS auto-zoom on focus.
  • Responsive layout — sidebar navigation on desktop, bottom tab bar on mobile. Data tables collapse to card layouts below 640px.
  • Color contrast — all text meets WCAG 2.1 AA contrast ratios (4.5:1 for normal text, 3:1 for large text).
  • Lighthouse scores — target gate is 80+ Performance and 90+ Accessibility on mobile.
PWA & Offline
The app works as an installable PWA. The kiosk check-in page supports full offline operation — check-ins are queued in IndexedDB and synced when connectivity returns. An amber "Offline mode" banner is shown when operating offline.

Quick Reference

Key URLs

  • CEO Dashboard/ceo-dashboard
  • Staff Management/ceo-dashboard/staff
  • Organization Settings/ceo-dashboard/settings
  • Platform Admin/platform/dashboard
  • Subscription & Billing/ceo-dashboard/subscription
  • Members (cross-location)/members
  • Find Duplicates/members/duplicates
  • Student Roll/rosters
  • Outreach Pipeline/leads
  • Messages (Inbox)/communications/inbox
  • Financial Report/reports/financial
  • Finance Overview & Export/billing

Keyboard Shortcuts

  • Command palette Cmd / Ctrl + K

The command palette is the single power-user shortcut — type any page name, member name, or action ("new member", "check in") and hit enter to jump straight there.