Class booking and payment platform

Classlane

One Link. Sold Out.

Classlane is a lightweight booking and payments platform for local classes and workshops. Built for independent instructors and small studios teaching pottery, yoga, coding, and cooking, it replaces DMs, spreadsheets, and cash with a single mobile link-in-bio. A two-minute Hold-to-Confirm waitlist auto-texts the next person, backfills cancellations, boosts revenue 18%, and cuts no-shows 28%.

Subscribe to get amazing product ideas like this one delivered daily to your inbox!

Classlane

Product Details

Explore this AI-generated product idea in detail. Each aspect has been thoughtfully created to inspire your next venture.

Vision & Mission

Vision
Empower independent instructors and small studios worldwide to fill every seat effortlessly, grow sustainable income, and strengthen local communities.
Long Term Goal
By 2029, power 50,000 instructors globally, process $500M in annual bookings, cut no-shows 25%, boost instructor revenue 18%, and maintain 75+ NPS.
Impact
For independent instructors and small studios, Classlane increases monthly revenue by 18% by converting last-minute demand and eliminating DM and admin churn, cutting no-shows by 28%, adding 22% more paid bookings via waitlist backfills, and saving 6 hours weekly formerly spent wrangling spreadsheets and payments.

Problem & Solution

Problem Statement
Independent instructors and micro-studios running pottery, yoga, coding, and cooking classes lose bookings to DMs, spreadsheets, and cash. Bloated, desktop-first booking tools miss mobile link-in-bio checkouts and last-minute waitlist backfills, causing no-shows, missed payments, and empty seats.
Solution Overview
Classlane replaces DMs, spreadsheets, and cash with a single mobile link-in-bio that handles booking and payment in seconds. A tap-to-join waitlist auto-texts the next person when a spot opens, holds it for two minutes, and confirms with one tap to fill last-minute gaps.

Details & Audience

Description
Classlane is a lightweight booking and payments platform for local classes and workshops. Independent instructors and small studios teaching pottery, yoga, coding, and cooking use it. It replaces spreadsheets, DMs, and cash with a single link-in-bio that fills seats, reduces no-shows, and gets you paid fast. Its Hold-to-Confirm Waitlist auto-texts the next person, holds the seat for two minutes, and converts last-minute interest with a tap.
Target Audience
Independent class instructors and small studios (25-55) losing bookings to DMs, Instagram link-in-bio reliant.
Inspiration
In a church-basement pottery class, her phone rattled with Instagram DMs as wet clay smeared a flour-dusted clipboard of names. She Venmoed three after they’d left; two never paid. Next week, four no-showed. She wiped her hands, saying she just wanted a link. That night I sketched Classlane: one mobile link-in-bio and a two-minute hold-to-confirm waitlist that texts the next person and fills last-minute openings with a tap.

User Personas

Detailed profiles of the target users who would benefit most from this product.

S

Schedule-Syncing Sam

- Age 33-45; caregiver of two kids ages 6-11. - Suburban near mid-sized city; two-car household. - Mid-level professional; combined income $110k–$180k. - iPhone user; shared family Google Calendar.

Background

After a costly double-booking and a missed pickup, Sam rebuilt the family routine around shared calendars. Previously used cash and clipboards at studios; now insists on multi-attendee checkout and automatic reminders to protect evenings.

Needs & Pain Points

Needs

1. Book multiple children in one checkout. 2. Automatic calendar sync and conflict detection. 3. Transfer seats to sibling when plans change.

Pain Points

1. Double-booking causes missed classes and fees. 2. Separate checkouts for each child. 3. Last-minute cancellations waste prepaid spots.

Psychographics

- Craves order amidst family chaos. - Values reliability over novelty or flair. - Motivated by kids’ progress and smiles. - Loathes wasting prepaid, nonrefundable seats.

Channels

1. Instagram Stories - class updates 2. Facebook Groups - local recs 3. SMS - confirmations 4. Google Calendar - family sync 5. Nextdoor - neighborhood tips

G

Gifting Grace

- Age 24-40; urban or inner-suburb resident. - Purchases 6–12 gifts yearly; mid-to-high discretionary spend. - Uses iPhone; shops evenings from couch. - Works in creative or tech-adjacent roles.

Background

After gifting vouchers that expired unused, Grace now prioritizes frictionless redemption and clear balances. Loves surprising friends with pottery nights, pasta workshops, and candle-making classes discovered on social.

Needs & Pain Points

Needs

1. Purchase gift with recipient email or phone. 2. Transferability and remaining balance tracking. 3. Scheduled delivery and reminder nudges.

Pain Points

1. Gift vouchers expiring unused. 2. Confusing redemption steps for recipients. 3. Unclear balance or partial use.

Psychographics

- Seeks meaningful, story-worthy local experiences. - Avoids admin; loves effortless checkout. - Enjoys discovering local gems to share. - Values flexibility for recipient schedules.

Channels

1. Instagram Ads - gifting ideas 2. TikTok - local experiences 3. SMS - gift delivery 4. Email - receipts 5. Google Search - last-minute

T

Touring-Teacher Tasha

- Age 26-38; solo entrepreneur instructor. - Travels to 6–10 cities yearly. - Android or iPhone; hotspot and mobile POS. - Income variable $40k–$90k with seasonal spikes.

Background

A viral Reel sold out her first roadshow, but DMs, cash, and timezone mix-ups caused chaos. Adopted link-in-bio bookings and automated waitlists to backfill cancellations and keep tours profitable.

Needs & Pain Points

Needs

1. City-switching schedules with local timezones. 2. Rapid payouts after each event. 3. QR check-in and automated waitlist texts.

Pain Points

1. No-shows when flying city-to-city. 2. DMs overload for seat requests. 3. Manual timezone mistakes causing confusion.

Psychographics

- Thrives on momentum and tour energy. - Values speed, simplicity, on-the-fly control. - Growth-motivated; measures seats and payouts. - Risk-averse to no-shows while traveling.

Channels

1. Instagram Bio - primary link 2. Instagram DMs - inquiries triage 3. TikTok - demand generation 4. SMS - confirmations 5. WhatsApp - international

M

Metrics-Minded Maya

- Age 28-45; runs 3–5 weekly classes. - STEM/business background; spreadsheet fluent. - Laptop and iPhone; suburban studio. - Teaching income $60k–$120k annually.

Background

A former analyst turned instructor, Maya grew a steady base but plateaued. Spreadsheet hacks broke at scale, pushing her toward actionable dashboards and controlled experiments.

Needs & Pain Points

Needs

1. Slot-level analytics and cohort retention. 2. A/B pricing and schedule experiments. 3. Automated nudges to fill weak classes.

Pain Points

1. Blind spots on what actually sells. 2. Static pricing leaves money on table. 3. Manual reporting wastes precious hours.

Psychographics

- Data guides every scheduling choice. - Obsessed with reducing empty seats. - Open to structured test-and-learn iterations. - Pragmatic operator, avoids shiny-object trends.

Channels

1. Email - performance digests 2. Google Sheets - exports 3. Instagram - promos 4. SMS - targeted nudges 5. YouTube - technique content

S

Space-Sharing Sergio

- Age 30-50; manages shared studio or maker space. - 2–3 rooms; 10–20 instructors rotating. - Uses Mac at desk; iPhone on floor. - Revenue from rentals and ticket splits.

Background

Double-reserved rooms and cash miscounts sparked disputes and refunds. Sergio now screens instructors, co-lists events, and tracks splits with paperless attendance logs for audits.

Needs & Pain Points

Needs

1. Shared calendars with room-level capacity. 2. Co-host roles and automatic revenue splits. 3. QR check-in logs for audits.

Pain Points

1. Double-booked space causing disputes. 2. Chasing instructors for payment reconciliation. 3. No paper trail during inspections.

Psychographics

- Values fairness and transparency in partnerships. - Conflict-averse; insists on clear, shared availability. - Efficiency-minded, detests manual reconciliation and chasing. - Community-builder at heart, nurtures instructor relationships.

Channels

1. Google Calendar - master schedule 2. Email - agreements 3. Instagram - venue promos 4. SMS - urgent changes 5. Slack - instructor coordination

C

Calendar-Blocking Ben

- Age 25-44; urban knowledge worker. - Heavy Google Calendar user; Android or iPhone. - Spends $100–$300 monthly on classes. - Lives alone or with partner; no kids.

Background

After losing deposits to opaque policies, Ben began pre-booking blocks and tracking commitments tightly. Favors platforms that sync cleanly, send early reminders, and allow flexible rescheduling within rules.

Needs & Pain Points

Needs

1. Calendar sync with recurring bookings. 2. Simple self-serve reschedule within policy. 3. Transparent fees before checkout.

Pain Points

1. Hidden fees at payment. 2. Reminders too late to adjust. 3. Rigid reschedule rules punish planners.

Psychographics

- Plans ahead to reduce decision fatigue. - Values predictability and clear policies. - Productivity nerd; loves clean workflows. - Will pay more for reliability.

Channels

1. Google Calendar - planning 2. Gmail - confirmations 3. LinkedIn - discovery 4. Instagram - instructor updates 5. SMS - early reminders

Product Features

Key capabilities that make this product valuable to its target users.

Adaptive Hold

Dynamically adjusts the two‑minute hold window based on time-to-class and historical response speed. Near start time, holds shorten to fill seats faster; with more lead time, holds lengthen to give students a fair chance. Instructors keep momentum without micromanaging timers, boosting last‑minute conversions while staying student-friendly.

Requirements

Adaptive Hold Duration Engine
"As an instructor, I want the hold time to adjust automatically based on how soon class starts and how quickly my students usually respond so that seats fill faster without me tweaking timers."
Description

Implements a rules-and-model-based service that calculates the hold window per waitlist notification using two primary signals: time-to-class start and historical student response latency. Near start time, the engine shortens holds to accelerate backfill; with more lead time, it lengthens holds to improve fairness. Provides configurable global and per-class min/max caps, real-time recalculation on seat release and class state changes, and a safe default of 120 seconds when data is sparse or errors occur. Exposes a versioned API consumed by the waitlist and booking flows, supports caching and rate limiting, and logs inputs/outputs for auditability. Ensures deterministic behavior across devices and channels while reducing instructor micromanagement and improving last‑minute conversions.

Acceptance Criteria
Dynamic Hold by Time-to-Class
Given two notifications with identical inputs except time-to-class t1 < t2 When the engine calculates hold durations Then hold(t1) <= hold(t2) Given time-to-class <= configured_near_start_threshold and all inputs are valid When the engine calculates the hold duration Then the duration is strictly less than 120 seconds unless constrained by the minimum cap Given time-to-class >= configured_far_start_threshold and all inputs are valid When the engine calculates the hold duration Then the duration is greater than or equal to 120 seconds unless constrained by the maximum cap
Adjustment by Historical Response Latency
Given two students with historical median response latencies L1 < L2 and identical other inputs When the engine calculates the hold duration Then hold_for_L1 <= hold_for_L2 Given insufficient or no historical response latency for the notified student When the engine calculates the hold duration Then the latency signal is omitted from the calculation and the result is derived from time-to-class and caps only Given historical latency data is available When the engine calculates the hold duration Then the resulting duration is within the effective [min_cap, max_cap] bounds
Min/Max Caps Configuration and Enforcement
Given global min_cap and max_cap are configured When the engine calculates the hold duration Then the output is within [global_min_cap, global_max_cap] Given per-class caps are configured for a class When the engine calculates the hold duration for that class Then per-class caps take precedence over global caps and the output is within [class_min_cap, class_max_cap] Given a misconfiguration where an effective min_cap exceeds the effective max_cap When the engine calculates the hold duration Then it returns 120 seconds and logs a configuration_error reason
Safe Default and Error Handling
Given both primary signals (time-to-class and historical response latency) are unavailable or invalid for a request When the engine calculates the hold duration Then it returns 120 seconds Given any unrecovered runtime error, dependency timeout, or model failure occurs during calculation When the engine calculates the hold duration Then it returns 120 seconds Given the engine returns the safe default When writing audit logs Then the log contains a reason code indicating default_applied with the triggering condition
Real-time Recalculation on Seat and State Changes
Given a seat is released for a class with an active waitlist When the next hold duration is requested for that waitlist Then the engine recomputes using current inputs rather than serving a stale cached value Given a class start time or status changes (e.g., updated start time, moved to Starting/In Progress) When a new hold duration is requested Then any cached value is invalidated and a new duration is produced consistent with the updated time-to-class Given an active hold offer has already been sent to a student When class state changes Then the engine does not retroactively alter the already-committed hold duration for that offer
Versioned API Contract and Determinism
Given a request to a supported versioned endpoint (e.g., /v{n}/hold-duration) When submitted with identical inputs across devices or channels Then the engine returns the same duration for the same engine version Given a request to an unsupported API version When submitted Then the engine responds with a version_not_supported error (e.g., HTTP 404) and does not perform a calculation Given any client-provided timestamps When calculating time-to-class Then the engine derives time-to-class from server-side class start time and server receipt time to ensure determinism
Caching, Rate Limiting, and Audit Logging
Given two identical requests arrive within the configured cache TTL and no invalidation events have occurred When the second request is processed Then the engine serves the result from cache and records a cache_hit in metrics or logs Given a client exceeds the configured request rate limit When additional requests are received Then the engine responds with HTTP 429 and includes a Retry-After header consistent with the rate-limit policy Given a calculation completes When writing audit logs Then the log includes timestamp, request attributes (time_to_class, latency_summary, caps source), selected duration, and API/engine version, with sensitive PII excluded or redacted
Response Latency Tracking
"As a platform operator, I want to capture accurate response-time metrics so that the adaptive engine can make fair, data-driven hold predictions."
Description

Adds event instrumentation and data models to capture and aggregate response times from waitlist notification sent to seat claim (or expiry). Stores per-class, per-timeslot, and cohort-level metrics with privacy-conscious aggregation, retention windows, and opt-out support. Provides percentile distributions and recency-weighted signals to the Adaptive Hold engine, with fallbacks when data is insufficient. Integrates with existing analytics pipelines, ensures timezone normalization, and exposes query endpoints for experimentation and monitoring.

Acceptance Criteria
Instrumentation of Response Latency Events
Given a waitlist notification is sent When the send occurs Then a notification_sent event is persisted within 100ms with fields: event_id, class_id, timeslot_id, anonymized_user_id, cohort_tags, server_timestamp_utc. And when a student claims a seat before expiry Then a seat_claimed event is persisted within 100ms and latency_ms = claim_time_server - notification_sent_time_server is stored. And when a hold expires without claim Then a hold_expired event is persisted and latency_ms equals the configured hold duration. And events are idempotent by event_id; duplicate submissions result in a single stored record. And in a load test of 10,000 notifications, end-to-end event loss is <0.1% and timing error is <50ms at P95. And 99.9% of notification_sent events have a matching terminal event (seat_claimed or hold_expired) within 15 minutes or until class start, whichever comes first.
Timezone Normalization for Timeslot Boundaries
Given classes operate across multiple timezones and DST transitions When response latency events are ingested Then event timestamps are stored in UTC and enriched with class_local_tz and local_date derived from the class’s timezone. And aggregations by timeslot align strictly to the class’s local timezone boundaries (not the user’s timezone). And on DST change days, no events are assigned to incorrect local_date or timeslot_id (100% correctness on test fixtures). And for a validation dataset of 1,000 events across 5 timezones, mapping of UTC->local_date/timeslot_id matches the reference mapping 100%.
Per-Class, Per-Timeslot, and Cohort Aggregations
Given streaming and daily batch aggregation jobs are running When response latency events arrive Then percentiles p50, p75, p90, p95, p99, mean, min, max, and count are computed for each grouping: class_id, timeslot_id, and cohort (e.g., city, category). And streaming aggregates are available within 5 minutes of window close (P95), and daily batch completes within 30 minutes of schedule (P95). And for a seeded dataset of 5,000 events, computed percentiles match a reference implementation within ±1% absolute error. And aggregates are stored with schema_version, window_start, window_end, and retained for ≥180 days.
Privacy, Aggregation Thresholds, and Opt-Out Compliance
Given privacy requirements When events are stored Then no raw PII (name, phone, email) is persisted; anonymized_user_id is a rotating hash (salt rotates daily) and is non-reversible. And cohort aggregates are only exposed when there are ≥10 unique anonymized_user_id in the window; otherwise the metric is suppressed. And if a user has analytics_opt_out=true or submits a deletion request Then their historical events are purged within 30 days and they are excluded from future raw and derived datasets within 24 hours. And raw events are retained ≤30 days; derived aggregates ≤180 days; purge jobs emit audit logs proving deletion success.
Recency-Weighted Signals and Fallback Logic
Given Adaptive Hold requests a response latency signal When computing signals Then an exponentially weighted moving average (half-life 7 days) and percentile estimates are produced per timeslot_id and class_id with freshness_timestamp. And if events in the past 14 days are <30 for timeslot_id, fallback to class_id; if <50 for class_id, fallback to cohort; if cohort unavailable, fallback to global default of 120 seconds. And the signal response includes provenance ∈ {timeslot, class, cohort, global} and sample_size. And in backtests over 90 days, the selection logic always chooses the most specific level with sufficient data (100% of cases) and never returns an empty signal. And the signal retrieval service meets P95 latency <200ms and uptime ≥99.9%.
Analytics Pipeline Integration and Schema Versioning
Given existing analytics infrastructure When publishing events Then events are emitted to topic response_latency.v1 with a registered schema; schema changes follow semantic versioning with backward-compatible additions as minor releases. And breaking schema changes publish vNext in parallel for ≥30 days and provide dual-write until consumers migrate. And end-to-end delivery latency is <1s at P95 with at-least-once guarantees; consumers can deduplicate via event_id. And contract tests in CI validate schema compatibility; a breaking change without migration plan fails the build.
Metrics Query API for Experimentation and Monitoring
Given consumers query metrics When calling GET /metrics/response-latency with filters (class_id, timeslot_id, cohort, date_from, date_to, tz) Then the API returns JSON containing percentiles [50,75,90,95,99], mean, count, window, provenance, and sample_size. And requests require OAuth2 with scope analytics.read and are rate-limited to 60 requests/min per token. And performance meets P95 latency <300ms and P99 <500ms for cached ranges. And invalid filters return 400 with structured error_code and message; insufficient data returns 200 with provenance=global and sample_size=0. And API documentation includes examples and is validated by 20+ contract tests with 100% pass rate.
Instructor Controls & Caps
"As an instructor, I want to cap how short or long holds can be and toggle the feature per class so that I retain control while keeping the experience fair for students."
Description

Delivers UI and settings to enable/disable Adaptive Hold globally and per class, set minimum and maximum hold durations (e.g., 30–180 seconds), and preview the next computed hold based on current time-to-class and recent response data. Includes an emergency pause, role-based access, sensible defaults, and inline education/tooltips. All changes are audited, applied without downtime, and propagated consistently to the hold engine so instructors maintain control and student-friendly boundaries.

Acceptance Criteria
Global and Per-Class Adaptive Hold Controls
- Given Global Adaptive Hold is enabled and a class has no override, When a waitlist offer is generated, Then the offer metadata includes adaptive=true and the Adaptive Hold algorithm is applied. - Given Global Adaptive Hold is disabled, When a waitlist offer is generated for any class without an override, Then the offer metadata includes adaptive=false and no adaptive computation is used. - Given Global Adaptive Hold is disabled and a specific class override is set to Enabled, When a waitlist offer is generated for that class, Then the offer metadata includes adaptive=true and other classes remain adaptive=false. - Given Global Adaptive Hold is enabled and a specific class override is set to Disabled, When a waitlist offer is generated for that class, Then the offer metadata includes adaptive=false and other classes remain adaptive=true. - Given any toggle change is saved, When observed in system events, Then the effective setting is propagated to the hold engine within 2 seconds (P95) without interrupting in-flight offers, and newly created offers reflect the new state.
Hold Duration Caps Enforcement and Validation
- Given the Min and Max hold duration inputs, When values outside 30–180 seconds or non-integers are entered, Then the form shows inline validation, prevents save, and explains allowed bounds. - Given Min > Max, When attempting to save, Then save is blocked and an error states that Min must be less than or equal to Max. - Given valid Min/Max (e.g., Min=30, Max=180), When saved, Then values persist on reload and are applied to both global defaults and any class that inherits global settings. - Given the hold engine computes a duration, When generating a new offer, Then the resulting holdDuration is within [Min, Max] inclusive and rounded to whole seconds; boundary cases (30 and 180) are honored exactly. - Given invalid characters or paste input, When entered, Then the field sanitizes or rejects input without altering stored values.
Preview Next Computed Hold Accuracy and Refresh
- Given current time-to-class and recent response data exist, When the Preview Next Hold is displayed, Then its value matches the hold engine’s computed value for the same inputs within ±1 second. - Given Min/Max caps are adjusted, When the preview is visible, Then the preview updates within 1 second and never shows a value outside the saved caps. - Given time-to-class changes by ≥60 seconds, When no other inputs are modified, Then the preview auto-refreshes to reflect the new computation without a page reload. - Given the preview service is temporarily unavailable, When the preview panel is opened, Then a non-blocking error state is shown and form saves remain available.
Emergency Pause Behavior and Recovery
- Given Emergency Pause is activated at the account or class level, When active, Then no new waitlist offers are sent and the UI shows a persistent Paused indicator for the affected scope. - Given Emergency Pause is activated while one or more offers are in-flight, When active, Then those in-flight offers continue to their original expiry without reassignment; no additional offers are issued until pause is lifted. - Given Emergency Pause is lifted, When new offers are generated, Then normal adaptive behavior resumes using the latest saved settings and the next eligible waitlist member receives the offer. - Given Emergency Pause is toggled, When saved, Then the state change is propagated to the hold engine within 2 seconds (P95) and an audit log entry is created.
Role-Based Access and Audit Logging
- Given a user with role Instructor or Admin, When viewing Controls & Caps, Then all settings are editable and Save applies changes successfully. - Given a user with role Staff or Viewer, When viewing Controls & Caps, Then settings are read-only and any attempted API write returns 403 Forbidden. - Given any setting change (global toggle, per-class override, Min/Max, Pause), When saved, Then an audit record is created with actor, timestamp (UTC), scope (account/class), fields changed (before→after), and request ID; records are immutable and viewable by Admins. - Given the audit log view, When filtered by scope or date, Then only matching entries are shown; unauthorized users cannot access the audit log.
Sensible Defaults and Inline Education
- Given a new account first opens Controls & Caps, When the page loads, Then defaults are set to Min=30s and Max=180s and Adaptive Hold is enabled globally (can be changed by the user). - Given info tooltips are present next to each control, When a user hovers (desktop) or taps (mobile), Then a concise explanation of the control appears with guidance on recommended ranges and a link to Learn More. - Given accessibility requirements, When navigating via keyboard or screen reader, Then tooltip triggers are focusable, have ARIA attributes, and content is announced appropriately.
Zero-Downtime Change Propagation and Consistency
- Given any setting is changed and saved, When the system processes offers, Then no 5xx errors occur and no service restarts or degraded availability are observed during or after the change. - Given a change is saved at time T, When the next offer is created on any engine node, Then the configuration version applied is the latest saved version with propagation latency ≤2 seconds (P95) and ≤5 seconds (P99). - Given transient propagation failures, When retries execute, Then the final applied configuration is consistent across nodes and exactly-once in the audit log (no duplicate/conflicting entries). - Given multiple changes are saved in quick succession, When evaluated by the engine, Then last-writer-wins ordering is honored and no offer is created using a configuration older than the last saved version after the propagation window.
Dynamic Waitlist Messaging
"As a student, I want notifications that clearly tell me how long I have to claim a spot so that I can decide quickly and avoid missing out."
Description

Updates SMS, push, and in-app templates to display the current hold duration and deadline within the claim link and landing page. Supports live countdowns, localized time formats, and explicit expiry states. Handles dynamic adjustments when class conditions change, ensures deliverability with throttling and retries, and includes deep links that validate hold tokens server-side. Integrates with the existing auto-text pipeline to maintain momentum and reduce confusion for students at the moment of decision.

Acceptance Criteria
SMS Template Shows Dynamic Hold and Deadline
Given a waitlist offer with hold_duration = 90s and deadline = 2025-08-27T15:05:00Z When the SMS is generated and dispatched Then the SMS body includes the phrases "You have 1:30 to claim" and "until 3:05 PM" And the message contains exactly one deep link with a signed hold token parameter And total SMS length is <= 160 GSM-7 characters; otherwise the auto-shortened template is used And template rendering adds <= 250 ms latency And the message is dispatched within 1 second of the next-candidate event
Push Notification Displays Real-Time Hold Countdown
Given push notifications are enabled and a waitlist offer with hold_duration = 120s is triggered When the push is dispatched Then the notification title includes the class name and "2:00" And the body includes the absolute deadline (localized) And the push is delivered to the device within 5 seconds of dispatch (network permitting) When the user taps after 95 seconds Then the landing page opens showing 25 seconds remaining When the user taps after expiry Then the landing page opens directly in "Hold expired" state
In-App Landing Page Countdown and Expiry State
Given a valid hold token that expires in 75 seconds When the landing page loads Then a countdown displays remaining time synchronized to the server within <= 500 ms drift and ticks every second And the "Claim" CTA is enabled while remaining time > 0 When remaining time reaches 0 Then the page switches to explicit "Hold expired" state and the CTA is disabled And the token validation request returns an expired status within 300 ms When the app is backgrounded for >= 10 seconds and then foregrounded Then the countdown resynchronizes within 300 ms of server time
Localization of Time Formats and Time Zones
Given locale = en-US and device timezone = America/Los_Angeles for deadline 2025-08-27T22:05:00Z When the template renders Then the time displays as "3:05 PM" and uses 12-hour format Given locale = en-GB and device timezone = Europe/London for the same deadline When the template renders Then the time displays as "11:05" and uses 24-hour format Given the device timezone is unavailable When the template renders Then the time defaults to the class timezone and appends the timezone abbreviation
Dynamic Hold Adjustment Mid-Hold
Given an active hold with 90 seconds remaining on the landing page When the server updates the hold deadline to reduce remaining time to 45 seconds Then the countdown updates within 1 second to the new remaining time And a non-blocking "Timer updated" notice is shown for 2 seconds When the server extends the hold by 30 seconds Then the countdown and absolute deadline update within 1 second And no additional SMS is sent due to the adjustment
Deliverability Throttling and Retries
Given an SMS send attempt returns a retryable error (e.g., 5xx) When the system retries Then up to 3 retries occur with exponential backoff of 2s, 4s, and 8s And total retry time does not exceed 20 seconds Given the provider returns 429 rate limited When dispatching waitlist notifications Then the system throttles to the configured per-tenant rate (default 30 SMS/sec and 60 push/sec) and enqueues overflow Given a recipient received a waitlist notification in the last 60 seconds When a new notification would be sent for the same class Then the send is suppressed and the suppression is logged with reason "recent-notification"
Deep Link Token Validation and Error States
Given a deep link with a signed hold token that has not expired and is unclaimed When the link is opened Then the server validates the signature, class, seat availability, and hold state and returns 200 And the landing page shows the active countdown and enabled CTA Given the token is expired When the link is opened Then the server returns 410 Gone And the landing page displays "Hold expired" with a button to rejoin the waitlist Given the token has already been claimed When the link is opened again Then the server returns 409 Conflict And the landing page displays "Offer already used" with no claim CTA Given the token signature is invalid When the link is opened Then the server returns 401 Unauthorized And the landing page displays a generic error with a safe recovery path
Edge-case & Fallback Logic
"As an engineer, I want robust fallback and concurrency handling so that seats are allocated correctly even during failures or last-minute spikes."
Description

Defines deterministic behavior for low lead time (e.g., <15 minutes to class), message delivery failures, overlapping holds, concurrent claims, class cancellations, and time sync issues. Implements atomic seat allocation, idempotent hold creation, and circuit breakers that revert to the static two-minute hold when anomalies occur. Provides alerting, structured error logging, and observability dashboards so operational teams can detect and resolve issues without impacting seat fill or student trust.

Acceptance Criteria
Low Lead Time Hold Duration Determinism (<15 Minutes)
Given a class has a start_time in less than 15 minutes and Adaptive Hold is enabled When a waitlist notification is sent Then the hold duration is set to low_lead_hold_seconds (default 60s) and does not exceed 60 seconds And the hold expiry is calculated as created_at + hold_duration using a monotonic server clock And the student-facing countdown matches the server hold_duration within ±1 second
Message Delivery Failure Fallback & Next-In-Line
Given a waitlist notification is initiated When the primary SMS provider responds with a non-2xx status or no delivery receipt within 15 seconds Then the system retries once via the secondary provider within 5 seconds And if the retry also fails or times out, the candidate is marked undeliverable and skipped And the next waitlister is notified within 5 seconds using a static 120-second hold And the failure event is logged with correlation_id, provider, error_code, and message_id
Idempotent Hold Creation Prevents Overlaps
Given CreateHold requests with the same idempotency_key for the same user and class arrive within 60 seconds When the requests are processed Then only one hold record is created and the same hold_id is returned for all duplicates And seat_available decrements at most once for that seat And any duplicate request without a valid idempotency_key receives 409 Conflict and no new hold is created
Concurrent Claims Race Resolution
Given a single seat is held and two claim requests are received within 100 milliseconds When the claims are processed Then exactly one claim succeeds and the seat is allocated atomically And the losing request receives 409 Conflict with reason "SeatAlreadyClaimed" and is not charged And the waitlist advances to the next candidate within 5 seconds if applicable
Class Cancellation During Active Holds
Given a class state changes to Canceled while there are active holds or pending claims When the cancellation is confirmed Then all active holds are invalidated immediately and become unclaimable And pending payment authorizations tied to those holds are voided or never captured And students with active holds receive a cancellation notice within 10 seconds And claim endpoints for those holds return 410 Gone
Circuit Breaker Threshold & Auto-Recovery
Given anomaly events of types {delivery_failure, claim_timeout, clock_skew_detected} are recorded When 5 or more anomalies occur within a rolling 2-minute window for the same class Then the circuit breaker opens for that class and the hold strategy reverts to a static 120-second hold And while open, adaptive adjustments are disabled and a breaker_open metric is emitted every minute And after 10 consecutive minutes with fewer than 2 anomalies per 2-minute window, the breaker auto-resets to Adaptive Hold And manual override can force open/close via admin API with an audit trail entry
Observability, Structured Logging, and Alerts
Given a synthetic failure is injected for a test class When the event occurs Then a structured log is written within 5 seconds containing {timestamp, environment, class_id, user_id, event_type, severity, correlation_id, error_code} And dashboard panels for delivery_failures, claim_conflicts, breaker_state, and clock_skew reflect the event within 1 minute And an on-call alert is triggered when delivery_failures >= 10 within 5 minutes, containing a link to the relevant dashboard and correlation_id search And logs and metrics are retained for at least 30 days
Impact Analytics & A/B Testing
"As a product manager, I want to A/B test and monitor the impact of Adaptive Hold so that we can validate outcomes and optimize settings before full rollout."
Description

Introduces an experimentation layer to compare Adaptive Hold against a static baseline across classes, cohorts, and time windows. Tracks conversion rate, time-to-fill, no-show rate, and student satisfaction proxies, with guardrails (sample sizing, stop-loss) and staged rollout controls. Provides instructor- and internal-facing dashboards to visualize impact and tune min/max caps, enabling data-driven iteration and confident, incremental deployment.

Acceptance Criteria
Randomized Assignment & Eligibility Guardrails
Given a class session with waitlist enabled and experimentation turned on When the session is created Then the session is randomly assigned to Adaptive Hold (treatment) or Static Hold (control) with the configured split (default 50/50), stratified by instructor and weekday/weekend Given a session has been assigned a variant When waitlist offers are sent for that session Then all offers in that session inherit the same variant (sticky) until the session ends Given eligibility rules When a session has fewer than 3 historical waitlist offers per session average, is a free event, or the instructor manually overrides hold duration Then the session is marked ineligible and routed to Static Hold with assignment logged as "excluded" Given assignment occurs When the decision is made Then an immutable log entry records experiment_id, variant, stratification buckets, timestamp, and actor=system
Sample Size, Power, and Stop-Loss
Given an experiment configuration with target MDE and power When traffic forecasts are computed Then the system calculates required sessions per arm to achieve >=80% power at the specified MDE and blocks start if projected enrollment is insufficient by >10% Given an active experiment When either primary metric (conversion rate) shows a control-over-treatment delta worse than the stop-loss threshold (e.g., -3pp) with two-sided p<0.05 for two consecutive daily windows and >=100 sessions per arm Then the system auto-pauses the experiment, routes new sessions to control, and notifies owners within 5 minutes Given minimum runtime constraints When the experiment has not yet reached 7 calendar days and 100 sessions per arm Then no "winner" recommendation is produced unless a stop-loss is triggered
Metric Definitions and Data Quality
Given event streams for waitlist_offer_sent, hold_accepted, booking_paid, class_attended, and feedback_signal When metrics are computed Then conversion_rate=booking_paid within the hold window / waitlist_offer_sent, time_to_fill=median time from seat available to booking_paid, no_show_rate=1 - attended/booking_paid, satisfaction_proxy=opt_out_rate + complaint_tag_rate; all definitions are applied consistently across variants Given metric computation jobs When events are ingested Then 99% of events are linked across the above entities within 60 seconds and daily missing/unlinked events stay below 0.5%; otherwise the experiment is flagged "data_quality_alert" and new assignments default to control until resolved Given a metric view When a user drills down to a session or instructor Then all counts and denominators reconcile within ±0.5% of raw event exports
Instructor Dashboard: Visibility and Safe Controls
Given an instructor with active experiments When they open Analytics Then they see per-variant conversion rate, time-to-fill, and no-show deltas with 95% confidence intervals for 14 and 30 days, updated within 15 minutes of event arrival Given role-based access When an instructor is logged in Then they can only view data for their own classes and cannot see other instructors' aggregates Given min/max hold caps are editable When the instructor adjusts caps within allowed bounds (e.g., 30s–5m) and confirms Then changes are validated against guardrails, logged with user_id/time, preview projected impact, and take effect for new sessions within 10 minutes
Internal Dashboard: Cohorts, Export, and Audit
Given an internal analyst When they open the A/B dashboard Then they can segment results by class category, time-to-class buckets (<2h, 2–24h, >24h), region, and instructor cohort, with p-values and confidence intervals displayed Given an experiment config change When min/max caps or splits are edited Then an annotation is created on the time series and in the audit log with who/what/when, and all subsequent metrics reflect the new config from the change timestamp Given export needs When the analyst requests CSV for a selected date range Then the export completes within 60 seconds for up to 1,000,000 rows and includes experiment_id, variant, metrics, and segmentation keys
Staged Rollout, Canary, and Kill Switch
Given rollout planning When enabling Adaptive Hold experiment Then the system supports staged percentages per scope (global, region, instructor, class category) starting at 1% canary, then 10%, 25%, 50%, 100% with scheduled or manual ramps Given a critical issue When the kill switch is activated or experimentation service becomes unhealthy for >30 seconds Then all new sessions are routed to Static Hold within 60 seconds and a system-wide alert is issued Given staged rollout states When a rollback is initiated Then the prior stable percentage is restored within 5 minutes and all in-flight sessions retain their current variant (no mid-session flips)
Reliability, Performance, and Privacy
Given assignment requests When a session is created Then variant assignment returns in <50 ms p95 and <150 ms p99 and the service maintains 99.9% monthly availability Given privacy requirements When metrics and logs are stored Then PII (phone, email) is stored separately or hashed, access is restricted by role, and deletion requests propagate to experiment logs within 7 days Given auditability When experiment decisions or overrides occur Then immutable audit logs capture actor, reason, before/after, and are queryable for at least 13 months

Reply Codes

Enable richer actions with a single text: Y2 to claim two seats, Y-PACK to use credits, Y-GIFT to book for a friend, or Y-CARD to switch payment. Students get flexible control without opening a link, and instructors see higher conversion from clear, low-friction replies.

Requirements

Reply Code Parsing & Routing Engine
"As a student replying to a booking text, I want my short code reply to be understood automatically so that my booking action completes without needing to open a link."
Description

Build a robust inbound-SMS interpreter that normalizes and validates reply codes (e.g., Y, Y2, Y-PACK, Y-GIFT, Y-CARD), handles case/spacing/hyphen variations, extracts parameters (e.g., seat count), and deterministically routes to the correct action handler. The engine must be context-aware (class ID, waitlist hold window, user identity, prior messages), idempotent to avoid duplicate bookings, and resilient to ambiguous inputs with clear fallback prompts. It integrates with Classlane’s messaging service, identity, bookings, payments, waitlist, and audit logs, and supports instructor-level enable/disable and alias configuration.

Acceptance Criteria
Normalize and Parse Reply Code Variations
Given inbound SMS text containing supported codes with arbitrary case, spaces, or hyphens (e.g., "y2", "Y-2", " y - 2 ", "Y PACK", "y-pack", "Y - card"), When the engine parses the text, Then it normalizes to canonical codes: "Y", "Y2", "Y-PACK", "Y-GIFT", or "Y-CARD". Given a message with a numeric suffix (e.g., "Y3"), When parsed, Then the seatCount parameter equals the numeric value; seatCount must be an integer between 1 and 9 inclusive; otherwise classify as ERROR:INVALID_SEAT_COUNT. Given a message with a code requiring no parameters (e.g., "Y", "Y-CARD"), When parsed, Then no extraneous parameters are set and normalization preserves canonical form. Given multiple tokens present (e.g., "Y 2 now"), When parsed, Then the engine extracts the single most-confident valid code; If two or more valid codes are detected with equal confidence, Then classify as AMBIGUOUS and do not proceed to action.
Deterministic Routing to Action Handlers
Given a valid canonical code and resolved context, When routing occurs, Then exactly one handler is invoked deterministically: Y->confirm seats=1; Yn->confirm seats=n; Y-PACK->use credits; Y-GIFT->gift booking; Y-CARD->switch payment. Given an instructor alias map (e.g., "YES"->"Y", "PACK"->"Y-PACK"), When an aliased code is received, Then routing resolves to the same handler as its canonical target. Given a disabled code for the instructor, When that code is received, Then no handler is invoked and a context-relevant fallback SMS is sent. Given conflicting alias definitions (two aliases mapping to different targets), When configuration is saved, Then validation fails with a conflict error and previous valid mapping remains active.
Context Awareness and Hold Window Enforcement
Given a reply to a waitlist hold SMS received within the 2-minute hold window, When a valid claim code is parsed, Then the engine resolves classId, userId, seat availability, and applies the claim; If outside the window, Then decline and trigger waitlist next-person flow. Given the conversation lacks classId or userId context, When a valid code is parsed, Then the engine requests disambiguation (e.g., ask for class link) and performs no booking mutation. Given prior messages established seatCount, When the user sends "Y" without a count within the same thread and within 15 minutes, Then the engine uses the last confirmed seatCount if policy allows; otherwise defaults to 1 and informs the user.
Idempotency and Duplicate Message Protection
Given duplicate inbound messages with identical normalized code, parameters, and context within 5 minutes, When processed, Then exactly one booking/payment mutation occurs and subsequent duplicates return a non-mutating confirmation referencing the existing action. Given a handler partially completes and a retry occurs, When retried with the same idempotency key, Then no additional bookings are created and the final state is a single confirmed booking. Given differing codes for the same hold (e.g., "Y2" then "Y"), When the first succeeds, Then later messages within the hold window do not mutate state and instead reply with current status and instructions to modify via link.
Ambiguous or Invalid Input Fallback Prompts
Given a message containing multiple valid codes or mixed intent (e.g., "Y 2 gift"), When parsed, Then classify as AMBIGUOUS and send one clarification SMS listing up to 3 valid options relevant to the current context; no booking mutation occurs. Given an invalid seat count (0, non-numeric, or exceeding available/policy), When parsed, Then send a prompt with the allowed range and do not reserve seats. Given an unsupported or misspelled code, When parsed, Then suggest nearest valid codes using Levenshtein distance <= 2 (max 3 suggestions); if none, send a generic help prompt.
Instructor Enable/Disable and Alias Configuration
Given the instructor has disabled a specific code (e.g., Y-GIFT), When a student sends that code, Then the engine responds with a tailored message and does not route to the handler. Given instructor-defined aliases are submitted, When saving configuration, Then the engine validates for conflicts with existing codes/aliases, reserved words, and regex safety; invalid configurations are rejected with actionable errors. Given multiple instructors with different alias maps, When messages are processed, Then the engine applies only the alias map for the associated instructor/class context; no cross-tenant leakage occurs.
Integration and Audit Logging
Given any processed message (success, decline, ambiguous, error), When completed, Then a single audit log entry is written with correlationId, userId, classId, normalizedCode, parameters, decision, handlerName, idempotencyKey, and timestamps, available for query within 60 seconds. Given calls to bookings, payments, waitlist, identity, or messaging, When invoked by a handler, Then each call is wrapped with retries and compensating actions as configured; failures are logged and the user receives a clear SMS status without partial state left unhandled. Given an outbound SMS is sent as a result of processing, When delivery fails, Then the engine retries once via alternate route (if available) or falls back to a link-based instruction and records the outcome in audit logs.
State-aware Execution & Waitlist Integration
"As a waitlisted student who receives a hold text, I want to confirm my seat with a quick reply so that I can secure it before the hold expires."
Description

Ensure reply code actions respect the two-minute Hold-to-Confirm workflow and current inventory state. When seats are held for a waitlisted student, code execution must atomically confirm within the hold, extend/expire holds appropriately, and trigger backfill if the user declines or times out. Outside waitlist holds, codes should check real-time availability, handle contention with optimistic concurrency, and produce consistent outcomes. System should log transitions and outcomes for reconciliation and customer support.

Acceptance Criteria
Waitlist Hold — Atomic Confirmation via Y2 within 120s
Given a waitlisted student has an active 120-second hold for 2 seats and a valid default payment method on file When the student replies "Y2" within the remaining hold window Then exactly one booking record for 2 seats is created, the card is charged successfully once, the hold is released immediately, inventory decreases by 2, and a confirmation SMS is sent within 5 seconds And no other user is offered those seats after confirmation, and any concurrent processing attempts for the same hold are rejected without additional charges
Waitlist Hold — Decline or Timeout Triggers Backfill
Given a waitlisted student has an active hold for N seats When the student replies "N" or does not reply within 120 seconds Then the hold expires, no charge occurs, a cancellation SMS is sent to the student, and the next waitlisted student is auto-texted within 5 seconds offering N seats And inventory is reserved exclusively for the next waitlisted student for a new 120-second hold, and all state transitions (expire -> offered_to_next) are logged
Open Inventory — Optimistic Concurrency on Simultaneous Claims
Given a class has 1 seat available and two students concurrently send a claim code ("Y" or "Y1") outside any waitlist holds When their requests are processed Then exactly one booking succeeds and receives a confirmation SMS within 5 seconds, the other receives a "Sold out" SMS within 5 seconds, and the final inventory is 0 with no overbooking And the failed request is not charged, and a contention event is logged with both request IDs and outcome codes
Waitlist Hold — Use Credits with Y-PACK
Given a waitlisted student has an active hold for M seats and has at least M credits available When the student replies "Y-PACK" within the hold window Then M credits are deducted atomically, a booking for M seats is created, the hold is released, and a confirmation SMS is sent within 5 seconds And if the student has fewer than M credits, the system replies within 5 seconds with an insufficiency message and payment option, without consuming any credits and while keeping the hold active for its remaining time
Waitlist Hold — Switch Payment Method with Y-CARD
Given a waitlisted student has an active hold and no usable default payment method When the student replies "Y-CARD" within the hold window Then the system sends a secure payment update flow immediately, extends the hold by 60 seconds, and upon successful card update within the extended window confirms the booking and sends a confirmation SMS within 5 seconds And if the card update is not completed before the extended hold expires, the hold is released, no charge occurs, the next waitlisted student is auto-texted within 5 seconds, and the event is logged with outcome=payment_update_timeout
Waitlist Hold — Book for a Friend with Y-GIFT
Given a waitlisted student has an active hold for 1 or more seats and the class is gift-eligible When the student replies "Y-GIFT +<recipient_phone>" within the hold window and has a valid payment method or sufficient credits Then a booking is created assigning one seat per recipient phone provided (up to the held quantity), the payer is the original student, the hold is released, the recipient(s) receive confirmation SMS within 5 seconds, and the original student receives a gift confirmation SMS And if any recipient phone is invalid or opted out, the system responds within 5 seconds with an error for that recipient and does not consume those seats; the hold remains active for the remaining time for valid recipients
System Observability — State Transition Logging and Reconciliation
Given any reply code action (Y, Y1, Y2, Y-PACK, Y-GIFT, Y-CARD) executed under a hold or open inventory When the action completes with Success, Decline, Timeout, Insufficient Inventory, Insufficient Credits, Payment Failure, or Concurrency Conflict Then a structured log entry is written with correlation_id, user_id, class_id, action_code, requested_seats, pre_state, post_state, outcome, timestamps (received_at, processed_at, completed_at), hold_id (if any), and payment_reference (if any), and entries are queryable by support within 60 seconds And daily reconciliation reports show balanced totals for holds, inventory, and bookings with zero mismatches; any mismatch raises an alert within 5 minutes
Quantity-based Seat Claim (Y2, Y3, etc.)
"As a student booking for friends, I want to claim multiple seats with a single text so that I can secure spots quickly without a multi-step checkout."
Description

Support numeric quantity parsing to claim multiple seats with a single reply (e.g., Y2). Validate max seats per booking, class capacity, and instructor policies. If partial capacity remains, offer a downgrade prompt (e.g., only 1 seat left). On success, create a single booking with multiple attendees, reserving placeholders for unnamed guests and providing a follow-up to collect guest details if required. Update availability, roster, taxes/fees, and receipts accordingly.

Acceptance Criteria
Claim Multiple Seats Within Hold Window
Given an invited student receives a hold-to-confirm SMS for a class with at least Q seats available and a 2-minute timer And the student has a valid default payment method on file When the student replies "YQ" where Q is a positive integer between 1 and the maxSeatsPerBooking inclusive, within the 2-minute window Then the system parses Q, validates capacity and policy, and creates a single booking for Q seats atomically And sends a confirmation SMS including class name, date/time, and quantity within 5 seconds And decrements class availability by Q immediately
Enforce Max Seats per Booking Policy
Given maxSeatsPerBooking = N for the class When a student replies "YQ" where Q>N Then the system rejects the claim with a message stating "Max N seats per booking" and suggests "Reply YN to claim N" And no seats are reserved or held
Downgrade Prompt When Requested Quantity Exceeds Remaining Capacity
Given only R seats remain for the class (R>0) When a student replies "YQ" where Q>R and Q<=maxSeatsPerBooking Then the system responds with "Only R left. Reply YR to claim" within 5 seconds And no booking is created until a subsequent valid reply is received And if the student replies "YR" within 2 minutes of the prompt and seats are still available, the system books R seats and confirms And if seats sell out before the "YR" reply, the system informs the student "Sold out" and does not create a booking
Atomic Capacity Check Under Concurrency
Given multiple students reply with "YQ" quantities that in sum exceed remaining capacity When the system processes the replies Then each booking is committed with an atomic capacity check to prevent oversell And the final remaining capacity is never negative And students whose claims cannot be fully satisfied receive either a downgrade prompt (if partial capacity remains) or a sold-out message within 10 seconds
Multi-Attendee Booking Placeholders and Guest Details Collection
Given a booking is confirmed for Q>1 seats and only the primary student’s details are known When the booking is created Then the system creates Q attendee slots with Q-1 placeholders flagged as "Details Needed" And sends a follow-up SMS with a secure link to collect guest names and emails And the roster shows placeholders until details are supplied And if details are not provided within 24 hours, a reminder SMS is sent (max 2 reminders)
Pricing, Taxes/Fees, Receipt, and Reporting for Multi-Seat Booking
Given seat price P, applicable taxes/fees F per seat, and any class-level discounts D applicable per seat When a student successfully books "YQ" Then the system charges Total = Q*(P+F−D) using the student’s default payment method And issues a single receipt showing quantity Q, unit price, taxes/fees, discounts, and total paid And updates revenue and tax reports accordingly for Q seats And the class roster and availability reflect Q new attendees immediately
Invalid or Malformed Quantity Reply Handling
Given the system receives a reply with invalid quantity (e.g., "Y0", "Y-1", "Y", "Ytwo", non-integer, or exceeds system hard limit) When parsing the reply Then the system responds with an error message including a valid example (e.g., "Reply Y1 or Y2") within 5 seconds And no booking, hold, or capacity change occurs And the interaction is logged for analytics
Credit Pack Redemption via Reply (Y-PACK)
"As a student with prepaid credits, I want to use my credits by replying to a text so that I don’t have to re-enter payment details."
Description

Enable students to apply eligible class credits to confirm a booking by replying Y-PACK. Validate credit balance, expiration, product eligibility, and policy rules (e.g., credit-to-seat mapping for multi-seat claims). Support mixed payments when credits are insufficient and reflect accurate ledger movements. Provide clear confirmation or guidance if credits cannot be applied, and update analytics with credit utilization metrics.

Acceptance Criteria
Single-Seat Redemption with Sufficient Eligible Credits
Given a student has an active hold for 1 seat on an eligible class and at least the required credits per seat available When the student replies "Y-PACK" within the hold window Then the system confirms 1 seat and debits the required number of credits using a soonest-expiring-first policy And creates an immutable ledger entry linked to the booking and credit pack with timestamp and idempotency key And does not charge any card on file And sends a confirmation SMS including seat count, credits used, remaining credit balance, and class details And emits a "credit_redeemed" analytics event with userId, classId, seats=1, credits_debited, balance_after, pack_type, redemption_source="reply_code"
Multi-Seat Redemption via Y2-PACK with Credit-to-Seat Mapping
Given a class defines CreditsPerSeat and a student hold allows 2 seats And the student’s eligible credits are greater than or equal to 2 x CreditsPerSeat When the student replies "Y2-PACK" within the hold window Then the system confirms 2 seats And debits credits equal to 2 x CreditsPerSeat prioritized by soonest expiration And records a single consolidated ledger transaction referencing both seats and the credit pack consumption details And sends a confirmation SMS summarizing seats, credits used, remaining balance, and manage link And emits an analytics event with seats=2 and credits_debited=2 x CreditsPerSeat
Mixed Payment When Credits Are Insufficient
Given a class defines CreditsPerSeat and the student requests 2 seats with "Y2-PACK" And the student’s eligible credits are fewer than 2 x CreditsPerSeat but at least CreditsPerSeat When the system processes the reply Then it applies credits to the maximum whole number of seats covered by credits (floor(credits_available / CreditsPerSeat)) And attempts to charge the remaining seats at the class price to the default payment method on file within the hold window And confirms the booking only if the card charge succeeds, with a receipt showing split tender (credits + card) And on success, sends an SMS stating seats confirmed, credits used, card amount charged, and remaining credits And on card failure or no valid payment method, sends an SMS with failure reason and instructions to reply "Y" to pay by card or "Y-CARD" to update a card, and does not confirm seats And creates accurate ledger entries for credits consumed and card charges, with idempotency to prevent duplication
Credit Ineligibility or Expiration Handling
Given the student replies "Y-PACK" and their credits are expired or not eligible for the class When validation runs Then the system rejects the redemption And sends an SMS explaining the reason (expired or ineligible) and offering options: "Reply Y to pay by card" or "Y-CARD" to update payment, plus a link to credit details And makes no ledger changes or holds on funds And emits a "credit_redeem_failed" event with reason_code in {expired, ineligible}
Idempotency and Duplicate Reply Protection
Given the student sends duplicate "Y-PACK" or "Y2-PACK" messages within the same hold window or due to SMS retries When processing these messages Then the system processes exactly one redemption and one set of ledger movements And responds to duplicates with a non-error SMS indicating the booking status (e.g., "Already confirmed") without creating additional bookings or charges And all operations are protected by an idempotency key derived from the message SID and hold token
Instructor and Student Visibility of Credit Usage
Given a booking was confirmed using credits or credits + card When viewing the student receipt SMS and the instructor dashboard Then the student sees seats confirmed, credits used, any card amount charged, remaining credits, and manage link And the instructor sees payment source labeled "Credits" or "Credits + Card" with credits consumed per seat And exported payout/ledger reports include credit debits and card charges with reconciled totals
Analytics and Reporting of Credit Utilization
Given any Y-PACK attempt (success or failure) When the event pipeline processes the transaction Then a corresponding analytics event is recorded with userId, classId, bookingId (if any), seats_requested, seats_confirmed, credits_debited, pack_type, mixed_payment_flag, and failure_reason (if applicable) And the event is queryable in the analytics store within 15 minutes of the reply And metrics dashboards reflect credit utilization rate and mixed-payment conversions for the feature
Gift Booking Flow (Y-GIFT)
"As a student, I want to book a class for a friend with a quick reply so that I can gift them a spot without a complex checkout."
Description

Allow booking on behalf of another person with a single reply. Upon Y-GIFT, reserve the seat(s), then collect recipient name and contact via a short SMS follow-up or secure link. Support payer = sender (default) and optional credit application. Send the recipient a confirmation and calendar invite, and reflect gift status on the roster. Enforce privacy preferences, gift notes, and refund/transfer policies as configured by the instructor.

Acceptance Criteria
Single-reply gift booking success path
Given a class has at least one available seat and the sender has a valid default payment method on file When the sender replies "Y-GIFT" and submits a valid recipient name and contact (SMS-capable phone or email) within 2 minutes via follow-up SMS or secure link Then the system places an immediate hold on one seat, validates the recipient contact, and confirms the booking upon successful charge And the recipient receives a confirmation and calendar invite And the sender receives a confirmation SMS including gift status and amount charged And the roster updates in real time to show the recipient as attending with a "Gift" badge and payer = sender visible to the instructor
Hold timeout and seat release on incomplete gift
Given a seat hold is started by a "Y-GIFT" reply When recipient details are not provided and validated within 2 minutes Then the hold automatically expires, the seat is released, and no charges or credit deductions occur And any payment pre-authorization is voided And the sender is notified that the hold expired with instructions to restart the gift booking
Gift booking for multiple seats
Given a class has N available seats and the sender initiates a gift booking for M seats (1 < M ≤ N) When the sender supplies M recipient names and contacts or marks specific seats as "+1 unnamed guest" before the hold expires Then the system holds M seats, validates provided contacts, and confirms bookings for recipients with completed details upon successful payment And any seats marked as "+1 unnamed guest" remain reserved under the gift with a secure link for the sender to complete details later without releasing confirmed seats And if M exceeds available seats at any point, the sender is informed of the shortfall and no charge occurs until a revised seat count is confirmed
Apply credits to a gift booking
Given the sender has an available credit balance and instructor settings allow credits on gifts When the sender opts to apply credits during the "Y-GIFT" flow Then credits are applied first to cover the seat(s), any remainder is charged to the default payment method, and no charge occurs if credits fully cover the amount And confirmations and receipts clearly indicate the number of credits used and any supplemental charge
Privacy preferences for anonymous gifting
Given the instructor allows anonymous gifting and the sender selects "hide my name from recipient" When the gift booking is confirmed Then recipient-facing communications show the gifter as "A friend" and do not reveal the sender’s identity or contact And the roster shows the attendee with a "Gift (Anonymous)" badge while the payer = sender is visible only to the instructor/staff And recipient contact information is not shared with other attendees
Gift note capture and delivery
Given the sender chooses to include a gift note up to 280 characters and content passes profanity/blocked-terms checks When the gift booking is confirmed Then the note appears in the recipient confirmation and in the calendar invite description (if supported by the calendar provider) And the note is visible to the instructor in the roster/booking details but not visible to other attendees And if the note exceeds the character limit or contains blocked terms, the sender is prompted to edit before completion
Refund and transfer policy enforcement for gifts
Given instructor refund and transfer policies are configured for the class When the recipient or sender initiates a cancel or transfer action for a gifted booking Then the system enforces the configured windows and fees, blocks actions outside allowed windows, and routes any refund to the payer per policy And the roster, seat availability, and financial records update accordingly And policy-specific notifications are sent to both recipient and sender indicating the outcome
Payment Method Switch via SMS (Y-CARD)
"As a student whose card failed or changed, I want to switch my payment method by replying to the text so that I can complete the booking without starting over."
Description

Permit students to switch the payment method associated with the booking by replying Y-CARD. If multiple saved cards exist, allow selection via SMS menu; otherwise, issue a short-lived, PCI-compliant secure link to add a new card while preserving the seat hold. On success, retry the charge and confirm the booking; on failure, inform the user and maintain clear next steps before hold expiry. Update wallet preferences if the user opts in.

Acceptance Criteria
Messaging Templates, Rate Limits, and Compliance
"As a student, I want clear confirmation and error messages when I reply with a code so that I always know whether my booking went through and what to do next."
Description

Create standardized, localized SMS templates for confirmations, errors, partial availability, and prompts across all reply code paths. Include dynamic variables (class name, time, seats, price, hold timer), friendly tone, and fallbacks for carrier segmentation. Implement per-user and global rate limiting, spam/abuse detection, opt-in/opt-out handling (STOP/HELP), quiet hours settings, and delivery tracking with retries. Maintain audit logs for all inbound/outbound messages to support compliance and dispute resolution.

Acceptance Criteria

Priority Boost

Intelligently orders who gets the next text using loyalty, past reply reliability, proximity, and instructor VIP tags. Fair, data‑driven prioritization reduces ghosted holds and rewards regulars, helping classes fill with the people most likely to show.

Requirements

Weighted Priority Scoring Engine
"As an instructor, I want the waitlist to automatically prioritize people most likely to show so that my open spots are filled quickly and reliably."
Description

A deterministic scoring service that ranks waitlisted customers for each class using configurable weights of loyalty, reply reliability, proximity, and instructor VIP tags. Supports default global weights with instructor-level presets and per-class overrides; weight values 0–1 with normalized score 0–100. Exposes a factor breakdown per user for explainability. Invoked when a hold slot opens, a cancellation occurs, or on-demand from the waitlist screen, returning the top K candidates within 200 ms P95. Idempotent for the same input snapshot and re-ranks in real time as new signals arrive. Integrates with Hold-to-Confirm to select the next auto-text recipient and to backfill cancellations.

Acceptance Criteria
Signals Ingestion and Reliability Metrics
"As a product, I need accurate, up-to-date signals on each waitlisted customer so that the ranking reflects real likelihood to attend."
Description

Backend pipeline that computes and caches signals used by Priority Boost: attendance history, no-show and late-cancel rates, lifetime and 90-day booking counts, total spend, reply reliability (accept/decline rates and response latencies), proximity to venue with consent, and VIP/ban flags. Normalizes metrics per instructor to avoid cross-studio bias and applies time decay to older events. Maintains a queryable user–instructor profile with freshness SLAs (real-time for replies; ≤5 minutes for aggregates). Handles missing data with defaults and flags for the scoring engine. Stores minimal necessary fields with defined retention periods.

Acceptance Criteria
Instructor Controls and VIP Tagging
"As an instructor, I want simple controls and VIP tagging so that I can align prioritization with my studio’s policies without micromanaging every hold."
Description

Mobile UI to configure Priority Boost per class or globally: enable/disable, select weight presets (Balanced, Reliability-first, Regulars-first), set custom weights within allowed ranges, and manage VIP or Deprioritized tags with optional expiry. Provides a live preview of top candidates with factor breakdowns and supports pinning or excluding users for a session. Enforces role-based access for studios versus instructors. Changes are audited and applied without downtime.

Acceptance Criteria
Ranking Transparency and Audit Trail
"As support staff, I want an audit trail of how a person was ranked so that I can explain outcomes and resolve issues confidently."
Description

Comprehensive logging and UI views for every ranking decision: candidate set, scores, applied weights, factor contributions, tie-break outcomes, and the final auto-text recipient. Provides per-class and per-user audit pages plus export for support. Offers a simplified, user-friendly explanation on request without exposing sensitive weight details. Aligns with retention and redaction policies to protect privacy while enabling fairness validation and debugging.

Acceptance Criteria
Tie-breakers and Fallback Logic
"As a platform, I want robust tie-breakers and fallbacks so that prioritization remains fair and reliable even under partial data or outages."
Description

Deterministic tie-break and resilience rules when scores are equal or data is partial: randomized order within score bands seeded by class ID, recent attendance as secondary key, and FIFO waitlist time as final key. Applies cooldowns after ghosted holds, caps VIP uplift, and limits consecutive holds per user to prevent gaming. Gracefully degrades to legacy FIFO if the scoring service is unavailable. Includes rate limits and circuit breakers to maintain reliability.

Acceptance Criteria
Impact Experiments and KPI Dashboard
"As a product manager, I want to measure the impact of Priority Boost so that I can prove value and optimize the algorithm before full rollout."
Description

A/B testing and feature-flag framework to compare Priority Boost with legacy ordering on ghosted holds, time-to-fill, show rate, and revenue per class. Supports instructor-level opt-in and guarded rollouts. Real-time dashboards and weekly summaries report deltas with confidence intervals. Insights feed back into default weights and segment-specific presets. Integrates with existing analytics events and respects user privacy choices.

Acceptance Criteria
Consent, Privacy, and Regional Compliance
"As a privacy-conscious customer, I want control over how my data influences priority so that I can participate comfortably without unfair disadvantage."
Description

User-facing consent flows for location and personalized prioritization, clear explanations of how Priority Boost uses data, and opt-out paths where required. Applies regional policies (e.g., GDPR, CCPA), data minimization for proximity (distance buckets over raw coordinates when possible), defined retention limits, and access/deletion processes. On opt-out, the system defaults to non-personalized FIFO without penalizing the user.

Acceptance Criteria

Multi-Ping

If an SMS can’t deliver or isn’t read quickly, Classlane automatically fails over to WhatsApp or email (where opted in) while preserving place in queue. More messages land on time, fewer seats expire unclaimed, and instructors don’t lose revenue to carrier hiccups.

Requirements

Smart Channel Failover Orchestration
"As a waitlisted student, I want the offer to reach me via the channel that gets to me fastest so that I don’t miss my chance to confirm before it expires."
Description

Implement an orchestration layer that attempts SMS first, then automatically escalates to WhatsApp or email when delivery or engagement thresholds are not met, while preserving the user’s place in the queue and the hold-to-confirm timer. Respect per-user channel opt-ins, instructor-defined channel order and timeouts, and regional availability. Ensure idempotent send operations, deduplication across channels, concurrency safety, and jittered scheduling to avoid message storms. All channel sends must include consistent content and a single confirmation link tied to the same reservation token.

Acceptance Criteria
Delivery and Read Detection Signals
"As a student, I want the system to know if I actually saw the offer so that it can try another channel if I didn’t."
Description

Ingest and normalize delivery and engagement signals across SMS, WhatsApp, and email via provider webhooks and click-tracking on short links. Map events such as delivered, failed, read/seen, and link-click to a channel-agnostic state model. Define configurable time thresholds that trigger failover when delivery or engagement is not observed. Handle partial or missing signals (e.g., carriers without DLRs) with safe defaults, and store event histories for decisioning and analytics.

Acceptance Criteria
Consent and Compliance Guardrails
"As a privacy-conscious user, I want messages to be sent only on channels I’ve opted into so that my communication preferences and local laws are respected."
Description

Enforce per-user, per-channel consent and jurisdictional compliance for SMS, WhatsApp, and email. Capture and store opt-in/opt-out status, timestamps, and proof of consent; honor unsubscribe keywords and email preferences. Support WhatsApp template approvals and double opt-in where required. Apply regional sending restrictions (e.g., quiet hours), data retention controls, and audit logs. Failover must only consider channels for which valid consent exists.

Acceptance Criteria
Unified Message Templates and Personalization
"As an instructor, I want consistent, personalized offer messages across channels so that students clearly understand how to claim seats regardless of where they read it."
Description

Provide a single template system that renders consistent offer messages across SMS, WhatsApp, and email with channel-specific formatting, length limits, and media support. Support dynamic tokens (class name, time, seat hold duration, confirmation link), localization, and variable fallbacks. Enable preview per channel, versioning, and A/B variants. Integrate link shortener with click tracking to feed engagement signals and keep URLs consistent across channels.

Acceptance Criteria
Reservation Consistency and Idempotency
"As a student, I want my confirmation to work the first time from any message so that I’m confident my seat is secured without duplicates or errors."
Description

Guarantee a single active reservation per student and atomic state transitions (offered, confirmed, expired, backfilled) regardless of which channel is used to respond. Use idempotency keys tied to the reservation token to deduplicate confirmations and cancellations arriving from different channels or devices. Maintain accurate countdown timers across retries and failovers, and prevent overbooking under concurrent responses.

Acceptance Criteria
Observability, Retries, and Reporting
"As an instructor, I want visibility into message delivery and conversions so that I can trust the system and optimize my communication settings."
Description

Implement per-channel retry policies with exponential backoff and terminal states based on provider error codes. Expose dashboards for delivery rates, engagement, failover frequency, confirmation save rate, and revenue impact. Provide searchable logs with correlation IDs per reservation, plus alerts for abnormal failure spikes. Offer exportable reports and an API for instructors to analyze channel performance and adjust settings.

Acceptance Criteria
Instructor Controls and Overrides
"As an instructor, I want control over how Multi-Ping behaves for my classes so that I can balance reach, cost, and student preferences."
Description

Add settings to enable/disable Multi-Ping per account or class, configure channel order and time thresholds, and specify default allowed channels. Allow per-student overrides, preview/test sends, and emergency pause. Surface guardrail hints (e.g., missing WhatsApp consent) and show projected impact. Provide per-class analytics summaries and guidance to tune thresholds for best confirmation rates.

Acceptance Criteria

Clash Guard

Detects schedule conflicts before charging on a Y reply. When a conflict exists, the student gets a quick choice to swap, waitlist another time, or decline—preventing accidental double-bookings, refunds, and support pings for instructors.

Requirements

Pre-Charge Conflict Check
"As a student, I want the system to check for schedule conflicts before charging me so that I don’t get double-booked or need a refund."
Description

Intercept the student’s inbound “Y” confirmation and run a real-time conflict evaluation before any payment is captured. Normalize times across time zones, include instructor-defined buffer minutes, and evaluate overlaps against the student’s existing bookings and active holds across all Classlane studios tied to the same verified phone/profile. If no conflict is found, proceed to charge and confirm; if a conflict exists, halt charging and route the student into the Clash Guard decision flow. Integrates with inventory, booking, and payment services; respects cancellation windows and hold expirations; logs outcomes for auditability.

Acceptance Criteria
Smart Swap Suggestions
"As a student, I want immediate alternative time options when a conflict occurs so that I can still attend without manual back-and-forth."
Description

When a conflict is detected, generate up to three viable alternative sessions that match instructor-defined equivalency rules (same course/level, acceptable instructor/location variants), respect capacity and pricing, and fall within a configurable time window. Present options via SMS with short reply codes and an optional deep link, and on selection, atomically switch the hold to the chosen session, apply correct pricing, and proceed to charge and confirm. Handles sold-out states, price deltas, and promo carryover, and updates waitlists/inventory accordingly.

Acceptance Criteria
One-Tap Waitlist Enrollment
"As a student, I want to quickly join a different time’s waitlist when I can’t make the offered slot so that I still have a chance to attend later."
Description

Offer a fast path to join the waitlist for another time when a conflict occurs. From the SMS flow, allow the student to select a target time, enroll on its waitlist with preserved priority, and receive automated hold-to-confirm texts if a spot opens. Ensure opt-in/opt-out compliance, deduplicate across lists, and synchronize with the two-minute Hold-to-Confirm queue to backfill cancellations efficiently without charging until confirmation.

Acceptance Criteria
Decline & No-Charge Safeguard
"As a student, I want to decline a conflicting offer without being charged so that I avoid refunds and unnecessary support steps."
Description

Provide a clear decline option in the conflict flow that guarantees no payment attempt occurs. On decline, release the held spot, trigger backfill to the next person via the two-minute auto-text, and send the student a confirmation of the canceled hold. Record the outcome, suppress further reminders for that offer, and update instructor rosters and analytics to prevent refunds and support tickets.

Acceptance Criteria
Instructor Controls & Alerts
"As an instructor, I want to set conflict rules and be notified of outcomes so that I maintain control over my schedule and capacity."
Description

Add dashboard controls for instructors to configure Clash Guard behavior: conflict buffer minutes, allowed overlap rules, session equivalencies for swaps, price handling, and whether waitlist offers should be suggested. Provide real-time alerts in the instructor app and optional SMS/email notifications when conflicts are detected and when students swap, waitlist, or decline. Include override tools to force-book, bypass, or adjust buffers per session.

Acceptance Criteria
Atomic Booking Transaction
"As a platform operator, I want the clash resolution and charging to be atomic and idempotent so that we avoid race conditions, double charges, and inconsistent bookings."
Description

Ensure the conflict check, inventory hold, payment capture, and booking confirmation execute as an atomic, idempotent flow. Use idempotency keys for repeated or delayed SMS replies, lock inventory during decision windows, and implement timeouts and resumable states. If the student selects swap/waitlist/decline, commit the appropriate path or roll back cleanly with full audit logs. Protect against race conditions from simultaneous offers or cross-device actions.

Acceptance Criteria
Clash Guard Analytics
"As an instructor, I want clear analytics on conflict handling and outcomes so that I can optimize schedules and reduce support issues."
Description

Track and surface metrics on conflicts detected, prevented double-bookings, swaps chosen, waitlist enrollments, declines, avoided refunds, and response times. Provide drill-down by class, instructor, and time window, plus export and webhook options for studio reporting. Anonymize or aggregate where required for privacy and ensure events are structured for experimentation and A/B tests on suggestion ranking and messaging copy.

Acceptance Criteria

PayFlex Reply

Let students choose payment source inline: default card, bundle credits, gift balance, or a new card via a secure one‑tap link sent only after Y. Reduces payment friction, uses existing balances first, and keeps the reply flow lightning fast.

Requirements

Inline Payment Source Selection
"As a student, I want to pick my payment source in my confirmation reply so that I can secure my spot quickly without opening a separate checkout."
Description

Enable students to choose their payment source directly within the confirmation reply flow by offering concise options: Default Card on file, Bundle Credits, Gift Balance, or New Card. Present choices as short reply keywords and smart-reply buttons where supported (SMS, WhatsApp, in-app). Upon receiving a selection, resolve the source and continue the checkout without leaving the thread when possible; only trigger an external secure link for adding a new card. Ensure idempotent processing, cross-channel templates, and per-class enablement to minimize friction and speed up confirmations.

Acceptance Criteria
Auto-Balance Application Logic
"As a student, I want my existing credits or gift balance used first so that I spend less out-of-pocket and check out faster."
Description

Automatically detect and apply a student’s available bundle credits and gift balance before attempting a card charge, following configurable priority rules. Perform real-time balance checks and atomic deductions upon booking capture. For v1, require full coverage for balance-based payments; if insufficient, prompt the student to choose another source or default card. Display remaining balances in confirmation messages to increase transparency and encourage usage.

Acceptance Criteria
One-Tap Secure Card Link
"As a student, I want a one-tap secure link to add a new card after I confirm so that I can pay safely without slowing down the booking flow."
Description

When a student selects New Card (or no eligible balance/card is available), generate and send a single-use, time-bound checkout link only after the student replies ‘Y’ to confirm. The link opens a mobile-optimized, PCI-compliant card entry sheet with tokenization and 3DS as required. On success, save the card as the default (with opt-out), finalize the booking, and return a confirmation within the original thread. The link expires with the hold window and is invalidated on completion or timeout.

Acceptance Criteria
Hold Window Integration and Seat Reservation
"As a waitlisted student, I want my seat held while I choose or complete payment so that I don’t lose my spot during checkout."
Description

Integrate PayFlex Reply with the existing two-minute Hold-to-Confirm logic. On ‘Y’, place a seat hold and immediately process the chosen source (balances or default card) while the countdown runs. If a new card is required, dispatch the secure link and maintain the hold until payment completes or the timer expires. On timeout, automatically release the seat and notify the next person on the waitlist. Ensure idempotency across retries and prevent double charges or orphaned holds.

Acceptance Criteria
Smart Reply Parsing and Validation
"As a student, I want the system to understand my short replies about how to pay so that I can complete booking with minimal typing."
Description

Implement robust, channel-aware parsing of reply intents to recognize payment choices and confirmations (e.g., ‘bundle’, ‘use credits’, ‘gift’, ‘default’, ‘card’, ‘new card’), including common typos and synonyms via fuzzy matching. For ambiguous inputs, send a concise disambiguation prompt. Validate the sender’s identity against the session and booking context, using signed tokens or reply threading metadata to prevent spoofing. Sanitize all inputs and produce clear, human-readable confirmations of the interpreted action.

Acceptance Criteria
Payment Failure Handling and Fallback
"As a student, I want quick alternatives when my payment fails so that I can still secure my spot without starting over."
Description

On declines, authentication failures, expired links, or network errors, automatically prompt the student within the same thread to try an alternate source (e.g., default card after credits fail) or resend the secure link. Maintain the seat hold if time remains; otherwise, release and clearly communicate next steps. Capture detailed error codes and outcomes for support and analytics, and ensure all retries are idempotent with clear state transitions.

Acceptance Criteria
Instructor Controls and Usage Analytics
"As an instructor, I want controls and visibility into how students pay so that I can optimize conversion and revenue while reducing support effort."
Description

Provide studio-level and class-level settings to enable PayFlex Reply, configure source priority (e.g., gift before bundle), allow or disallow split payments, and customize reply keywords/templates per channel. Surface dashboards and exports showing payment source mix, conversion time from ‘Y’ to paid, failure rates by source, and revenue impact from balances vs. cards. Offer per-class overrides and audit logs for support and reconciliation.

Acceptance Criteria

Turbo Cascade

Accelerates sequential offers when the first hold expires: subsequent rounds auto-shorten hold times and time messages to peak read moments in the final 15 minutes before class. Seats backfill faster without flooding everyone at once, preserving fairness and avoiding double-charges.

Requirements

Adaptive Hold Time Decay
"As an instructor, I want hold times to automatically shrink as class start nears so that seats backfill faster without overwhelming the waitlist."
Description

Automatically shortens hold durations for each successive offer round as class start time approaches, using a configurable decay curve with min/max bounds and per-class defaults. The engine ties hold length to time-to-class, seats remaining, and historical conversion, ensuring late-stage rounds run at accelerated 1–2 minute holds without sacrificing fairness. Integrates with existing waitlist and reservation timers, updates expiration timestamps in real time, and respects payment authorization windows. Expected outcome is faster backfill in the final 15 minutes with controlled message volume and improved conversion.

Acceptance Criteria
Peak Read Timing Engine
"As a waitlisted student, I want offers to arrive when I’m most likely to see them so that I can quickly confirm a seat."
Description

Predicts and schedules offer messages to align with users’ highest-probability read windows in the final 15 minutes before class. Uses historical read/response patterns, timezone, device behavior, and carrier throughput to time SMS/WhatsApp sends within micro-windows, with fallbacks to immediate send if a window is missed. Enforces quiet hours, per-user frequency caps, and message spacing across cohorts to reduce perceived spam. Integrates with messaging providers, delivery receipts, and Classlane’s notification preferences. Expected outcome is higher open and accept rates with fewer total messages sent.

Acceptance Criteria
Sequential Cohort Rounds
"As a waitlisted student, I want offers sent in fair, manageable waves so that I’m not flooded with messages and still keep my place in line."
Description

Executes Turbo Cascade in rolling cohorts instead of a single blast, preserving FIFO waitlist order while adapting cohort size and cadence to seat availability and response rates. Excludes users who declined, timed out, or have conflicts, and enforces per-user ping limits per class. Cohort parameters (size, interval, max rounds) are tunable at the class or studio level. Integrates with the waitlist ranking service, eligibility filters, and the decay/timing engines to orchestrate fair, efficient outreach. Expected outcome is faster backfill with controlled outreach volume and preserved fairness.

Acceptance Criteria
Idempotent Auto-Release & Next-Round Trigger
"As an instructor, I want expired holds to roll into the next round automatically and safely so that I don’t have to micromanage backfills."
Description

Atomically releases seats on hold expiry or decline and triggers the next cohort without duplicates or race conditions. Uses an idempotent job scheduler with locking, retries, and backoff to ensure each seat transition and message send occurs exactly once, even under high contention close to class time. Persists a per-class cascade state machine with audit logs, ensuring observability and rapid recovery after failures. Integrates with inventory, messaging, and payments to maintain consistent seat counts and notification states. Expected outcome is reliable, hands-free cascades that never double-send or lose a seat.

Acceptance Criteria
Double-Charge & Overlap Guardrails
"As a waitlisted student, I want protection against duplicate charges or overlapping holds so that I can accept an offer with confidence."
Description

Prevents duplicate charges and double-booking by enforcing per-user per-timeslot constraints across simultaneous offers and holds. Consolidates overlapping offers into a single actionable hold, cancels redundant authorizations, and ensures only one capture per booking. Validates conflicts against the user’s existing bookings and other class instances, and communicates clear state to the user. Integrates with the payments gateway for auth/capture management and with scheduling to detect overlaps. Expected outcome is zero double-charges, fewer support tickets, and higher trust.

Acceptance Criteria
Instructor Controls & Insights
"As a studio owner, I want to tune cascade settings and see performance metrics so that I can balance speed, fairness, and customer experience."
Description

Provides a self-serve control panel to configure Turbo Cascade parameters (baseline hold time, decay aggressiveness, min hold floor, cohort size, max rounds, quiet-hour overrides) and preview the projected cascade timeline. Surfaces real-time cascade progress, accept/decline/timeout funnels, and post-class analytics on backfill speed, conversion uplift, and no-show impact versus baseline. Supports per-class overrides, studio-level defaults, and RBAC. Integrates with experimentation flags for safe rollout and with analytics for cohort analysis. Expected outcome is tunable behavior with transparent performance insights.

Acceptance Criteria

Doorboard Live

A real-time, mobile-friendly door dashboard that shows who’s checked in, who’s due, and who’s about to auto-release with visible countdown timers. Hosts get color-coded states, seat totals, and one-tap overrides to hold, release, or comp a seat. Keeps the line moving, prevents guesswork, and gives coordinators instant clarity at the busiest moments.

Requirements

Live Roster Sync
"As a host, I want the roster to update instantly across all devices so that I always act on the latest information at the door."
Description

Implement a real-time data layer for Doorboard Live that subscribes to class rosters, waitlist positions, check-ins, cancellations, and seat holds from the Classlane core. Use server-sent events or WebSockets to push updates with end-to-end latency under 1 second. Provide resilient reconnect, backoff, and client-state reconciliation to handle intermittent connectivity. Ensure consistency across multiple hosts viewing the same session via versioned updates and idempotent operations. Integrate with the Hold-to-Confirm workflow so that door-triggered releases notify the next-in-line instantly. Expose a lightweight local cache to render immediately while updates stream in.

Acceptance Criteria
Countdown Timers & Auto-Release Indicators
"As a coordinator, I want clear countdowns to auto-release so that I can prioritize who to let in or hold without guesswork."
Description

Render per-attendee countdown timers that track time to auto-release with server-synchronized time and drift under 1 second. Use color-coded states for checked-in, due soon, and expiring, with pre-expiry badges at configurable thresholds. Display reason codes when a seat is on hold, comped, or pending confirmation. On expiry, automatically transition the seat to released, surface an inline toast and haptic cue, update seat totals, and trigger waitlist notifications per existing rules. Support pause and resume when hosts apply a manual hold.

Acceptance Criteria
One-Tap Overrides
"As a host, I want one-tap controls to check in or release seats so that I can keep the line moving quickly."
Description

Provide single-tap controls for Check In, Undo Check In, Hold Seat, Release Seat, and Comp Seat from each attendee row and a quick-actions drawer. Actions must be atomic, optimistic, and rollback-safe with clear visual feedback and short undo windows where applicable. Enforce business rules such as preventing comping a released seat, triggering auto-text on release, and pausing timers on hold. Include confirm-on-destructive patterns, rate limiting to avoid double taps, and batching for high-traffic bursts. Update all connected clients in real time and log each override with metadata.

Acceptance Criteria
Seat Totals & Capacity Banner
"As a coordinator, I want accurate seat totals at a glance so that I can make capacity decisions in real time."
Description

Display a persistent summary showing total capacity, checked-in, due, held, comped, released, and available counts. Provide warnings for over-capacity and visual deltas when counts change. Support multi-class back-to-back sessions and room-level capacity where applicable. Tapping the banner filters the roster to the corresponding segment for rapid triage. Counts update from the real-time feed to guarantee consistency with the roster.

Acceptance Criteria
Offline-First Resilience & Sync
"As a host, I want Doorboard to keep working if the network drops so that check-ins continue without disruption."
Description

Enable Doorboard Live to operate during intermittent connectivity by caching the roster and enqueuing actions locally. Queue check-ins and overrides with logical timestamps and replay them in order once connectivity resumes, resolving conflicts via last-write-wins with server authority and user-visible resolutions. Provide clear offline indicators, disable actions that cannot be performed safely, and ensure no data loss across app restarts. Persist audit logs and seat total adjustments once the server acknowledges the sync.

Acceptance Criteria
Mobile-First UI & Accessibility
"As a host, I want a mobile interface that is easy to see and tap so that I can operate it efficiently in busy conditions."
Description

Design a thumb-friendly interface optimized for small screens and one-handed use in crowded entryways. Ensure touch targets of at least 44x44 px, safe-area awareness, high-contrast color palette meeting WCAG AA, and large legible type. Support dark mode, haptic feedback, and optional sound cues. Provide accessible labels for assistive technologies, minimize PII on shared displays, and localize time and countdown formats. Optimize for 60 fps scrolling, lazy-loading for long rosters, and sub-100 ms interaction response.

Acceptance Criteria
Role-Based Access & Audit Trail
"As an owner, I want permissions and an audit trail so that only authorized changes are made and I can review activity later."
Description

Restrict Doorboard Live access to authenticated host and coordinator roles with least-privilege permissions. Allow read-only door views for volunteers and full override capabilities for coordinators. Record an immutable audit log for every state change with user, timestamp, action, device, and before/after values. Expose an export API and in-app filterable view for reconciliation and dispute resolution. Protect PII by redacting sensitive fields in logs as required and enforce session timeouts and device lock compliance.

Acceptance Criteria

Shared Scanner

Let multiple staffers scan simultaneously on different devices with instant sync and collision handling to prevent double check-ins. Perfect for peak arrivals or multi-room studios, it halves wait times and keeps attendance accurate even when two lines form at the door.

Requirements

Real-time Multi-Device Sync
"As a front-desk staffer handling one of two lines, I want every scan to instantly reflect on my coworkers’ devices so that we don’t overbook or re-scan attendees."
Description

Provide low-latency, bidirectional synchronization of check-in state across all staff devices scanning the same class session. Use persistent connections to instantly broadcast successful scans, capacity changes, and seat availability, keeping Classlane’s roster, payments, and waitlist modules in lockstep. Include retry and backoff to handle transient network issues without duplicating operations.

Acceptance Criteria
Collision-Free Check-In
"As a studio manager, I want the system to prevent double check-ins when two staffers scan the same ticket at the door so that attendance and capacity remain accurate."
Description

Enforce at-most-once check-in semantics when multiple devices scan the same ticket simultaneously. Implement server-side conditional updates with idempotency keys and versioned attendee records, returning deterministic outcomes (checked-in, already checked-in, invalid). Ensure capacity counters and Hold-to-Confirm waitlist triggers execute only once per seat and provide immediate visual feedback to all devices.

Acceptance Criteria
Offline Scan Queueing & Reconciliation
"As an instructor in a basement studio with spotty Wi‑Fi, I want to keep scanning attendees and have the system reconcile later so that check-in lines don’t stall."
Description

Allow scanners to operate during connectivity drops by queuing scans locally with timestamps and idempotency tokens. On reconnection, reconcile with the server, deduplicate collisions, and update all devices. Display a clear offline indicator, a queued count, and final outcomes for each pending scan. Protect against device clock skew and partial failures.

Acceptance Criteria
Device Enrollment & Scoped Access
"As a studio owner, I want to temporarily authorize extra staff phones to scan for tonight’s class so that we can manage peak arrivals without risking broader account access."
Description

Provide a simple way to add multiple staff devices to a class session’s Shared Scanner with scoped, time-bound permissions. Support joining via host-generated QR or code, enforce least-privilege (scan-only, no refunds or payouts), allow immediate revocation, and log who scanned whom and when. Integrate with Classlane team management and session scheduling.

Acceptance Criteria
Multi-Format Scan & Fallback UX
"As a staff scanner, I want fast, clear scan feedback and a quick manual fallback so that lines keep moving even when a code won’t scan."
Description

Optimize the scanner experience to handle high throughput and varied circumstances. Support Classlane QR tickets, fast autofocus, low-light mode, and haptic/audio feedback for success or errors. Provide manual lookup by name, last four digits of phone, or booking code as a fallback. Show last scans feed, undo within grace window, and per-room session selection for multi-room studios.

Acceptance Criteria
Attendance Audit Trail & Export
"As a studio manager, I want a detailed history of who was scanned by whom and when so that I can resolve disputes and reconcile attendance with payouts."
Description

Record an immutable event log for each check-in attempt including timestamp, device ID, staff user, outcome, and reason codes. Surface a per-session timeline and allow CSV export for dispute resolution and payroll. Ensure logs tie back to orders and payment status in Classlane.

Acceptance Criteria
Performance SLOs & Observability
"As a product owner, I want clear performance targets and real-time visibility so that we can ensure smooth peak arrivals and quickly detect regressions."
Description

Establish and monitor service-level objectives for Shared Scanner: 99th percentile end-to-end check-in confirmation under 300 ms with up to 100 concurrent devices and 20 scans per second per device burst. Implement structured logging, metrics, dashboards, and alerting on latency, error rates, and sync lag. Include rate limiting and backpressure to protect core booking services.

Acceptance Criteria

Group Scan

Check in families or friends in one motion: scan once to validate a multi-seat booking or tap +1 to add confirmed companions. Reduces bottlenecks for small-group classes, prevents missed seats, and gives hosts an effortless way to keep parties together.

Requirements

Single-Scan Multi-Seat Validation
"As a host, I want to scan once to check in an entire party so that I can move the line quickly and keep groups together."
Description

Enable a single QR scan to validate and check in all seats on a multi-seat booking. On scan, fetch booking details (event, purchaser, seat count, seat names if available), display a party summary, and offer actions: Check In All, Partial Check-In, or Split Party. Update attendance per seat, decrement remaining seats, and sync to the class roster and payouts. Handle edge cases (late arrival, partial attendance, cancellations) and surface clear success/error states to minimize front-desk bottlenecks and keep groups together.

Acceptance Criteria
+1 Companion Add-On with Instant Payment Capture
"As a host, I want to add a companion with one tap and charge correctly so that I don’t lose revenue or slow down check-in."
Description

Provide a one-tap +1 flow to add confirmed companions at the door after an initial scan. Validate capacity in real time, present price (including taxes/fees, discounts), and capture payment via stored method on the original booking, quick card entry, or tap-to-pay where supported. On success, increment booking seat count, attach companion seats to the same reservation, issue receipts, update roster and payouts, and respect policies (age limits, waivers, add-on cutoff). Fail safely with clear prompts if capacity or payment fails.

Acceptance Criteria
Real-Time Capacity Locking & Concurrency Control
"As a studio owner, I want the system to prevent double check-ins or overselling when multiple staff are scanning so that attendance and capacity remain accurate."
Description

Implement atomic seat locking at the event level to prevent over-capacity during simultaneous scans from multiple devices. Use short-lived locks for +1 additions, partial check-ins, and seat splits. Resolve conflicts with clear UI messaging and automatic retries. Ensure consistent state across host devices and the public booking page, and release abandoned holds promptly to avoid inventory deadlocks.

Acceptance Criteria
Secure, Anti-Replay QR Tokens
"As a host, I want QR codes that can’t be faked or reused so that I can trust check-ins without manual verification."
Description

Issue signed, tamper-evident QR payloads that include bookingId, eventId, seatCount, a nonce, and short-lived expiry. Validate signature on-device, block replays by marking tokens as consumed per seat, and reflect cancellations or transfers in real time. Surface warnings for expired or altered codes and provide a fallback manual lookup path. Log all validations for auditability and fraud analysis.

Acceptance Criteria
Offline Scan Mode with Deferred Sync
"As an instructor, I want to keep scanning even without internet so that lines don’t stall in low-service venues."
Description

Allow check-ins to proceed when connectivity is poor by caching event rosters and public keys for token verification. Queue attendance updates and +1 requests locally with conflict detection rules. On reconnection, reconcile against server state, surface any conflicts (e.g., capacity exceeded), and provide guided resolution. Admin setting to cap offline admits and require manager override beyond a threshold.

Acceptance Criteria
Guest Info & Waiver Collection for Added Companions
"As a studio manager, I want required waivers for added companions collected quickly so that we remain compliant without slowing check-in."
Description

For companions added via +1, capture minimal required fields (name, email/phone if needed) and class-specific waivers. Support ultra-fast collection: host quick entry, QR/SMS link to self-complete on device, and visual indicators for waiver status. Enforce blocking rules where waivers are mandatory before check-in, and store records linked to the booking for compliance and future visits.

Acceptance Criteria
Optimized Check-In UI with Accessibility & Haptics
"As a host, I want a fast, clear check-in screen so that I can process groups accurately under pressure."
Description

Deliver a high-speed scanning interface with large, accessible controls: Check In All, Partial, +1, Undo. Use color-coded outcomes, haptic feedback, and offline indicators to reduce errors. Include flashlight toggle, low-light optimization, and support for screen readers and high-contrast modes. Provide an inline roster view showing party members, remaining seats, and action history with a single tap.

Acceptance Criteria

Offline Check-In

Keep scanning when Wi‑Fi drops. Roster and QR data cache locally, scans are time-stamped, and duplicates are flagged; everything syncs automatically once back online. Pop-up hosts stay operational, and no attendance is lost to flaky networks.

Requirements

Local Roster & Ticket Cache
"As a pop-up host, I want class rosters and ticket data stored on my device before the event so that I can keep checking in attendees even if the venue Wi‑Fi fails."
Description

Prefetch and locally cache upcoming class rosters, session metadata, and QR ticket payloads for a configurable time window (e.g., next 24–48 hours) to enable validation without network access. Implement versioned datasets with TTLs, delta updates, and per-session scoping to minimize storage and ensure freshness. Integrate with class detail screens to trigger prefetch on host open and background refresh when on Wi‑Fi. Cache must include attendee status, ticket ID, entitlement (e.g., pass, drop-in), and cancellation flags to support offline validation logic. Provide graceful degradation when cache is stale, with clear operator prompts.

Acceptance Criteria
Offline QR Scan & Validate
"As a check-in operator, I want to scan and validate tickets without internet so that I can keep the line moving during network outages."
Description

Enable camera-based QR scanning entirely offline, decoding tokens and validating them against the local cache in under 300 ms per scan. Support low-light autofocus, continuous scan mode, and manual code entry fallback when QR is damaged. Implement rate limiting and debounce to avoid double reads. Validation must check ticket ownership, session match, cancellation status, and entitlement rules. Provide haptic/audio feedback and on-screen badges indicating success, failure, or manual override, with accessibility-compliant cues.

Acceptance Criteria
Duplicate Scan Detection
"As a studio assistant, I want duplicates to be clearly flagged so that I can prevent misuse and avoid checking in the same attendee twice."
Description

Detect and flag duplicate scans offline by maintaining a per-session, device-local set of already-checked-in ticket IDs with millisecond timestamps. Surface clear UI states for first-time vs duplicate scans, including attendee name and time of first check-in. Allow an operator override for legitimate re-entry with a reason code, recorded locally for later review. Prevent rapid re-scans via temporary cooldown logic.

Acceptance Criteria
Timestamped Attendance Log
"As an instructor, I want every check-in to be time-stamped and attributable so that I have an auditable record of attendance regardless of connectivity."
Description

Record an immutable, ordered log of all check-in events (scan, manual entry, override) with local device time, operator identity, device ID, and session ID. Store logs in an append-only local store to support auditability. Provide an in-app view filtered by session to review recent events while offline, with export disabled until sync completes. Handle clock drift by reconciling with server time on sync while preserving original local timestamps.

Acceptance Criteria
Auto Sync & Conflict Resolution
"As a studio owner, I want offline check-ins to sync automatically and accurately so that attendance and revenue reports stay correct without manual cleanup."
Description

Automatically enqueue offline events and sync them to the server once connectivity is restored using idempotent APIs and exponential backoff. De-duplicate across multiple devices by ticket ID and canonical event time, merging where appropriate. Resolve conflicts (e.g., scan after cancellation) via deterministic rules and surface any exceptions to the host for review. Provide progress indicators and a retry queue with telemetry for failures. Ensure syncing runs in the background and is resilient to app suspensions.

Acceptance Criteria
Offline Mode Indicator & Safeguards
"As a pop-up host, I want clear offline indicators and guardrails so that I don’t accidentally lose progress or switch contexts while I’m not connected."
Description

Display a persistent, unobtrusive offline/online status with counts of unsynced check-ins and quick access to a diagnostic screen. Prevent risky actions while offline (e.g., logout, app update prompts) and warn before switching sessions if unsynced events exist. Provide storage and battery health warnings when approaching limits, and guide the operator to prefetch rosters. Ensure all indicators meet accessibility color contrast standards and are localized.

Acceptance Criteria
Secure Offline Data Storage
"As a privacy-conscious instructor, I want offline data to be minimized and encrypted so that attendee information remains protected even if my device is lost or stolen."
Description

Encrypt cached rosters, QR payloads, and attendance logs at rest using OS keystore-backed keys, with per-tenant segregation. Minimize PII by caching only fields required for validation and check-in. Implement configurable retention (e.g., auto-purge after X days or on sync) and secure wipe on logout or device compromise. Document data handling to meet GDPR/CCPA and provide a privacy mode that masks attendee details on-screen in public settings.

Acceptance Criteria

No-Code Verify

When a student forgets their QR, quickly verify by name and last 4 digits of the phone number, then one-tap check in. Built-in guardrails prevent impersonation while keeping the flow fast, so lines keep moving and support requests drop.

Requirements

Name + Last-4 Lookup
"As a studio receptionist, I want to find a student’s booking by name and confirm with the last four digits of their phone so that I can check them in quickly without needing their QR code."
Description

Enable staff to locate a student’s active booking by searching first/last name and verifying the last four digits of the phone number. Results are limited to today’s rosters within a configurable time window around class start. Display only masked phone (e.g., ***-***-1234), profile photo if available, class title/time, and booking status. Support fuzzy matching for common misspellings and diacritics. Prevents exposing full PII while keeping the flow fast and accurate. Integrates with existing roster/booking APIs and replaces the QR path when a code is unavailable.

Acceptance Criteria
One-Tap Check-In
"As an instructor managing a busy door, I want a one-tap confirmation after verification so that I can move the line quickly and keep attendance accurate across devices."
Description

After successful name + last-4 verification, present a single primary action that marks the booking as Checked In. Update capacity counters, attendance analytics, and the student’s booking record in real time. Prevent double check-ins and handle edge cases (e.g., multiple bookings, wrong class/time) with clear inline prompts. Provide instant tactile/visual confirmation for speed at the door. Syncs across devices and respects existing cancellation/waitlist logic without altering hold-to-confirm flows.

Acceptance Criteria
Impersonation Guardrails
"As a studio owner, I want built-in guardrails that stop impersonation attempts so that check-ins remain fast without sacrificing security or revenue."
Description

Add layered protections to deter and detect impersonation during No-Code Verify. Block check-in on last-4 mismatch; show a clear retry with limited attempts and brief cooldown after repeated failures. Apply server-side rate limits per device/user, and elevate to secondary verification (e.g., email last 2, booking reference, or manager override) for risky scenarios like duplicate names, reused last-4 across different names, or bookings outside the time window. Surface risk flags to staff and log all outcomes. Designed to minimize friction while protecting revenue and attendance integrity.

Acceptance Criteria
Offline Verify Cache
"As a front-desk assistant at a venue with spotty Wi‑Fi, I want to verify and check in students offline so that lines don’t stall when the network drops."
Description

Support check-in during poor connectivity by caching today’s rosters on-device with strict privacy controls. Store only what is needed: names, masked phone, salted hash of last-4, class IDs/times, and booking IDs. Allow local last-4 verification and queue check-ins for background sync when online. Handle conflict resolution (e.g., duplicate check-in) with server truth on reconnection and clear operator feedback. Provide admin controls for cache duration and remote wipe. All data at rest encrypted with OS keystore.

Acceptance Criteria
Verification Audit Log
"As a customer support lead, I want detailed logs of verification attempts so that I can resolve disputes and identify training opportunities without exposing sensitive data."
Description

Record an immutable audit trail for each verification attempt and check-in: timestamp, staff user, device ID, class/booking ID, result (match/mismatch), risk flags, and reason codes. Expose searchable filters in the dashboard and provide CSV export for support. Retain only masked identifiers and hashes to minimize PII. Enable dispute resolution, trend analysis on failed attempts, and targeted training for locations with higher error rates.

Acceptance Criteria
Role-Based Check-In Permissions
"As an operations manager, I want role-based controls and masked data at check-in so that staff can do their jobs quickly without unnecessary access to sensitive information."
Description

Gate No-Code Verify behind least-privilege roles. Define permissions for initiating verification, performing overrides, viewing risk flags, and exporting logs. Hide full contact details from check-in staff; show only masked phone and non-sensitive booking info. Enforce session timeouts, device PIN for kiosk mode, and immediate revocation on role changes. Aligns with privacy policy and reduces accidental PII disclosure while enabling rapid operations at the door.

Acceptance Criteria

Tap Drop-In

Accept walk-ins on the spot with contactless pay and instant check-in. Creates a booking record, captures contact for receipts and future reminders, and respects live capacity and auto-release rules. Converts last-minute interest into revenue without slowing the door.

Requirements

Tap-to-Pay Contactless Acceptance
"As front-desk staff, I want to accept contactless payments on the spot so that I can check in walk-ins quickly without slowing the door."
Description

Enable card-present, contactless payments for walk-ins using Tap to Pay on supported devices (e.g., iOS/Android) and certified readers. Present a single "Ready to Tap" screen with class name, price, taxes/fees, and pay button; process wallet (Apple Pay/Google Pay) and contactless EMV cards with instant authorization. Provide safe fallbacks: QR-to-pay and manual card entry when NFC is unavailable. Enforce PCI compliance and Strong Customer Authentication via the payment provider; store only tokens, never raw PAN. Apply real-time tax and pricing rules pulled from the class product. Guarantee door speed with a sub-5-second target from tap to confirmation; include reader health checks, connection status, and idempotency to prevent duplicate charges on repeated taps or retries. Emit a payment event that downstream flows (booking creation, receipt, analytics) consume.

Acceptance Criteria
Instant Booking Creation & Check-In
"As an instructor, I want a booking to be created and the attendee checked in immediately after payment so that my roster and capacity stay accurate without extra steps."
Description

On successful payment, automatically create a booking record for the selected class with a "Drop-In" source tag, link it to the payer’s customer profile, assign the correct price variant/taxes, and mark the attendee as Checked-In with timestamp and staff/device metadata. Decrement available capacity, update the live roster, and propagate changes in real time to all channels (instructor view, public class page, and waitlist logic). Ensure idempotent booking creation tied to the payment intent to avoid duplicates. Expose booking in receipts and attendee history for future reminders and re-engagement. Handle edge cases such as partial captures or asynchronous confirmations by keeping booking in a "pending" state until finalized.

Acceptance Criteria
Live Capacity Sync & Auto-Release Compliance
"As front-desk staff, I want the system to respect live capacity and waitlist holds so that we don’t oversell spots or disrupt auto-release rules."
Description

Before accepting a walk-in, check the class’s real-time capacity and any active hold or auto-release rules from the waitlist system. If a seat is under a two-minute Hold-to-Confirm for a waitlisted user, prevent standard drop-in purchase and surface a clear banner with the remaining hold time and a join-waitlist option (unless the user has override permissions). Apply concurrency locks to avoid overselling when multiple staff devices process walk-ins simultaneously. On successful drop-in, update capacity and cancel conflicting holds; on cancellation/refund, trigger backfill per auto-release rules. Provide configurable admin override to exceed capacity with reason codes and audit logging.

Acceptance Criteria
One-Step Contact Capture & Receipt Delivery
"As a studio owner, I want to capture a walk-in’s contact and send a receipt instantly so that they’re confirmed now and reachable for future reminders."
Description

After payment (or during flow if required by provider), capture the attendee’s minimal contact info to power receipts and future reminders—default to phone number (SMS) with optional email. Use a numeric-first keypad and real-time validation to keep the flow under two taps. Deduplicate against existing customers by phone/email and merge profiles when matched. Present explicit consent toggles for reminders/marketing to comply with GDPR/CCPA, storing timestamp, source, and preferences. Immediately send a branded SMS/email receipt including class details and check-in confirmation, and surface a quick-add calendar link. Handle edge cases: no phone available (offer email-only), bounced SMS/email retries, and language/timezone formatting.

Acceptance Criteria
Offline Door Mode & Deferred Sync
"As front-desk staff in a low-signal venue, I want an offline-friendly flow that queues transactions and reserves seats so that I can keep the line moving without losing sales."
Description

Provide a resilient door flow when connectivity is spotty. Detect offline state and switch to a degraded mode that: (a) queues contactless transactions for later capture if the provider supports offline auth; or (b) offers QR-to-pay and cash/IOU fallback while creating a pending booking with a soft seat hold. Maintain a local, time-bounded capacity mirror to prevent oversell; reconcile against the server on reconnect with conflict rules (e.g., if over-capacity, flag for staff resolution and notify affected attendees). Visually signal offline mode, sync progress, and any failed captures requiring follow-up. Ensure all queued actions (payments, bookings, receipts) are idempotent and audited on sync.

Acceptance Criteria
Door Refunds, Voids & Error Recovery
"As front-desk staff, I want to void or refund a walk-in payment and recover cleanly from errors so that customer issues are resolved on the spot and records remain accurate."
Description

Allow staff to void an authorization before capture or issue full/partial refunds post-capture directly from the door UI, with automatic updates to capacity, roster, receipts, and analytics. Detect and prevent duplicate charges using idempotency keys and tap-event deduplication. Provide clear recovery paths for failures (reader disconnects, network timeouts, SCA challenges) including safe retry, switch-to-QR/manual entry, or cancel-without-charge. Log all financial actions with user, device, timestamp, and reason code for audit. Ensure customer communications (reversal notifications, updated receipts) are triggered automatically.

Acceptance Criteria
Permissioned Override & Comp Entry
"As a studio manager, I want permission-based overrides and comps so that I can make justified exceptions without breaking capacity integrity or losing auditability."
Description

Introduce role-based controls allowing managers to bypass payment to add a comp or to exceed capacity with justification. Require a reason code and optional note; clearly label the booking as Comp or Override in the roster and analytics. Apply per-class and global limits for overrides to prevent abuse. Update capacity accordingly (with or without exceeding limits based on configuration) and ensure full audit trails (who, when, device). Support quick toggles for instructor comps, membership inclusions, or partner passes while keeping the door flow under a few seconds.

Acceptance Criteria

Late Pass

Students running behind can send a quick “Running Late” signal from their reminder, granting a host-defined grace period that’s visible on the door dashboard. Seats stay protected for a few extra minutes, reducing disputes and chargebacks while keeping the policy fair and transparent.

Requirements

One-tap Running Late Trigger
"As a student attendee, I want a one-tap “Running Late” action from my reminder so that my seat is held while I arrive a few minutes late."
Description

Provide a single-tap “Running Late” action accessible from SMS/email reminders and the mobile web/app booking details page. The action uses a signed, single-use token tied to the booking and validates eligibility (time window, booking status, seat type) before activating Late Pass. On activation, the booking transitions to a LatePass-Hold state, a grace-period expiry timestamp is computed, and the seat is temporarily protected. Supports fallback via SMS keyword (e.g., reply LATE) for low-connectivity scenarios. Handles time zones, localization, accessibility, and rate limiting. Prevents multiple concurrent activations per booking and exposes deep links for quick access.

Acceptance Criteria
Host-Defined Grace Policy Engine
"As a host, I want to define a clear grace period policy per class so that Late Pass holds seats fairly and consistently."
Description

Enable hosts to configure Late Pass policies at account, class template, and single-session levels, including grace duration, activation window (e.g., up to N minutes after start), eligible ticket types, max Late Pass uses per customer per period, and auto-cancel behavior on expiry. Policies are versioned and evaluated server-side to compute hold expiry and outcomes. The engine exposes a readable summary for student-facing reminders and receipts, and an API/SDK for the app and reminders service. Supports overrides, previews, and safe defaults; respects time zones and recurring schedules.

Acceptance Criteria
Door Dashboard Late Pass Display & Seat Hold
"As a studio receptionist, I want to see who is running late with a live countdown so that I can hold their spot and manage the door efficiently."
Description

Enhance the instructor/door dashboard to visualize Late Pass states in real time, including a countdown timer to expiry, color-coded status, and clear next actions (check-in, release, override). While Late Pass is active, the system keeps the attendee’s seat reserved and excludes it from waitlist backfill until expiry. On expiry, the seat automatically releases and triggers standard backfill flows. Supports offline resilience with local state caching and real-time sync via WebSockets/SSE across multiple devices. Includes role-based access controls and performance optimizations for large rosters.

Acceptance Criteria
Real-time Notifications & Countdown Timers
"As an attendee, I want clear countdowns and reminders about my grace period so that I know exactly how long my spot is protected."
Description

Deliver timely, localized notifications and on-screen timers for both students and staff. Students receive immediate confirmation with the exact expiry time, a live countdown in the booking view, and optional nudges (e.g., T-minus 2 minutes). Staff receive lightweight alerts in the door dashboard and optional push/SMS summaries when multiple Late Passes are active. Notifications are idempotent, de-duplicated, respect rate limits/quiet hours settings, and include deep links to the booking or dashboard. On expiry or check-in, send closure notifications and update all clients in real time.

Acceptance Criteria
Eligibility & Abuse Prevention Rules
"As a host, I want built-in controls that prevent misuse of Late Pass so that the policy remains fair and does not reduce class revenue."
Description

Implement server-side checks and limits to prevent misuse: ensure booking is confirmed/paid, class/session is within the host-defined activation window, Late Pass not already consumed for the booking, and customer has not exceeded account-level usage limits. Add rate limiting per user/device/IP, optional geo-checks, and anomaly detection to flag suspicious patterns. Provide configurable restrictions per host (e.g., disallow for first-time customers, require deposit) and an instructor override flow to approve/deny edge cases at the door. All denials return clear, localized reasons to the user.

Acceptance Criteria
Audit Trail & Chargeback Evidence Pack
"As an operator, I want an audit trail of Late Pass events so that I can resolve disputes and chargebacks with clear evidence."
Description

Capture an immutable event log for each booking: reminder delivery receipts, Late Pass activation request (timestamp, channel, IP/user agent), policy version applied, computed expiry, check-in time, and release outcome. Surface this as a downloadable evidence pack (PDF/CSV) and attach structured metadata to the payment record for gateways. Restrict access via RBAC, redact PII where unnecessary, and align with data retention policies. Provide quick links from disputes to the evidence pack to streamline responses and reduce chargebacks.

Acceptance Criteria

Split Presets

Save and reuse payout templates by class type, location, or instructor—percentage, fixed room fee first, or mixed. Apply in one tap when publishing a class so setups are consistent and fast, eliminating spreadsheet math and last‑minute rule mistakes.

Requirements

Preset Builder with Mixed Split Logic
"As a studio owner, I want to save payout templates with percentage, fixed fee first, and mixed logic so that I can reuse accurate splits without redoing math."
Description

Provide a creator to define, name, and save payout presets that support three modes: percentage-only, fixed room fee first (flat fee deducted before splitting remainder), and mixed (combining fixed and percentage with optional tiers, caps, and minimum guarantees). Include fields for applicability tags (class type, location, instructor), currency, and tax/fee inclusion rules. Offer real-time calculation preview against sample ticket price and capacity, with mobile-friendly inputs. Persist presets with unique IDs and version metadata via backend services and expose CRUD APIs. Ensure localization of currency/number formats and secure storage aligned with existing Classlane data models.

Acceptance Criteria
One-Tap Apply in Publish Flow
"As an instructor, I want to apply a saved preset in one tap when publishing a class so that setup is fast and consistent."
Description

Integrate a preset selector into the class publish flow that surfaces recent and recommended presets. Applying a preset in one tap should populate the class’s payout rules and display a breakdown preview per ticket, per attendee, and total at current price and capacity. Lock the preset version used at publish time for traceability, while allowing scoped per-class overrides within defined guardrails. Cache last-used preset by creator context and track selection events for analytics.

Acceptance Criteria
Contextual Preset Recommendations
"As a studio manager, I want preset suggestions based on class type, location, or instructor so that I pick the right split quickly and avoid errors."
Description

Automatically suggest relevant presets based on class type, location, instructor, and historical selection patterns. Support default presets per instructor and per location, with an optional auto-apply setting that can be undone before publish. Display confidence indicators and rationale (e.g., "Used for last 5 pottery classes at Studio A"). Provide fallback defaults when no match exists and log suggestion accuracy and time saved for optimization.

Acceptance Criteria
Role-Based Preset Governance
"As an owner, I want to control who can create, edit, or lock presets so that payout rules stay compliant across locations."
Description

Implement role-based access controls for presets: Owners can create, edit, delete, lock, and share across locations; Managers can create and edit within assigned locations; Instructors can apply but not modify locked presets. Support locking a preset to prevent edits, scoping presets to locations or teams, and an approval step for changes to shared presets. Surface permission states in UI and enforce on API endpoints. Send notifications to stakeholders on create/update/delete or lock/unlock events.

Acceptance Criteria
Audit Trail and Versioning
"As an operator, I want a versioned history of preset changes so that I can audit payouts and know exactly which rules applied to each class."
Description

Maintain immutable version history for each preset capturing author, timestamp, changes, and rationale notes. When a class is published, store the preset version ID for that class so later edits do not retroactively alter payouts. Provide UI to view and compare versions, clone from a prior version, and export audit logs. Emit webhooks on preset create/update/delete/version events for downstream accounting systems.

Acceptance Criteria
Validation and Safeguards
"As a publisher, I want the system to validate splits and flag conflicts so that I avoid underpayment or over-allocation before publishing."
Description

Validate presets at creation and application time: ensure post-deduction percentage totals do not exceed 100%, prevent fixed fees that exceed projected revenue at given price and capacity, and enforce rounding and currency rules. Handle multi-ticket price classes and composite revenue items (e.g., materials fees) per inclusion rules. Provide actionable error messages and warnings (e.g., low instructor payout) and block publish on critical errors. Include unit and integration tests for edge cases and calculator consistency.

Acceptance Criteria

Smart Deductions

Auto-deduct room fees, materials, and chosen costs before splitting revenue. Set which discounts reduce the host vs. instructor share (or proportionally), keeping take‑home predictable and reconciliation effortless for both sides.

Requirements

Deduction Rules Engine
"As a studio owner, I want to set standardized pre-split cost deductions for my classes so that payouts to me and instructors are consistent and predictable without manual reconciliation."
Description

Configurable rules to automatically deduct defined costs (e.g., room fees, materials, per-attendee consumables, fixed per-session charges, percentage-based costs) from gross booking revenue before revenue split. Supports per-attendee vs per-session basis, fixed and percentage types, stacking order/priority, applicability by class, schedule, and venue, and reusable templates with defaults at studio/class level. Handles multi-currency rounding, tax-inclusive vs tax-exclusive price modes, and ensures deterministic, auditable calculations stored with each booking for payout reconciliation within Classlane.

Acceptance Criteria
Discount Allocation Controls
"As a studio admin, I want to define how each discount impacts host and instructor shares so that promotional campaigns don’t unexpectedly reduce the wrong party’s payout."
Description

Controls to specify how each discount or promotion affects party shares: host-only, instructor-only, proportional to the agreed split, or excluded from split impact. Provides per-discount configuration, precedence when multiple discounts apply, caps/floors to prevent negative shares, and previews of the resulting allocation at checkout and in payout summaries. Integrates with existing coupons, memberships, and comp passes to ensure each discount reduces the intended party’s share and preserves predictable take-home for both sides.

Acceptance Criteria
Settlement Calculation Pipeline
"As a finance manager, I want a consistent settlement calculation process so that payouts, reports, and receipts all match without manual adjustments."
Description

Deterministic, idempotent calculation pipeline that sequences gross revenue, discount allocations per policy, pre-split deductions, and revenue splits to produce final host and instructor amounts. Supports partial payments, gift cards, gateway fees, and rounding rules, with a persisted calculation snapshot per booking and per payout. Exposes calculation states to checkout, ledgers, and payout modules to keep totals consistent across Classlane and enables re-computation on state changes while preserving audit trails.

Acceptance Criteria
Transparent Statements & Receipts
"As an instructor, I want clear statements that show exactly how my payout was calculated so that I can trust the numbers and avoid back-and-forth with the studio."
Description

Line-item statements for hosts and instructors showing gross revenue, applied discounts with allocation, pre-split deductions, split percentages, and final take-home per class and per payout period. Includes downloadable CSV exports, filters (date, class, instructor), and customer-facing receipts that optionally hide internal splits while itemizing discounts. Reflects adjustments from cancellations, backfills, or refunds with clear deltas to support effortless reconciliation in Classlane.

Acceptance Criteria
Admin Safeguards & Permissions
"As a studio owner, I want controls and safeguards around deduction settings so that changes don’t accidentally break payouts or require manual fixes."
Description

Role-based access to create and edit deduction templates and discount allocation policies, with change approvals, versioning, effective-dated configurations, and full audit logs. Includes validation to block configurations that could yield negative or out-of-bounds payouts, warning thresholds, and sandbox preview mode to test settings against historical bookings before going live.

Acceptance Criteria
Retroactive Adjustments & Refund Handling
"As a studio bookkeeper, I want cancellations and backfills to update payouts automatically so that I don’t have to redo calculations or issue manual corrections."
Description

Automatic re-computation of settlements upon cancellations, waitlist backfills, no-show fees, or partial/full refunds. Generates adjustment entries rather than mutating closed payouts, honors original discount allocation and deduction rules in effect at the time of booking, and notifies affected parties of changes. Supports configurable time windows, idempotency, and guards to prevent double adjustments, ensuring Smart Deductions remain accurate through lifecycle events in Classlane.

Acceptance Criteria

Tiered Rules

Create minimum guarantees, caps, and step-based percentages that adjust with attendance or revenue. Example: $30 room fee first, then 20% up to $500, then 15% thereafter—aligning incentives, preventing overpayment, and rewarding full classes.

Requirements

Tiered Payout Rule Builder
"As a studio owner, I want to configure tiered payout rules so that I can guarantee room fees and align incentives without manual spreadsheets."
Description

Provide a mobile-friendly interface to compose tiered payout rules with minimum guarantees, caps, and step-based percentages that trigger on attendance or revenue. Support configuring gross vs. net basis (inclusion/exclusion of taxes, processing fees, discounts), fixed fees (e.g., room fee), thresholds, rates, rounding rules, effective dates, and scope of application. Include real-time validation and a live preview showing example payouts across class sizes. Integrate with class templates and session setup flows so creators can attach a rule during creation or editing, and store rules as reusable templates.

Acceptance Criteria
Payout Calculation Engine
"As a finance admin, I want payouts calculated automatically per session based on attendance and revenue so that we eliminate manual reconciliation and errors."
Description

Implement a deterministic backend service that applies tiered rules to each session’s actuals to compute payouts for instructors and studio owners. Handle step functions, minimum guarantees, caps, and mixed fee structures with precise rounding and currency consistency. Recompute on lifecycle events (booking, cancellation, refund, backfill) with idempotency and concurrency safety. Expose a calculation API and webhook triggers for downstream payout processing, and persist detailed line items to enable auditing and reconciliations.

Acceptance Criteria
Rule Assignment & Versioning
"As an operations manager, I want to assign and version rules across classes and dates so that changes roll out safely without retroactively altering existing sessions."
Description

Enable attaching rules at multiple hierarchy levels (account, location, instructor, class template, individual session) with clear precedence and inheritance. Provide drafting, approval, and publish workflows with effective-from/until dates. Snapshot the active rule onto a session once sales open to prevent unintended retroactive changes, while allowing future-dated updates. Maintain a change log with who/when/what for compliance and rollback.

Acceptance Criteria
Scenario Simulator & Payout Preview
"As an instructor, I want to simulate payouts at different class sizes so that I can price sessions and capacity confidently."
Description

Offer a simulator that lets users input hypothetical attendance and revenue to visualize tier progression and resulting payouts. Display charts and tabular breakdowns by tier, minimums, and caps; support shareable previews during class setup and in the pricing screen. Allow exporting the scenario as a CSV or image for negotiations and record-keeping, and surface recommendations (e.g., capacity needed to reach next tier).

Acceptance Criteria
Dynamic Recalculation & Cutoffs
"As a studio owner, I want payouts to update when bookings change before cutoff so that payouts reflect the final attendance without manual intervention."
Description

Automatically recalculate payouts when cancellations, discounts, no-shows, or waitlist backfills occur before a configurable cutoff. Integrate with Classlane’s Hold-to-Confirm waitlist to reflect last-minute backfills. Lock payouts after cutoff while recording any late changes as adjustments in the next cycle. Send notifications to stakeholders when material tier changes occur, and log all recalculations with before/after values for traceability.

Acceptance Criteria
Payout Breakdown & Audit Reporting
"As an accountant, I want transparent payout breakdowns and exports so that I can reconcile payments and resolve disputes quickly."
Description

Provide a per-session payout breakdown with the rule version used, thresholds hit, application of minimums and caps, and itemized calculations. Support filters, CSV export, and an API for accounting systems. Highlight anomalies (e.g., payouts exceeding caps) and include an immutable audit trail of edits and calculations to speed dispute resolution and monthly reconciliations.

Acceptance Criteria

Split Preview

See real-time who-gets-what as you tweak price, capacity, promos, and expected attendance. Per-seat and per-party payouts update instantly, including fees, so coordinators publish with confidence and instructors know their take-home upfront.

Requirements

Real-time Payout Engine
"As a coordinator, I want payouts to recalculate instantly as I tweak pricing so that I can publish with confidence about take-home and margin."
Description

Calculate and render per-seat and per-party payouts, attendee price with fees, instructor take-home, platform margin, and taxes (if enabled) within 100 ms of any input change (price, capacity, expected attendance, promos, fee payer). The engine must mirror checkout’s order of operations and rounding rules to ensure parity, support fee absorption vs pass-through, multi-currency display, and deterministic results. Implement client-side incremental recalculation with server-side validation on change batches, with graceful degradation on slow networks. Prevent zero/negative net payouts via hard validation and expose structured outputs for UI components and publish snapshots.

Acceptance Criteria
Scenario Controls Panel
"As an instructor, I want simple controls to adjust price, capacity, and promos so that I can immediately see how changes affect my take-home."
Description

Provide a mobile-first control surface to adjust price, capacity, expected attendance, promo settings (fixed/percentage, caps, expirations), fee payer toggle (student/instructor/split), tax toggle, and assumed party-size distribution. Defaults should load from the class template and can be saved as presets. Controls must be accessible (WCAG 2.1 AA), support keyboard and touch, debounce inputs, and feed changes to the payout engine in real time. Offer suggested expected attendance based on recent fill rates and waitlist behavior, with clear inline deltas to current published values.

Acceptance Criteria
Party & Seat Modeling
"As a studio coordinator, I want to model realistic party-size patterns so that the preview reflects how revenue and capacity will behave in practice."
Description

Model bookings that occur per party (variable party sizes) and per seat to accurately compute utilization and payouts. Allow configuration of typical party-size distribution and minimum/maximum party rules; reflect effects on remaining capacity and effective revenue per seat. Support mixed bookings in the same session and show line-item projections for a representative party and a single seat. Ensure compatibility with private events (whole-class booking) by collapsing per-seat view appropriately.

Acceptance Criteria
Fee & Promo Application Logic
"As a coordinator, I want a clear, accurate breakdown of promos and fees so that I understand exactly where money goes before I publish."
Description

Implement a unified calculation pipeline that applies base price, stacked promos (percentage then fixed with caps and floors), taxes, processing fees, and platform fees in a configurable order, respecting who pays each fee. Display a transparent line-item breakdown per seat and per party with tooltips and help text. Enforce promo validity windows, usage limits, and minimum price floors, and guarantee parity with checkout through shared libraries/tests.

Acceptance Criteria
Role-based Preview Views
"As an instructor, I want a view focused on my net take-home while coordinators see margin and risk so that each of us has clarity without exposing unnecessary details."
Description

Provide role-aware toggles for Coordinator View and Instructor View. Coordinator View emphasizes platform margin, gross revenue, expected fill, and risk indicators; Instructor View emphasizes net take-home per seat/party and per-session totals. Respect permission scopes to hide sensitive financials when necessary. Persist the last-selected view per user and ensure the same scenario data drives both views to avoid drift.

Acceptance Criteria
Guardrails & Warnings
"As a coordinator, I want clear warnings and blockers when a configuration risks profitability or violates rules so that I avoid publishing problematic setups."
Description

Add real-time validations with inline warnings and hard blockers: prevent negative instructor take-home, flag configurations below minimum price, highlight promo stacking that violates rules, warn when expected attendance exceeds capacity, and surface break-even thresholds. Use color-coded deltas and concise messages; provide actionable fixes (e.g., suggested price floor). Block publishing when critical constraints are violated and summarize all issues in a pre-publish checklist.

Acceptance Criteria
Snapshot & Publish Confirmation
"As a coordinator, I want the published listing to lock a snapshot of the calculations so that everyone can reference the exact financial terms later."
Description

On publish, capture an immutable snapshot of the final scenario inputs and computed financial breakdowns (per-seat, per-party, totals) and associate it with the class version for auditability. Generate a shareable summary (PDF/JSON) and include it in the confirmation screen and activity log. Ensure snapshots can be compared across drafts to show what changed and by how much, and that rollbacks restore both inputs and derived outputs consistently.

Acceptance Criteria

Multi-Party Routes

Add venues, co-hosts, assistants, or affiliates with separate payout destinations. Invite them to submit tax details and accept terms; Classlane routes instant per-booking payouts with a full audit trail—no more manual Venmo splits or end-of-day transfers.

Requirements

Partner Onboarding & KYC
"As an organizer, I want to invite partners to add payout details and accept terms so that Classlane can route payouts compliantly without me handling sensitive information."
Description

Provide an invitation-driven onboarding flow for venues, co-hosts, assistants, and affiliates to create or connect payout destinations. Collect and validate tax details (e.g., TIN/W-8/W-9), verify identity (KYC/KYB), capture acceptance of Classlane and payment processor terms, and securely store consent artifacts. Support domestic and international partners, autosave progress, resend invitations, reminder nudges, and real-time onboarding status. All sensitive data must be encrypted at rest and in transit and never exposed to organizers.

Acceptance Criteria
Payout Split Rules Engine
"As a studio owner, I want to configure how revenue is split across partners so that payouts are automatic and accurate for each booking."
Description

Implement a configurable rules engine to define per-class or global payout splits using percentages, fixed amounts, or hybrids with floors, caps, and residual-to-owner logic. Allow pre- or post-fee basis selection, coupon/discount handling, tax treatment, effective dates, and versioning. Validate rules for total <= 100%, detect conflicts, and provide a simulation/preview to show each party’s expected share for a sample booking. Expose rules via UI and API with audit of changes.

Acceptance Criteria
Real-time Payout Routing
"As a co-host, I want to receive my share automatically right after each booking so that I don’t wait for manual end-of-day transfers."
Description

On successful booking capture, compute splits and initiate instant transfers to each partner’s payout destination. Support idempotent processing, queued retries with exponential backoff, failure isolation per leg, and fallback to scheduled payouts when instant transfer is unavailable. Allocate processor fees according to rules, handle multi-currency classes, and tag transfers with booking, class, and partner identifiers for reconciliation.

Acceptance Criteria
Refunds, Cancellations, and Chargeback Reconciliation
"As a venue partner, I want payouts to adjust correctly when a class is canceled or refunded so that my statements and balances remain accurate."
Description

Provide proportional reversal logic to claw back prior partner payouts for refunds, cancellations, and chargebacks. Manage negative balances with auto-offset against future earnings, partial refund handling, non-refundable components, and policy-based exceptions. Generate clear adjustment entries, update partner statements, and notify affected parties. Ensure reversals are linked to original payouts for full traceability.

Acceptance Criteria
Audit Trail and Financial Reporting
"As an accountant, I want a complete audit trail of each booking’s revenue split and payouts so that I can reconcile statements and prepare taxes."
Description

Maintain an immutable, time-stamped ledger of events covering split calculations, payouts, reversals, fees, and adjustments per booking. Provide in-app views and exportable CSV reports by date range, class, and partner, with processor transaction IDs for reconciliation. Include per-party earnings statements, aging of negative balances, and downloadable evidence (terms acceptance, tax forms) scoped by permissions.

Acceptance Criteria
Role-Based Access and Visibility Controls
"As a studio owner, I want to control what each partner can see and change so that sensitive financial data stays protected."
Description

Define roles (owner, co-host, assistant, affiliate) with least-privilege permissions for viewing bookings, earnings, and configuration. Enforce data partitioning so partners only see their own earnings and limited booking details as authorized. Log administrative changes, surface access requests, and support revocation or transfer of access when relationships end.

Acceptance Criteria
Split Templates and Bulk Assignment UI
"As an instructor, I want to quickly apply predefined payout splits to many classes so that setup is fast and error-free."
Description

Provide a mobile-first UI to create reusable payout split templates and apply them in bulk to classes, series, or venues. Offer inline validation, warnings for incomplete/over-allocated splits, and an earnings preview per ticket type. Support default templates per partner, quick edit, and version roll-forward with effective dates.

Acceptance Criteria

Pack Promo Rules

Control how class packs, gift balances, and promo codes impact each side of the split. Choose list-price vs. blended pack valuation and whether promos reduce the host share, instructor share, or both proportionally—ensuring fairness for repeat buyers and partners.

Requirements

Split Policy Engine
"As an operator, I want a single, reliable engine to calculate splits under complex discounts so that payouts are fair and consistent across bookings."
Description

Core server-side service that deterministically computes host and instructor shares for each booking after applying class packs, gift balances, and promo codes. Supports selectable valuation modes (list-price vs blended pack), promo impact modes (reduce host, instructor, or proportional), precedence rules across discount types, and effective-dated configurations at org, venue, class, and partner levels. Handles cancellations, waitlist backfills, partial redemptions, taxes/fees exclusions, rounding, currency, and idempotent recalculation on booking updates. Exposes a single calculation API used by checkout, admin, payouts, and reporting. Emits structured calculation details for audit and reconciliation.

Acceptance Criteria
Blended Pack Valuation
"As a studio owner, I want pack redemptions valued fairly across different class prices so that neither instructors nor hosts are penalized for catalog mix."
Description

Implement blended pack valuation that imputes an effective per-redemption price based on the pack’s purchase price and remaining credits across eligible classes, alongside a list-price valuation option. For each redemption, calculate the imputed value, cap at list price, and feed the value into split calculations. Support mixed-price class catalogs, multi-seat bookings, and cross-class packs. Persist the valuation snapshot at booking time and recalc on changes while honoring prior payouts. Provide admin toggles to choose default valuation and per-class overrides.

Acceptance Criteria
Promo Impact Configuration UI
"As an admin, I want to set clear rules for how promos affect payouts so that discounts don’t unintentionally shortchange partners."
Description

Provide an admin UI to configure how promo codes and gift balances affect splits: reduce host share, reduce instructor share, or reduce both proportionally. Include defaults at organization level with optional overrides by partner, venue, or class. Offer guardrails (cannot reduce a share below zero), contextual help, and a live preview that simulates a booking with selected discounts, packs, and prices. Persist configurations with versioning and display effective dates. Surfaced in mobile and desktop admin; changes propagate to the calculation engine via secured APIs.

Acceptance Criteria
Discount Application Order & Guardrails
"As a shopper, I want predictable discount behavior at checkout so that the final price and payout impact match what I expect."
Description

Define and enforce a deterministic order of operations when multiple value sources apply (gift balance, pack, promo code, credits) with configurable precedence and safe defaults. Prevent double-discounting, ensure taxes/mandatory fees are excluded or included per policy, and cap total discounts at the list price. Provide conflict resolution rules, clear error messages, and an explanation string returned to clients showing the step-by-step application used at checkout and in receipts. Support re-application on edits, cancellations, and waitlist backfills.

Acceptance Criteria
Payout Ledger & Reconciliation Exports
"As a finance manager, I want detailed ledger records and exports so that I can reconcile payouts and resolve partner disputes quickly."
Description

Create a double-entry payout ledger that records raw price, applied valuation, discount allocations, final host/instructor shares, and rule versions per booking event. Include adjustments for cancellations, no-shows, and Hold-to-Confirm backfills. Provide filterable views in admin and CSV exports for accounting, plus webhook events for external systems. Ensure entries reconcile to weekly payouts with traceable audit trails and support for dispute resolution.

Acceptance Criteria
Partner Contract Overrides
"As a partnerships manager, I want contract-level overrides for splits and promo treatment so that special arrangements are honored without manual edits."
Description

Allow effective-dated partner contracts that specify default split percentages, promo impact mode, and valuation preference with the ability to override per event or series. Enforce permissioning so only authorized roles can create or edit overrides, show impact previews before publishing, and log all changes. On calculation, select the most specific applicable contract (event > class > venue > partner > org default). Support sunset dates and automatic fallback when expired.

Acceptance Criteria

Credit Priority

Automatically uses the credits that expire soonest first and lets students set a preferred pack order (e.g., Pottery Pack before Yoga Pack). Reduces breakage, removes checkout guesswork, and keeps rebooking effortless—credits just apply in the smartest way.

Requirements

Expiry-First Credit Selection Logic
"As a student, I want my soonest-expiring eligible credits to be applied automatically so that I don’t lose value and can book quickly without managing packs manually."
Description

Implement a deterministic credit selection engine that automatically applies the student’s eligible credits that expire soonest first, across all owned packs that can be used for the chosen class. The engine must evaluate credit- and pack-level expiration dates, class eligibility constraints (e.g., category, studio, price tier), and required credits per booking. Tie-break order must be: student’s pack preference, then earliest expiration, then FIFO by acquisition time. Prefer fulfilling a booking from a single pack when possible to minimize fragmentation, but support combining packs for multi-credit classes. The engine must be idempotent, reversible on cancellation, safe for concurrent requests, and capable of temporary credit reservations for Hold-to-Confirm. It should expose a lightweight scoring function usable by checkout, waitlist, and API surfaces and execute within strict latency targets to keep mobile flows instant.

Acceptance Criteria
Student Pack Priority Manager
"As a student, I want to set my preferred pack order so that my Pottery credits are used before my Yoga credits when both are eligible."
Description

Provide a mobile-first Wallet interface that lets students set and reorder their preferred pack usage (global order) and optionally define per-category overrides (e.g., Pottery before Yoga). Include controls to deprioritize or temporarily pause a pack from auto-apply, with real-time validation against instructor or pack restrictions. Show a live preview of how the next booking would consume credits under the current settings. Defaults should be sensible for new users (e.g., most relevant pack first based on purchase and usage). All preferences must be stored per user, versioned for audit, synced across devices, and honored consistently by checkout, waitlist, and API flows.

Acceptance Criteria
Smart Auto-Apply at Checkout with Explanation
"As a student, I want checkout to auto-apply the best credits and clearly show what was used so that I can confirm quickly with confidence."
Description

Integrate the credit selection engine directly into checkout so that credits auto-apply without extra taps. Present a concise, human-readable breakdown of which pack and specific credits are used, remaining balances, and any cash copay if credits are insufficient. Allow a one-tap override to pick a different eligible pack while maintaining guardrails (e.g., cannot apply ineligible packs). Ensure atomic reservation of credits at tap and release on timeout or abandonment. Provide a zero-friction fallback to saved payment methods if no credits are eligible. The decision, reservation, and UI explanation must complete under 200 ms at P95 to preserve a snappy link-in-bio booking experience.

Acceptance Criteria
Hold/Waitlist and Cancellation Reconciliation
"As a waitlisted student, I want my credits to be held and released correctly during holds and backfills so that I’m never charged incorrectly and can accept a spot with confidence."
Description

Make Credit Priority fully compatible with Classlane’s two-minute Hold-to-Confirm and auto-text backfill flows. When a seat is held, create a temporary credit reservation following the selection logic; on confirm, convert to a final debit; on hold expiry or decline, release instantly. If a cancellation occurs within policy, return credits to the original pack with the original expiration and restore ordering invariants; if late-cancel/no-show fees apply, ensure correct credit/cash handling per studio policy. When a spot is auto-offered to the next waitlisted student, re-run selection using their preferences and eligibility. All transitions must be idempotent, race-safe, and fully logged for support traceability.

Acceptance Criteria
Eligibility and Tie-Break Rules Engine
"As a studio owner, I want consistent, enforceable rules for which packs can be applied and in what order so that class access policies are honored and support issues are minimized."
Description

Centralize and enforce all eligibility constraints and tie-break rules used by Credit Priority: class category and location restrictions, studio- or instructor-specific packs, blackout dates, min/max class price tiers, multi-credit classes, and subscription vs. pack precedence. Define a single, auditable order-of-operations (preference → eligibility → soonest expiry → FIFO) and consistent time zone handling for expirations and booking windows. Provide feature flags for instructor overrides (e.g., promotional packs cannot be auto-applied) and guardrails that prevent students from prioritizing ineligible packs. Expose a reusable service with deterministic outputs for use across checkout, waitlist, APIs, and reports.

Acceptance Criteria
Credit Ledger, Explainability, and Insights
"As an instructor, I want a clear record of which credits were used and why so that I can resolve disputes quickly and understand the impact on revenue and breakage."
Description

Create an immutable ledger that records every credit reservation, application, release, and reversion with timestamps, sources (checkout, waitlist, admin), and decision rationale (why specific credits were chosen). Surface student-facing explanations in Wallet and receipts, and instructor-facing views in dashboards, including exportable CSVs. Provide metrics to quantify breakage avoided, rebooking rate impact, and no-show reduction attributable to Credit Priority. Ensure privacy by redacting PII beyond what is necessary for reconciliation and comply with local data retention policies.

Acceptance Criteria
Public API and Webhooks for Credit Application
"As a partner developer, I want APIs and webhooks for credit application events so that our downstream systems can react in real time and stay in sync with Classlane bookings."
Description

Expose endpoints to preview credit application for a given session and user, update a user’s pack preference order, and retrieve credit histories. Publish webhooks (credit_reserved, credit_applied, credit_released, credit_reverted) with idempotency keys and minimal payloads that include decision context and ledger references. Ensure backward compatibility with existing booking APIs, apply rate limits, and provide versioned schemas. This enables studios, partners, and analytics tools to stay in sync with Credit Priority events and power custom workflows like CRM updates or rewards.

Acceptance Criteria

Mini Top-Up

Add 1–3 credits to an active pack in one tap from an SMS nudge or reminder. Extends the pack’s expiration slightly for all remaining credits so students can finish the pack without over‑committing, while instructors capture incremental revenue and keep seats filled.

Requirements

SMS Nudge with Deep Link
"As a student, I want to receive a timely text with a one-tap link to add 1–3 credits when I’m about to run out or expire so that I can finish my pack without over‑committing."
Description

Trigger automated SMS when a student’s active pack is low on credits (e.g., ≤2 remaining) or nearing expiration (e.g., ≤7 days). The message includes a secure, tokenized deep link that opens to a prefilled Mini Top-Up sheet (choose +1, +2, or +3 credits) with localized copy and dynamic pricing. Respect user consent, quiet hours, send-rate limits, and opt-out (STOP/HELP) handling. Track delivery, clicks, and conversions; fall back to email if SMS fails. Integrates with Classlane’s messaging service and attribution to tie downstream purchase events to the originating nudge.

Acceptance Criteria
One-Tap Top-Up Checkout
"As a student, I want a frictionless one-tap top-up using my saved payment so that I can quickly secure my spot and avoid losing access."
Description

Provide a frictionless purchase flow that charges a saved payment method in one tap from the deep link, with an inline confirmation of quantity, price, tax, and new expiration. Support Apple Pay/Google Pay if no card is on file and step-up 3DS where required. Execute payment and credit grant atomically with idempotency keys to prevent double charges. Display success/failure states, send receipts, and update the student’s balance in real time. Integrates with existing payments gateway, receipt service, and booking availability checks.

Acceptance Criteria
Expiration Extension Engine
"As a student, I want my pack’s expiration to extend slightly when I top up so that I have enough time to use my remaining credits."
Description

Implement business rules that extend the pack’s expiration slightly for all remaining credits upon a top-up. Support instructor-configurable policies (e.g., +3/+5/+7 days for +1/+2/+3 credits, with a hard cap) or a default formula. Apply changes to the pack-level expiry and recalculate any derived per-credit expirations. Enforce caps, handle time zones, and log changes with auditability. Revert extensions automatically on refund/void. Surface the new expiry to both student and instructor in UI and notifications.

Acceptance Criteria
Unified Credit Ledger Update
"As an instructor, I want top-ups to immediately increase a student’s available credits and update balances consistently so that bookings reflect real availability."
Description

On successful top-up, append a ‘top-up’ transaction to the credit ledger that increases the pack’s available credits and preserves FIFO consumption order. Ensure atomic consistency between payment capture, credit grant, and availability caches. Support visibility of transaction history (date, quantity, price, method) to students and instructors, and reconcile edge cases such as chargebacks, partial refunds, and expired credits. Expose read APIs/events for downstream systems (waitlist, booking engine) to react to the new balance.

Acceptance Criteria
Instructor Controls & Pricing
"As an instructor, I want to configure whether Mini Top-Up is enabled, prices, and limits per pack so that it fits my business model."
Description

Add configuration options at pack and studio levels to enable/disable Mini Top-Up, set prices for +1/+2/+3 credits, choose expiration extension policy and caps, and limit frequency (e.g., one top-up per pack or per time window). Provide previews of student-facing copy/SMS, default templates, and guardrails (minimum price, tax rules, currency). Ensure settings propagate to deep links, checkout, and analytics. Include role-based access and audit logs for changes.

Acceptance Criteria
Conversion & Revenue Analytics
"As an instructor, I want analytics on top-up nudges, conversions, and revenue so that I can measure impact and optimize settings."
Description

Instrument the Mini Top-Up funnel end-to-end with events for nudge sent, delivered, clicked, checkout initiated, purchased, and refunded. Provide dashboards and exports that show conversion rates, incremental revenue, saved seats, and impact on no-shows by pack, instructor, and channel. Support cohort and A/B comparisons across different pricing and extension policies, plus webhooks for external BI. Ensure metrics are privacy-compliant and sampled efficiently for performance.

Acceptance Criteria
Compliance, Security, and Rate Limiting
"As an operations and compliance stakeholder, I want safeguards for messaging, payments, and abuse prevention so that the feature is secure, compliant, and trustworthy."
Description

Enforce messaging compliance (TCPA/CTIA with STOP/HELP, consent logging), payment security (PCI DSS scope minimization, tokenization, 3DS), and privacy (GDPR/CCPA data handling). Sign and expire deep links (HMAC + short TTL), encrypt PII at rest/in transit, and implement per-user and per-pack rate limits to prevent spam and abuse. Add monitoring, audit logs, and alerting for failures and anomalies, with clear runbooks and SLAs.

Acceptance Criteria

Buddy Credit

Send a single credit to a friend via text to join a class—no app required. The guest books in one tap and is auto-collected for reminders. Students share experiences easily; instructors gain warm referrals and new regulars with clear limits and tracking.

Requirements

SMS Buddy Credit Issuance
"As a student, I want to send a Buddy Credit via text to a friend so that they can join my class without installing an app."
Description

Enables a student to generate a single-use Buddy Credit tied to a specific class, class group, or instructor, and deliver it via SMS to a friend’s phone number. The system creates a secure redemption link with configurable expiration, seat-hold duration, and eligibility (class, time, location). It validates sender eligibility and limits, stores issuance in a ledger, and surfaces a copy-link fallback if SMS delivery fails. Integrates with existing contact collection, pricing, and payouts to ensure the issuer/instructor funding rules are applied at redemption.

Acceptance Criteria
One-Tap Guest Booking Flow
"As a guest recipient, I want to book a class in one tap from an SMS link so that I can join quickly with no friction."
Description

A mobile-first web flow that opens from the SMS link and applies the Buddy Credit automatically. The guest books in one tap with pre-filled class, price covered by the credit, and minimal required fields (name, phone, email); no account required. It confirms seat availability in real time, handles edge cases (class full, credit expired), and enrolls the guest into the standard reminder cadence. Supports calendar add, venue details, and cancellation policies aligned with Classlane.

Acceptance Criteria
Credit Rules, Limits, and Ledger
"As an instructor, I want clear limits and a usage ledger for Buddy Credits so that I can control costs and track referrals."
Description

Configurable rules controlling who can issue credits, how many per period, eligible classes, and redemption windows. A double-entry ledger records issuance, delivery, redemption, expiry, and revocation events with timestamps and actors. Limits are enforced at issuance and redemption to prevent overuse, and instructors can view usage at the class and student level. Exposes summaries and export to support tracking of referrals and cost, and provides admin overrides for support.

Acceptance Criteria
Fraud Prevention and Abuse Controls
"As a platform admin, I want safeguards that prevent Buddy Credit abuse so that credits aren’t shared or exploited."
Description

Security measures to ensure each Buddy Credit is single-use and non-transferable at scale: cryptographically signed tokens, link expiration, binding to the recipient phone on first open, optional SMS OTP verification at redemption, rate limiting, device fingerprinting, and anomaly detection on issuance/redeem patterns. Provides revocation tools and event logs, and masks details to protect sender/recipient privacy. Integrates with existing anti-spam and consent systems.

Acceptance Criteria
Instructor Controls and Funding Configuration
"As an instructor, I want to configure eligible classes and who funds the credit so that Buddy Credits align with my pricing and schedule."
Description

Dashboard settings allowing instructors to enable Buddy Credit, choose eligible classes/sessions, set per-student caps, define expiration windows, and determine who funds the credit (instructor, sender, or promotional pool). Supports price ceilings, blackout dates, and cancellation/refund rules. Integrates with Classlane pricing, taxes, and payouts so settlement reflects funded amounts, fees, and adjustments.

Acceptance Criteria
Notifications and Lifecycle Messaging
"As a student and recipient, I want timely SMS updates about delivery, redemption, and reminders so that we both know what’s happening."
Description

Automated SMS flows for both sender and recipient across the credit lifecycle: confirmation to sender, delivery to recipient with secure link, booking confirmation, reminders, and expiration warnings. Handles delivery status callbacks, retries, and fallbacks (email where available) and respects opt-in/opt-out and regional compliance (e.g., TCPA/GDPR). Messages are templated, localized, and configurable per instructor within platform limits.

Acceptance Criteria
Seat Hold and Waitlist Integration
"As a recipient, I want the credit to hold my seat and work with waitlists so that I don’t lose the spot while I redeem it."
Description

When a recipient opens a Buddy Credit link, the system temporarily holds a seat for a short window to reduce drop-off, and integrates with Classlane’s Hold-to-Confirm waitlist to backfill cancellations. If a seat is unavailable, the credit can be applied to the next available session or waitlist with automatic two-minute confirmations. Ensures consistent inventory state across standard bookings and credits to prevent oversell.

Acceptance Criteria

Travel Freeze

Pause a pack’s countdown for travel or illness with a self‑serve, host‑defined freeze (e.g., up to 14 days per pack). Protects student value without support emails, displays a clear resume date, and prevents frustration that leads to refunds or churn.

Requirements

Freeze Policy Configuration
"As a host, I want to define clear freeze rules per pack so that students can self-serve within boundaries without creating support overhead."
Description

Provide host-defined freeze rules at org and pack levels, including maximum freeze days per pack (default up to 14), minimum single-freeze length, cumulative cap across multiple freezes, cooldown between freezes, advance-notice requirement, and allowed reasons (e.g., travel, illness). Policies are timezone-aware, versioned, and validated on creation and update. UI in the host dashboard lets owners set global defaults and override per pack. Enforcement ensures freezes are only allowed on eligible, active packs and never exceed configured limits.

Acceptance Criteria
Student Self-Serve Freeze Flow
"As a student, I want to pause my pack during travel so that I don’t lose value or need to contact support."
Description

Enable students to initiate, view, and manage freezes from the mobile link-in-bio and pack detail screen. Flow includes selecting reason, start date, and duration within host limits, real-time validation, and a confirmation screen that shows the calculated resume date. Provide an "Unfreeze Now" action for early resumption. Handle overlapping or back-to-back requests gracefully and block invalid ranges. Ensure responsive UX, accessibility (WCAG AA), localization, and secure access tied to the student’s account.

Acceptance Criteria
Countdown & Expiry Engine
"As a host, I want pack expiration to extend by the freeze duration so that student value is protected without manual adjustments."
Description

Pause a pack’s validity countdown during the freeze window and extend its expiration by the exact number of frozen days without altering remaining visit credits. Support common pack validity models (e.g., N days from purchase or first use, fixed use-by date). Compute and persist a precise resume date in the host’s timezone, with deterministic rounding rules for whole-day freezes. Maintain a freeze ledger (start/end, creator, reason, policy snapshot) to support multiple freezes up to the cumulative cap. Handle DST, timezone shifts, and leap days consistently.

Acceptance Criteria
Booking Restrictions & Conflict Handling
"As a student, I want bookings that conflict with my freeze handled automatically so that I’m not penalized or confused."
Description

When a pack is frozen, prevent it from being used to book new classes during the freeze window while allowing alternative payment methods. Detect existing bookings that fall within the freeze and offer one-tap resolution: cancel with penalty waived per policy or keep and auto-unfreeze if the host allows. Block check-in with a clear reason if the pack is still frozen at class time. Host setting controls whether conflicts auto-cancel or require student confirmation. All changes update availability and waitlists in real time.

Acceptance Criteria
Notifications & In-App Messaging
"As a student, I want clear confirmations and reminders about my freeze so that I always know when access will resume."
Description

Send transactional communications at key moments: freeze confirmation with policy summary and resume date, 24-hour pre-resume reminder, and unfreeze confirmation. Render persistent in-app banners on the pack card showing frozen status and resume date. Support SMS and email based on user preferences with localized templates and tokenized fields (e.g., {resume_date}). Respect quiet hours and deliverability settings; fall back between channels if one fails.

Acceptance Criteria
Admin Overrides & Audit Trail
"As a host, I want to adjust or override freezes with a recorded reason so that exceptions are handled cleanly and are traceable."
Description

Provide host-facing tools to view, edit, or cancel freezes, backdate within policy, or override limits with a required note. Show a complete audit trail capturing who changed what and when, including old/new values and reason. Role-based access limits overrides to authorized roles. Include list and detail views per student and per pack, plus CSV export for compliance or support.

Acceptance Criteria
API, Webhooks, and Reporting
"As a host, I want freeze events and metrics available via integrations so that my CRM, analytics, and support workflows stay in sync."
Description

Expose secure endpoints for hosts to list and manage freezes programmatically. Emit webhooks for freeze.created, freeze.updated, freeze.resumed, and freeze.denied with idempotency and signature verification. Provide basic analytics: freeze adoption rate, average frozen days per pack, conflict resolution outcomes, and impact on refunds/churn, available in dashboard widgets and exportable. Ensure backward-compatible versioning and clear SLAs for event delivery.

Acceptance Criteria

Off-Peak Boost

Earn a small bonus (extra days or a bonus credit after N off‑peak check-ins) when using pack credits in quieter time slots. Students get extra value; studios fill low-demand classes and smooth capacity without discounting core offerings.

Requirements

Off-Peak Window Configuration
"As a studio owner, I want to define off-peak time windows so that qualifying classes are automatically identified for rewards."
Description

Enable studios to define and manage off-peak time windows at the calendar, location, and class levels with timezone awareness. Provide weekday/time-range rules, effective dates, exceptions (holidays/blackouts), and class-level overrides. Include validation to prevent overlaps, versioning to preserve historical context for previously booked classes, and a preview that highlights which upcoming classes qualify. Expose configuration via UI and API, and ensure changes propagate to discovery, booking, and check-in services in near real time.

Acceptance Criteria
Bonus Rule Engine
"As a studio owner, I want to set the reward type and thresholds for off-peak usage so that I can incentivize attendance without discounting core classes."
Description

Allow studios to configure incentive rules that determine reward type (extra pack validity days or bonus credit), threshold (e.g., earn 1 bonus credit after N off-peak check-ins), eligibility by pack type, caps per period, reward expiry, and stacking behavior. Support audience targeting (e.g., new vs. returning students), program start/end dates, and per-studio toggles. Provide a rule simulator to estimate impact. Ensure rules integrate with billing/ledger services to issue rewards consistently and are traceable for audits.

Acceptance Criteria
Qualifying Check-In Detection
"As an operations manager, I want qualifying check-ins to be automatically detected so that accruals are accurate and auditable."
Description

Determine whether a booking/check-in qualifies as off-peak based on the class start time in the studio’s timezone and the active rules at the time of booking/check-in. Only count events where a pack credit was consumed. Handle reschedules, late cancellations, and no-shows with consistent rule outcomes. Record immutable event logs with rule version applied for auditability. Ensure idempotent processing, backfill for rule changes where permitted, and safeguards against rapid churn behavior intended to game accruals.

Acceptance Criteria
Reward Accrual & Redemption
"As a student, I want my off-peak progress to convert into rewards automatically so that I clearly receive the value promised."
Description

Track per-student progress toward configured thresholds and automatically issue the specified reward when criteria are met. For bonus credits, post to the student’s credit ledger with clear labeling, applicable classes, and expiration. For extra validity days, extend eligible packs according to policy, prorating and preventing double-application. Update receipts, wallets, and account history; prevent duplicate issuance across concurrent sessions; support admin adjustments and revocations with reasons; and surface machine-readable webhooks for external systems.

Acceptance Criteria
Student Off-Peak UX
"As a student, I want to see which classes are off-peak and my progress toward a bonus so that I can plan and maximize value."
Description

Display an Off-Peak badge on qualifying classes across discovery and booking flows, with a concise explainer and link to full terms. Show real-time progress (e.g., N of M check-ins completed) and expected reward on confirmation screens and receipts. Indicate eligibility before checkout, including any pack-type restrictions. Provide a lightweight account view of earned and pending rewards. Ensure mobile-first design for link-in-bio use, localization, and accessibility compliance.

Acceptance Criteria
Studio Analytics & Controls
"As a studio owner, I want analytics on off-peak performance so that I can adjust windows and rewards to hit utilization targets."
Description

Offer a dashboard reporting off-peak program performance: utilization uplift, incremental revenue, no-show reduction, fill by time window, and conversion impacts. Provide filters by class type, instructor, and location; change logs for rule edits; and CSV export. Include guardrails and recommendations (e.g., suggested windows with low fill) and alerts for misconfigurations such as windows with no inventory or conflicting rules.

Acceptance Criteria
Targeted Notifications & Nudges
"As a student, I want timely, relevant reminders about off-peak opportunities so that I can complete my progress and earn rewards without spam."
Description

Send opt-in, compliant nudges (SMS/email/push) that highlight upcoming off-peak classes and progress toward rewards, with frequency caps, quiet hours, and easy unsubscribe. Personalize content to the student’s schedule, location, and pack type, and prefer classes where the studio has excess capacity. Integrate with existing auto-text infrastructure to avoid duplicate messaging and provide tracking links to measure conversions and suppress already-booked students.

Acceptance Criteria

Credit Match

Personalized class suggestions that fit remaining credits and calendar gaps, delivered via SMS and link‑in‑bio. Shows a predicted runout date and offers one‑tap Y‑PACK booking or a hold on the best next session—making it effortless to finish the pack on time.

Requirements

Smart Swap Window

Dynamically sets the latest time you can release a seat based on start time and demand, then shows a clear countdown in the SMS flow. Students know exactly how long they have, swaps happen early enough to resell, and hosts avoid last‑minute confusion and lost revenue.

Requirements

Cutoff Computation Service
"As a host, I want the system to automatically set the latest swap time based on demand so that seats are released early enough to resell and maximize revenue."
Description

Implements a server-side service that calculates the latest permissible swap release time per booking using class start time, waitlist depth, historical fill rates, time-of-day/day-of-week patterns, and host policy constraints. The service writes the computed cutoff timestamp and rationale to the booking record, exposes a read API for clients, and emits events when the cutoff changes. It recomputes on demand shifts (e.g., waitlist join/leave, cancellations, capacity changes) with hysteresis to prevent flapping, and enforces global guardrails (absolute minimum/maximum windows). It integrates with Classlane’s Booking, Payments, and Hold‑to‑Confirm waitlist pipelines to ensure a sufficient resale buffer and to trigger backfill workflows on valid releases. Fallback defaults apply when data is sparse or unavailable, and all computations are time zone and DST aware.

Acceptance Criteria
Countdown Messaging & UI
"As a student, I want a clear countdown showing exactly how long I have to swap my seat so that I can act confidently and avoid penalties."
Description

Surfaces a clear, synchronized countdown for the Smart Swap Window across SMS and the mobile web flow. SMS copy includes the time remaining at send, and the deep link opens a responsive page with a live server-synced timer, descriptive status text, and primary actions (Release, Keep Seat) that update state in real time. The UI handles expired windows with an explanation and alternative actions, localizes time formats, supports accessibility (screen readers, contrast, haptics), and mitigates client clock drift via server time beacons. Content and templates integrate with Classlane’s Notification Service and respect host branding.

Acceptance Criteria
Enforcement & Concurrency Controls
"As a host, I want swap attempts to be validated and coordinated with the waitlist so that last‑minute releases don’t create confusion and lost revenue."
Description

Adds authoritative server-side validation that gates swap actions based on the computed cutoff and a minimum resale buffer, returning friendly, actionable errors when attempts occur after expiry. Introduces transactional locks and idempotent endpoints to prevent double releases and race conditions when multiple users act simultaneously. Coordinates with the Hold‑to‑Confirm waitlist to ensure releases trigger backfill messaging only when within the valid window, and cancels or requeues workflows if the window lapses mid-flow. Generates audit logs with reason codes for allowed/blocked actions and integrates with Payments to apply policies for credits or fees when applicable.

Acceptance Criteria
Policy Configuration & Overrides
"As a host, I want to configure swap window rules and exceptions per class so that the policy matches my business needs."
Description

Provides a policy layer and dashboard controls for defining Smart Swap rules at global, studio, and class levels, including minimum/maximum cutoff windows, default behaviors, private/exception classes, blackouts, and preview (dry-run) mode. Hosts can enable/disable the feature per class, review computed cutoffs before go-live, and apply bulk updates via API. Role-based permissions restrict who can change policies, and guardrails prevent unsafe values. Communication templates (SMS/email copy) are configurable to reflect each host’s policy while maintaining clarity for students.

Acceptance Criteria
Observability, Alerts & Analytics
"As an operator, I want analytics and alerts on swap performance so that I can tune rules and demonstrate impact."
Description

Instruments end-to-end metrics and events for Smart Swap, including swap attempts, allow/deny rates, time-to-release distributions, resale success, revenue saved/uplift, and no-show deltas. Provides dashboards and exports for hosts and internal ops, with cohorting by class type, time, and demand level. Adds alerts for abnormal patterns (e.g., high block rates, SMS latency spikes) and integrates with an experimentation framework to A/B test rule variants and measure impact. Ensures data governance, retention, and PII minimization consistent with Classlane standards.

Acceptance Criteria
Time & Delivery Robustness
"As a student, I want the swap window timing to be fair despite time zones or message delays so that I’m not blocked by clock issues outside my control."
Description

Ensures accurate, fair timing despite time zone differences, DST changes, and message delivery variability by using server-authoritative time, NTP synchronization, and a small configurable grace period to account for network latency. Detects delayed SMS delivery and adjusts the displayed countdown accordingly while preserving server-side enforcement. Implements retries and fallbacks when SMS providers degrade, with optional in-app or email notifications. Includes test harnesses for simulated clocks and delivery delays, and comprehensive monitoring of time sync health.

Acceptance Criteria

Split Release

Release just part of a multi-seat booking with a quick text (e.g., DROP 1). Keep the remaining seats intact while the system auto-charges the next waitlister for the freed spot and returns a proportional credit or refund. Perfect for families and friends when plans change for only one person.

Requirements

Multi-Seat Booking Model Update
"As a platform engineer, I want bookings to model seats individually so that partial releases and financial adjustments can be applied per seat without affecting the rest of the reservation."
Description

Extend the booking schema to represent individual seats within a group reservation, including seat count, per-seat pricing allocations, applied discounts/taxes/fees breakdowns, and seat-level status (reserved, released, reassigned). Introduce immutable identifiers for each seat, a linkage to the booking owner, and references to payment intents per seat allocation to enable partial release and reassignment. Ensure database migrations preserve existing bookings and backfill derived allocations for legacy data. Provide transactional APIs to update seat states atomically and expose read models for mobile and admin views. This foundation enables precise partial cancellations without impacting remaining seats and supports accurate financial reconciliation.

Acceptance Criteria
Partial Seat Release Core Logic
"As a booking owner, I want to release only some seats from my reservation so that I can adjust plans for one person without canceling the entire booking."
Description

Implement the core workflow to release one or more seats from an existing booking while keeping the remaining seats intact. On receipt of a valid release request, validate policy constraints, mark targeted seats as released, compute the refundable amount, initiate refund/credit flows, and trigger waitlist backfill. Enforce idempotency keys and optimistic concurrency to prevent double-processing, and wrap the operation in a single transaction to avoid overselling. Support releasing by count (e.g., 1 seat) and by seat identifiers, and return a clear result payload with remaining seat count, financial outcomes, and next actions.

Acceptance Criteria
SMS Command Parsing (DROP N)
"As a customer on the go, I want to text a simple command like "DROP 1" so that I can quickly free a seat without opening an app."
Description

Add an SMS interface that recognizes concise release commands (e.g., "DROP 1", "DROP 2", "RELEASE 1") sent from the booking owner’s verified number. Implement a robust parser with normalization, validation against the active booking context, multi-language keywords, and friendly error/help responses. Include confirmation prompts when required by policy and rate limiting to prevent abuse. Map valid commands to the partial release core API with idempotent request keys derived from message metadata. Log all interactions for auditability and support.

Acceptance Criteria
Proportional Refund/Credit Engine
"As a payer, I want a fair, transparent refund or credit for the specific seat I released so that I’m only charged for what I still use."
Description

Create a calculation service that derives the per-seat refundable amount from the original transaction, proportionally allocating base price, taxes, fees, discounts, gift cards, and credits. Support merchant-configurable rules for refund method (card refund vs. account credit), non-refundable fee handling, time-based penalties, and rounding strategy. Ensure outputs are ledgered, auditable, and reconcilable with the payments provider. Expose as a reusable service used by the release workflow and accessible for reporting and dispute evidence.

Acceptance Criteria
Waitlist Auto-Fill and Auto-Charge
"As a waitlisted customer, I want to be automatically charged and confirmed when a seat opens so that I can join the class without manual coordination."
Description

Integrate released seats with the existing Hold-to-Confirm waitlist flow. When a seat is freed, automatically notify the next eligible waitlister, pre-authorize and charge their saved payment method, and confirm the seat within the two-minute window. Handle failure cascades by skipping declined/expired methods and advancing the queue, with clear notifications and audit logs. Ensure atomic linkage between released seat, new assignment, and payment capture to prevent ghost seats. Provide instructor and admin visibility into the handoff and final status.

Acceptance Criteria
Policy Guardrails and Permissions
"As a studio owner, I want configurable rules for partial releases so that customer flexibility doesn’t violate my cancellation policies or hurt class utilization."
Description

Enforce configurable rules controlling who can partially release seats and when (e.g., cutoff times before class, minimum remaining seats, per-class overrides, and penalty rules). Verify the requester’s identity and ownership of the booking, and support instructor/studio-admin overrides via dashboard with reason codes. Provide clear error messaging via SMS and UI when a release is blocked by policy. All decisions must be logged with policy snapshots for audit and dispute resolution.

Acceptance Criteria
Notifications, Receipts, and Roster Sync
"As an instructor and attendee, I want timely confirmations and accurate rosters/receipts so that everyone knows who’s attending and what was charged or refunded."
Description

Deliver end-to-end communications and state updates after a split release: SMS to booking owner confirming the dropped seat and adjusted balance; SMS to waitlister upon successful capture; updated receipts with line-item adjustments; instructor roster updates reflecting attendee changes; and webhooks to downstream systems. Ensure messages are templated, localized, and idempotent, and that financial documents align with the refund engine outputs. Provide an audit trail linking communications, payments, and seat state changes.

Acceptance Criteria

Auto Rebook

Move to another session in one step while releasing your current seat. Classlane holds your preferred time, applies your credit instantly, and charges or refunds any difference—respecting each class’s policies—so you switch plans without juggling links or risking a double-book.

Requirements

Atomic One-Step Rebook
"As a student, I want to move to another session in one step so that I can switch plans without losing my current seat or paying twice."
Description

Implements a transactional, single-action rebooking flow that simultaneously holds the target session, validates eligibility, applies existing booking credit, and processes any charge or refund before releasing the original seat. Guarantees atomicity and rollback on failure to prevent double-booking or orphaned seats, with idempotency to safely handle retries and multi-taps. Integrates with Classlane’s booking, waitlist, and payments services and records a complete audit trail for compliance and support.

Acceptance Criteria
Seat Hold & Concurrency Control
"As a student, I want Classlane to hold my preferred session while I rebook so that I don’t get scooped by someone else mid-switch."
Description

Reserves the target session seat for a short, configurable window during rebooking, extending on user activity and releasing on cancel or timeout. Prevents race conditions and double allocation under high demand with optimistic locks and conflict resolution. Works across devices, respects class capacity limits, and emits events for real-time UI updates and waitlist backfill.

Acceptance Criteria
Policy Enforcement & Fee Rules
"As an instructor, I want my class policies enforced automatically during rebooks so that revenue and fairness are preserved."
Description

Evaluates class-specific transfer rules before allowing Auto Rebook, including rebook windows, cutoff times, transferability, per-move fees, and limits on number of rebooks. Applies instructor-defined fees and exceptions, surfaces clear policy messaging in the UI, and blocks ineligible moves with actionable alternatives. Logs decisions for dispute resolution and aligns behavior with each class’s published terms.

Acceptance Criteria
Credit, Pricing & Settlement Engine
"As a student, I want any price difference handled automatically so that switching sessions is seamless and accurate."
Description

Calculates price differences between original and target sessions, applies existing booking credit or pass value, and adjusts taxes and fees accordingly. Captures additional payments securely, issues instant partial refunds to the original method or wallet credit when allowed, and posts balanced ledger entries. Supports coupons, multi-currency rounding rules, and payment gateway constraints while maintaining a clear audit trail.

Acceptance Criteria
Notifications & Receipts
"As a studio owner, I want clear notifications and receipts for rebooks so that everyone knows what changed and why."
Description

Sends real-time confirmations via SMS, email, and push to students and instructors detailing the rebooked session, released seat, applied credits, fees, and any charge/refund. Updates calendar attachments, syncs with the instructor’s roster, and triggers waitlist notifications to backfill the freed seat. Stores message logs and delivery status for support and compliance.

Acceptance Criteria
Admin Controls & Analytics
"As an instructor, I want controls and insights for Auto Rebook so that I can tune policies and measure outcomes."
Description

Provides dashboard settings to enable/disable Auto Rebook per class, configure rebook windows and fees, and choose refund destinations (original method or wallet where allowed). Exposes analytics on rebook usage, revenue lift, reduced no-shows, and backfill rates, with exportable audit logs for accounting and policy reviews.

Acceptance Criteria

Resell Bonus

Opt into a small incentive when you release early and your seat successfully resells (e.g., fee waived or bonus credit). Hosts configure the reward; students get a nudge to swap sooner, boosting refill rates and keeping classes full.

Requirements

Host-Configurable Resell Incentives
"As a host, I want to configure the resell incentive rules for my classes so that I can encourage early releases without hurting my margins."
Description

Hosts can enable Resell Bonus at account and class levels; choose incentive type (fee waiver, fixed credit, percentage credit), set eligibility window (e.g., release X+ hours before start), per-user caps, minimum ticket price thresholds, budget limits, and default behaviors. Inherits from account defaults with per-class overrides and exception dates for recurring schedules. Integrates with pricing, taxes, and cancellation policies to compute projected net effects before enabling; persists configurations versioned for audit and rollback.

Acceptance Criteria
Resell Eligibility and Outcome Engine
"As a product manager, I want consistent eligibility and success criteria so that rewards are only granted when a release truly leads to a refilled seat."
Description

A rules service determines when a released seat is eligible for incentive and when a resell is considered successful. Considers release timestamp, waitlist state, class capacity, cutoff times, payment settlement state, and whether the seat was purchased by a different customer. Handles edge cases: multi-seat orders, bundles/passes, partial refunds, discounts, host cancellations, and time zone differences. Emits deterministic state transitions (Pending, Earned, Forfeited, Reversed) with idempotent processing and auditable events.

Acceptance Criteria
Student Release Flow and Nudge UX
"As a student, I want an easy way to release my seat with a clear bonus offer so that I feel motivated to free it up early."
Description

Adds a clear “Release Seat for Bonus” path in mobile/web with contextual prompts showing potential reward and eligibility conditions. Integrates with Hold-to-Confirm waitlist to immediately trigger resale attempts upon release. Provides confirmation screens, countdowns, and a status tracker (Pending resell → Earned) in My Bookings. Optimized for link-in-bio single-page flow, accessibility, and localization; supports error recovery and retry for network interruptions.

Acceptance Criteria
Automatic Reward Settlement and Ledgering
"As a finance admin, I want rewards to settle automatically and reconcile cleanly so that accounting remains accurate without manual work."
Description

On successful resell, automatically apply the configured reward: waive cancellation fee, issue bonus credit, or both. Credits post to the student wallet with configurable expiry, visible balance, and transaction history; refunds and fee waivers reconcile to payments, taxes, and accounting exports. Supports reversals if the class is canceled or resell invalidated, and provides admin tools for manual adjustments with full audit logs and reason codes.

Acceptance Criteria
Adaptive Notifications and Messaging
"As a student, I want clear messages about when and how I’ll get a bonus for releasing my seat so that I can decide quickly."
Description

Timely, personalized notifications via SMS, email, and push encourage early releases when waitlists exist or fill rates are low. Templates display concrete reward amounts and deadlines and update students when status changes (Pending, Earned, Forfeited). Supports quiet hours, opt-in preferences, and per-host branding. Deep links directly to the release flow and aligns with existing auto-text and waitlist communications to avoid message conflicts.

Acceptance Criteria
Fraud and Abuse Prevention Controls
"As a risk analyst, I want safeguards against incentive abuse so that rewards drive genuine refills without increasing fraud."
Description

Prevents gaming by blocking self-resell (releasing and repurchasing the same seat), enforcing cooldowns, minimum lead times, per-user reward caps, and device/account linkage checks. Detects suspicious patterns such as circular resells and high-frequency releases, and routes flagged cases to an admin review queue. Provides configurable thresholds per host and global hard limits with real-time checks in the release flow and post-event audits.

Acceptance Criteria
Performance Metrics and Experimentation
"As a host, I want reports and experiments to fine-tune the incentive so that I maximize class fill while controlling costs."
Description

Dashboards and exports show refill rate, time-to-release distribution, revenue lift, and no-show reduction attributable to Resell Bonus. Built-in A/B toggles per class or cohort with guardrail metrics, power checks, and sample-size guidance. Reports at host, class, and time-period levels help optimize incentive values and windows. Events are instrumented for funnel tracking from prompt exposure to release action and resell success.

Acceptance Criteria

Policy Preview

Before you confirm a swap, see exactly what you’ll get back—credit vs. partial refund, any fees, and when funds land. Transparent, instant math in an SMS link prevents surprises, reduces disputes, and builds trust in stricter cutoff windows.

Requirements

Real-time Policy Computation Service
"As a student considering a swap, I want an instant and accurate calculation of what I’ll receive so that I can decide confidently without surprises."
Description

A backend service that calculates, in real time, the exact outcome of a swap or cancellation based on instructor policy, class price, time-to-start, payment method, taxes, credits, promotions, and fees. It returns a normalized payload specifying refund vs. credit, fee breakdowns, and the expected funds availability date based on payment processor settlement rules. Integrates with existing booking, waitlist hold-to-confirm, and payments services via an internal API, ensuring consistent logic across SMS previews and in-app views. Exposes deterministic calculations with versioned rules for reproducibility and supports multi-currency and timezone-aware outputs.

Acceptance Criteria
SMS Preview Link & Secure Tokenization
"As a student on the go, I want a secure SMS link that shows my exact swap outcome instantly so that I don’t need to log in or navigate menus."
Description

Generate short-lived, signed URLs embedded in outgoing SMS that open a mobile web preview of the policy outcome without requiring login. Tokens are single-use or time-bound (e.g., 10 minutes), scoped to the specific booking and action, and resistant to tampering via HMAC signatures. The link deep-links to the correct preview state and supports fallback to app if installed. Includes rate limiting, expiration messaging, and automatic reissue on request. Integrates with existing SMS delivery provider and analytics for click-through tracking.

Acceptance Criteria
Itemized Outcome & Timeline UI
"As a student reviewing my swap, I want a clear itemized breakdown and when I’ll get funds so that I fully understand the outcome before confirming."
Description

A mobile-first, accessible UI that displays an itemized breakdown: original amount, policy-based deductions, platform/instructor fees, tax handling, net to student, payout method (credit vs. refund), and a clear "funds available" date/time in the user’s local timezone. Uses plain-language labels and contextual tooltips, supports multiple currencies and locales, and shows side-by-side comparison of options when applicable (e.g., refund vs. credit). Includes error states, loading skeletons, and a compact summary suitable for SMS webview.

Acceptance Criteria
Preview Gate Before Confirmation
"As a platform, I want users to acknowledge the policy preview before confirming so that expectations are clear and disputes are minimized."
Description

Require that users view the Policy Preview before completing a swap confirmation within the hold-to-confirm window. The confirmation button remains disabled until the preview is displayed (and acknowledged where required), ensuring informed consent and reducing disputes. Integrates with the waitlist two-minute hold flow, handles countdown synchronization, and preserves state if the user navigates away and returns within the hold window.

Acceptance Criteria
Comprehensive Edge-Case Handling
"As an instructor, I want the preview to reflect all my policy rules and special cases so that outcomes are consistent and enforceable."
Description

Extend policy logic to cover complex scenarios: class packs and memberships, gift cards, promo codes, split tenders, partial attendance packs, cross-currency bookings, taxes-inclusive vs. exclusive pricing, non-refundable tiers, and past-cutoff exceptions. Define precedence rules (e.g., credit before refund), fallbacks when original payment method cannot be refunded, and wallet credit auto-issuance with expiration where applicable. Include unit tests and fixtures for each scenario and explicit messaging for limitations.

Acceptance Criteria
Audit Trail & Dispute Replay
"As a support agent, I want to see exactly what the user saw and how it was calculated so that I can resolve disputes quickly and fairly."
Description

Persist a signed snapshot of all inputs and the computed preview shown to the user (including timestamps, policy version, exchange rates, and fees). Provide an internal admin tool to replay and verify the calculation for support and chargeback responses. Store minimal PII, adhere to data retention policies, and expose event logs to success and risk teams. Enables trustworthy resolution of complaints and data-backed insights into dispute drivers.

Acceptance Criteria
Performance, Resilience, and Localization
"As a student in any region, I want the preview to load fast and read naturally in my locale so that I can trust and act on it immediately."
Description

Guarantee sub-300ms median computation time and sub-1s preview load on 4G, with graceful degradation if dependencies are unavailable (cached policy rules, fallback messaging). Implement retries with backoff for payment provider lookups, circuit breakers, and observability (metrics, traces, alerts). Localize currency, date/time, and copy; meet WCAG 2.1 AA for contrast, focus, and screen reader semantics. Provide automated tests and synthetic monitoring across top locales and timezones.

Acceptance Criteria

Direct Transfer

Hand your seat to a friend via text instead of releasing to the waitlist. Send their number, they confirm in one tap, and reminders move over automatically. Keeps the spot filled with zero friction while preserving host policies and attendance accuracy.

Requirements

SMS Transfer Initiation
"As a booked attendee, I want to text my friend a secure link to take my seat so that I can keep the spot filled without releasing it to the waitlist."
Description

Enable booked attendees to initiate a Direct Transfer from the booking details screen by entering a friend’s mobile number. Validate the number (E.164), show a policy summary and cutoff time, then generate a secure, single-use claim link and send it via SMS using the existing messaging infrastructure. Place a temporary hold on the seat (host-configurable, defaults to 2 minutes) to prevent waitlist release during the transfer attempt. Display a countdown and allow the sender to cancel the transfer before it’s claimed. Ensure the transfer cannot be initiated if the class or host settings disallow transfers (e.g., within a cutoff window, non-transferable bookings, or policy constraints). All actions should be idempotent and logged.

Acceptance Criteria
One-Tap Claim & Identity Verification
"As a recipient, I want to claim a transferred seat in one tap with simple verification so that I can confirm quickly and confidently."
Description

Provide recipients with a mobile-first claim page that displays class details, host policies, and the remaining hold time. Allow one-tap acceptance gated by lightweight identity verification: confirm the recipient’s phone via OTP (tied to the number the link was sent to) and support frictionless account creation or guest flow. Prevent misuse by binding links to the intended recipient, enforcing single use, expiring links on timeout, and blocking claims when cutoffs or capacity changes occur. Present clear success/failure states and surface any required waivers or consents before finalizing the claim.

Acceptance Criteria
Policy & Payment Preservation
"As a host, I want my policies and payment rules enforced during transfers so that revenue and attendance remain accurate and fair."
Description

Ensure transfers preserve host-defined policies and financial integrity. Keep the original price and payment settled with the host; do not auto-refund or rebill unless a host-configurable transfer fee applies. Respect non-transferable items and cutoff windows, and surface a concise policy summary to both parties at initiation and claim. Migrate any eligible add-ons, credits, or passes; block transfer if the underlying pass or age/consent requirements are incompatible. Record ledger adjustments for any fees, and update compliance artifacts (e.g., waiver acknowledgments) to the new attendee as needed.

Acceptance Criteria
Reminder & Roster Migration
"As an instructor, I want reminders and the roster to update automatically after a transfer so that I know exactly who is attending."
Description

Upon successful claim, automatically reassign the booking to the recipient: move SMS/email reminders, calendar invites, and check-in credentials; revoke the sender’s reminders and access. Update the live roster, teacher app, capacity counters, and attendance exports to reflect the new attendee. Trigger confirmation and update notifications to sender, recipient, and host. Maintain a consistent audit trail linking the original booking ID to the new attendee for support and analytics.

Acceptance Criteria
Host Controls & Audit Trail
"As a studio owner, I want configurable controls and detailed logs for transfers so that I can manage edge cases and maintain accountability."
Description

Add host-facing controls to enable/disable Direct Transfer per class or globally, set transfer windows, define optional transfer fees, and limit the number of transfers per booking. Provide an audit log including initiator, recipient number (masked), timestamps, outcomes, and any fees applied, with export capability. Include a manual override to approve, cancel, or revert a transfer and to reissue a claim link if needed. Enforce role-based access and data minimization to protect attendee privacy.

Acceptance Criteria
Timeouts, Fallbacks & Error Handling
"As a booked attendee, I want clear outcomes if a transfer fails or expires so that I can quickly try again or release my seat to the waitlist."
Description

Define robust flows for expirations and failures. When a claim link expires or is declined, notify the sender with options to retry another number, cancel, or release the seat back to the waitlist. Localize all SMS and on-screen messages and provide clear reasons for failures (e.g., cutoff passed, class started, capacity changed). Implement idempotent operations, rate limiting, and link invalidation to prevent abuse. Handle edge cases such as multi-seat bookings, minors/guardian requirements, and class cancellations with predictable, recoverable states.

Acceptance Criteria

Swap Undo

Made a mistake? A short grace period lets you cancel a release if the seat hasn’t been reallocated yet. Minimizes support tickets, protects students from fat‑finger errors, and keeps the swap flow forgiving without risking empty seats.

Requirements

Grace Period Timer & Eligibility Logic
"As a student, I want a brief window to undo releasing my seat so that I can fix accidental taps without losing my spot."
Description

A configurable short grace period (default 120 seconds) starts immediately after a student releases a seat via the Swap flow. During this window, the student can undo the release only if the seat has not been reallocated: no waitlist hold accepted, no replacement booking confirmed, and no instructor override applied. The system persists the timer across sessions and devices and exposes an eligibility state used by the UI and APIs. On expiry or reallocation, undo is irrevocably disabled and the state transitions to Finalized.

Acceptance Criteria
One-Tap Undo UI with Countdown
"As a student, I want a clear, one-tap Undo option with a countdown so that I can quickly recover my seat before it’s gone."
Description

An unobtrusive, accessible Undo control appears immediately after a release on the confirmation screen and as a dismissible toast/snackbar across the app with a visible countdown. Deep links in push/SMS messages let users undo from outside the app. The control reflects real-time eligibility and provides clear success or ineligible messages. The interaction completes in one tap, avoids modal friction, and fails safely with a helpful message if the seat was already reallocated.

Acceptance Criteria
Atomic Reallocation Guard
"As a platform engineer, I want undo and reallocation to be atomic so that we never double-assign or lose a seat due to races."
Description

A transactional state machine coordinates undo and reallocation to prevent race conditions. Idempotency keys, optimistic locking, and queue-based serialization ensure that only one terminal action (undo or reallocation) can succeed. The guard spans inventory, waitlist, and payments services, guaranteeing consistency even under high concurrency. Deterministic winner rules resolve simultaneous actions and return authoritative outcomes to clients.

Acceptance Criteria
Payment Reversal & Ledger Consistency
"As a finance ops user, I want payments to reconcile automatically when an undo occurs so that ledgers and provider records stay accurate."
Description

Undo reinstates the original booking and reverses any financial side effects triggered by the release. Pending refunds are voided before capture; captured refunds trigger compensating charges or credits per policy. Swap fees, coupons, taxes, and gift cards are correctly reapplied. All adjustments are posted to the ledger with auditable entries, and providers (e.g., Stripe) are called atomically with booking state changes to keep records in sync.

Acceptance Criteria
Waitlist Messaging Retract
"As a waitlisted student, I want to be notified promptly if a previously offered seat is withdrawn so that I am not confused or inconvenienced."
Description

If an auto-text was sent to the waitlist and no hold has been accepted, undo cancels the active hold and sends an immediate retract message indicating the seat is no longer available. Messaging is rate-limited, respects user notification preferences, and avoids duplicate sends. Instructor and internal notifications are updated to reflect the restored seat, and all message outcomes are logged for support traceability.

Acceptance Criteria
Audit Trail & Metrics
"As a support agent, I want a complete audit of undo events so that I can resolve disputes quickly with evidence."
Description

Every undo attempt and outcome is recorded with user, booking, timestamps, eligibility reason, and concurrency context. Events feed analytics to quantify error prevention, support tickets avoided, and revenue protected. Admin tools expose searchable logs and aggregate dashboards (undo rate, time-to-undo distribution, failure causes) to guide policy tuning and QA.

Acceptance Criteria
Configurable Policies & Safeguards
"As a studio owner, I want to configure the undo window and cutoffs so that the policy fits my classes without risking empty seats."
Description

Admin and studio-level settings control whether Swap Undo is enabled, the grace period length, and cutoff rules relative to class start time. Feature flags support staged rollout and A/B testing. Rate limits and abuse protections prevent rapid toggling. All settings are permissioned, versioned, and reversible, with safe defaults that preserve seat utilization.

Acceptance Criteria

QR Handshake

Sign into Classlane on any desktop by scanning a QR with your phone and confirming via Face ID/Touch ID. No passwords, codes, or email links—just a quick biometric approval that’s perfect for pop-ups and borrowed computers. Faster setup at the door with fewer support pings and zero credential sharing.

Requirements

Desktop QR Login Prompt
"As an instructor arriving at a borrowed studio computer, I want a scannable QR login on the desktop so that I can sign in quickly without typing credentials."
Description

Display a rotating, single-use QR code on the desktop login page that is cryptographically bound to the browser session and Classlane origin. The page opens a secure real-time channel (WebSocket/SSE) to receive authorization once the QR is approved on the phone. The QR automatically regenerates every 30 seconds, invalidates after a successful scan, and clearly instructs users to “Scan with the Classlane app.” Show a waiting state and, upon scan initiation, display the requesting browser and approximate location for user reassurance. This reduces friction on borrowed computers and eliminates password entry, integrating seamlessly with existing web auth endpoints.

Acceptance Criteria
Mobile Biometric Approval
"As a security-conscious user, I want to approve desktop sign-in with Face ID/Touch ID on my phone so that only I can authorize access."
Description

When a QR is scanned, the Classlane mobile app presents an approval sheet showing the requesting domain (classlane.com), browser, and approximate location, then prompts for Face ID/Touch ID (with device passcode fallback) to authorize. Provide clear Approve/Decline actions, a short timeout, haptic confirmation, and explicit messaging that biometrics never leave the device. On approval, the app completes the authorization backchannel and returns success to the desktop session. This ensures fast, user-friendly, and secure confirmation aligned with mobile platform best practices.

Acceptance Criteria
Cryptographic Handshake & Token Exchange
"As a user, I want the phone and desktop to complete a secure handshake automatically so that I don’t have to type codes or passwords."
Description

Implement a secure, code-free authorization flow: the desktop renders a session-bound QR containing a nonce and challenge; the mobile app establishes a secure backchannel, signs the challenge (ephemeral key or device-bound credential), and the server verifies before issuing a short-lived desktop session token. Bind the token to the requesting browser session via the open real-time channel; enforce TLS, single-use, origin validation, and strict token TTL (e.g., 2 minutes). Log signed assertions and outcomes for audit without storing biometric data. This provides passwordless, phishing-resistant login with minimal user effort.

Acceptance Criteria
Session Management & Remote Revocation
"As an instructor, I want to see and revoke active desktop sessions from my phone so that I can immediately sign out of borrowed computers."
Description

Expose an “Active Sessions” view in both mobile and web showing device type, browser, location, and last active for each desktop login initiated via QR Handshake. Allow users to remotely revoke any session instantly from their phone and provide a “Sign out everywhere” control. Set sensible defaults for session duration (e.g., 12–24 hours) with automatic expiration and optional inactivity timeouts tailored for pop-ups and borrowed computers. Notify the desktop immediately on revocation and require re-authentication via QR for re-entry. This increases safety and reduces lingering access on shared devices.

Acceptance Criteria
Cross-Platform Deep Link Handling
"As a user on iOS or Android, I want the QR scan to reliably open the Classlane app or mobile web so that the flow works regardless of my device setup."
Description

Ensure the QR payload is a Universal Link/App Link that routes directly into the Classlane app on iOS and Android; if the app is not installed, open a mobile web flow that continues the scan-and-approve experience after the user signs in on the phone. Handle camera permissions, background-to-foreground transitions, and interrupted scans gracefully. Verify compatibility with major desktop browsers (Chrome, Safari, Edge, Firefox) and modern mobile devices. Provide clear guidance to install the app when beneficial, without introducing passwords, codes, or email links. This guarantees a reliable flow across device ecosystems.

Acceptance Criteria
Security Hardening & Anti-Replay
"As a user, I want protections against phishing and replay so that I can trust QR Handshake even on busy pop-up events."
Description

Protect against phishing, replay, and abuse: bind QR data to the Classlane origin and browser session; rotate and expire codes rapidly; enforce rate limits per IP and per account; validate that the approving account on mobile matches the desktop intent; display the requesting domain and location to the user before approval; and reject approvals if the desktop session has changed state. Block cross-origin embedding of the login page, enforce CSP and Referrer-Policy, and add anomaly detection (e.g., excessive denied attempts, rapid scans). Maintain privacy-preserving audit logs for incident response. This safeguards the flow in busy pop-up environments.

Acceptance Criteria
Admin Controls & Telemetry
"As a studio owner, I want controls and visibility into QR Handshake usage so that I can enforce policy and measure impact."
Description

Provide workspace-level toggles to enable/disable QR Handshake, set session duration policies, and optionally require biometric approval for all desktop logins. Surface telemetry on adoption, success/failure rates, median time-to-login, and top failure reasons to reduce support load. Send configurable alerts on suspicious activity (e.g., unusual location/device patterns) and expose downloadable audit trails with 30-day retention. Ensure compliance by avoiding storage of biometric data and limiting personal data in logs. This gives owners visibility, control, and measurable impact on setup speed and support volume.

Acceptance Criteria

Role Rings

Prebuilt, customizable permission tiers (Owner, Coordinator, Instructor, Door Host, Finance) map access exactly to each job. Assign passkeys to roles instead of people, and the UI automatically shows the right dashboards and actions. Prevents over-permissioning, reduces mistakes, and makes co-host onboarding one tap.

Requirements

Role Templates Library
"As an owner, I want prebuilt, customizable role templates so that I can set up the right access in minutes without giving away sensitive controls."
Description

Provide prebuilt permission tiers (Owner, Coordinator, Instructor, Door Host, Finance) with granular privileges mapped to Classlane actions (schedule, bookings, check-in, waitlist, messaging, payouts, refunds, pricing, settings). Allow studios to clone, customize, and save templates; toggle individual capabilities; and preview impact before publishing. Support versioning and safe rollout (draft, publish, rollback). Enforce permissions across API and UI via a centralized capability matrix and policy checks. Outcome: fast setup, consistent access, fewer errors.

Acceptance Criteria
Role-bound Passkeys
"As a studio owner, I want to assign a passkey to the Door Host role on the front desk iPad so that staff can check in students without sharing my personal login."
Description

Enable creation of WebAuthn passkeys bound to a role-scope rather than a person, so shared devices (front desk iPad, door phone) can authenticate as 'Door Host' or 'Instructor' without personal accounts. Support device registration, optional PIN/biometric, configurable TTL, and revocation. Passkeys carry scoped claims (studio, class/event range) and capability set. Provide backup sign-in via QR/magic link with the same scope, and immediate remote revoke. Enforce offline-capable check-in (cached roster and capabilities) with automatic re-sync. All credential events logged.

Acceptance Criteria
Contextual Dashboards by Role
"As a door host, I want the app to show only today’s check-in tools so that I can work quickly without distractions or risk of changing settings."
Description

Render navigation, dashboards, and actions dynamically from server-supplied capabilities so each role sees only relevant surfaces (e.g., Door Host: Today’s check-in and waitlist; Instructor: rosters, messaging; Finance: payouts, refunds; Coordinator: schedule, capacity controls). Guard all routes with server checks; hide disallowed features and block deep-link access. Provide a generic 'capability flag' component, empty-state guidance, and performance-optimized fetching to avoid UI flicker.

Acceptance Criteria
One-Tap Role Onboarding
"As a coordinator, I want to invite a one-time co-host with a single tap so that they can help at tonight’s class without a long onboarding."
Description

Let owners/coordinators invite helpers via one-tap links or QR codes that preselect a role and scope (studio-wide or event-specific) and an expiry window. On acceptance, the device sets up a role-bound passkey or ephemeral session in under 30 seconds. Include seat limits per role, optional check-in-only kiosk mode, and automatic removal on expiry. Provide a guided checklist for first run (e.g., 'Scan ticket', 'Check-in', 'Message instructor') to reduce training.

Acceptance Criteria
Least-Privilege Guardrails
"As an owner, I want guardrails that prevent over-permissioning so that our finances and settings stay protected even when roles change."
Description

Introduce a policy engine that validates role configs and assignments for least-privilege: detect over-permissioned templates, flag risky combos (e.g., refunds + payout edits), require owner approval for finance-related changes, and enforce scoping for temporary roles. Provide inline warnings, diffs of capability changes, and an impact preview ('X users lose refund access'). Block publishing of noncompliant templates based on org policy.

Acceptance Criteria
Access Audit Trail
"As a finance user, I want a clear audit trail of who did what under which role so that I can reconcile payouts and meet compliance needs."
Description

Record immutable logs of role template changes, assignments, passkey creation/revocation, sign-ins, and sensitive actions (refunds, payout edits, roster exports) together with the active role context. Provide filterable views by user, role, studio, date range; export to CSV; and retention controls. Surface inline 'Why can't I do this?' with a quick link to the relevant role and change history for transparency.

Acceptance Criteria
Scoped Access (Studio/Class/Event)
"As an instructor, I want my access limited to the classes I teach so that I can manage rosters and messages without seeing other instructors’ data."
Description

Support scoping roles to the correct operational layer: organization-wide, studio location, series, single class/event, or date/time window. Allow overrides for one-off events and temporary expansions with automatic rollback. Ensure all queries and mutations accept a scope token to limit data access (e.g., Door Host only sees today’s attendees). Provide UI to visualize and edit scope, with conflicts resolved by most-restrictive wins.

Acceptance Criteria

Shift Keys

Issue time-boxed, auto-expiring access for guest staff or volunteers. Limit scope to specific dates, rooms, or check-in only actions, and let access end automatically after the shift. Keeps lines moving while protecting sensitive payouts and settings—no more risky shared logins.

Requirements

Time-Boxed Access Windows
"As a studio owner, I want guest access to automatically start and end with a shift so that I don’t have to manage logins and can reduce post-shift security risk."
Description

Enable creation of access windows with explicit start and end timestamps tied to the venue’s time zone. Keys auto-activate at the start, auto-expire at the end, and immediately terminate active sessions, enforcing least-time exposure. Support optional early/late grace periods, daylight saving handling, and schedule updates (extend/shorten) with real-time propagation to active sessions. Display countdown timers to both admins and guests. All expiration logic must be enforced server-side with tamper-resistant tokens and fail-closed behavior when timing data is missing or invalid.

Acceptance Criteria
Scoped Permissions Templates
"As a studio owner, I want to limit guest access to check-ins for specific rooms and times so that sensitive settings and payouts remain protected."
Description

Provide least-privilege, role-based permission scopes purpose-built for guest staffing: Check-in Only, Front Desk (read rosters, mark attendance, scan QR passes), and Room-Limited variants. Allow admins to constrain access by date, time window, location, and specific rooms/classes. Explicitly exclude payouts, financial reports, account settings, exports, messaging, and customer data beyond roster essentials. Enforce UI and API-level authorization with deny-by-default, log and block out-of-scope attempts, and surface clear in-UI indicators of current scope.

Acceptance Criteria
Shift Key Issuance & Delivery
"As an instructor, I want to send a temporary access link to a volunteer quickly so that they can run door check-ins without creating a full account."
Description

Allow admins to generate unique, cryptographically signed shift keys as magic links and/or QR codes with embedded scope and time constraints. Support delivery via SMS or email with one-tap access on mobile, optional PIN or 2FA for higher assurance, and single-device binding to reduce sharing. Include human-readable shift details (room, date, time) and a revoke link for admins. Implement rate limiting, short-lived token rotation, and secure storage of minimal metadata only.

Acceptance Criteria
Guest Mode Interface
"As a volunteer, I want a simple interface that only shows check-ins for my assigned rooms so that I can move the line quickly without confusion."
Description

Present a streamlined mobile-first interface when accessed via a shift key that shows only permitted actions: roster search, QR/Barcode scanner, attendance toggles, and limited class/room selector. Surface a visible shift timer and scope badge, provide accessibility and large-tap targets for fast check-ins, and hide all financial/settings navigation. Support error states (expired key, out-of-scope class) with clear guidance, and include an explicit End Shift action that signs out and clears cached data.

Acceptance Criteria
Real-Time Revocation & Audit Trail
"As an owner, I want to revoke access instantly and review a detailed activity log so that I can maintain security and accountability."
Description

Enable immediate revocation of any shift key with single-click from the admin dashboard, invalidating all associated sessions and tokens. Log creation, use, scope changes, revocations, and all guest-mode actions (e.g., check-ins) with timestamps, actor identity, IP/device fingerprints, and outcomes. Provide filterable, exportable audit views and alerting on suspicious or out-of-scope attempts. Respect data retention policies while maintaining non-repudiation and privacy safeguards.

Acceptance Criteria
Offline Check-In Safeguard
"As a front-desk helper, I want check-ins to keep working if Wi‑Fi drops so that the line doesn’t stall during busy classes."
Description

Allow guest mode to function during temporary connectivity loss by caching only the minimal roster and ticket validations for the current time window and rooms. Queue check-in events locally with encryption and sync automatically on reconnection with conflict resolution. Enforce conservative local timeboxing with server revalidation on reconnect, and block access to any sensitive data or navigation while offline. Provide clear offline/online indicators and retry feedback to keep lines moving.

Acceptance Criteria

Device Guard

See all enrolled devices at a glance, revoke with one tap, and get instant alerts on new device sign-ins. Optionally require proximity approval from an already-signed-in device or co-admin approval for high-risk attempts. Prevents lockouts and hijacks without going back to passwords or SMS codes.

Requirements

Device Inventory Dashboard
"As an admin, I want to see all devices currently signed in to our account so that I can monitor access and quickly manage or revoke devices."
Description

A centralized, real-time view of all devices currently signed in to a Classlane account or organization. Displays device name, platform/OS, last active time, approximate location (privacy-preserving), trust status, and risk flags. Supports search, sorting, and filters, plus per-device actions including rename, mark as trusted, and revoke. Integrates with the Security settings in mobile apps and web, syncing via push/WebSocket to reflect changes within seconds. For studios with multiple admins, shows devices across admins according to role-based access controls and scopes. Stores minimal device metadata with configurable retention and full audit logging for compliance.

Acceptance Criteria
One-Tap Device Revocation
"As an instructor, I want to revoke a device with one tap so that I can instantly stop unauthorized access."
Description

Immediate remote logout of a selected device, invalidating refresh and access tokens, severing push channels, and forcing re-approval before the device can access again. Includes a confirm step to prevent accidental revocations, bulk actions like “Revoke all other devices,” and handling for offline devices that applies on next check-in. Propagates across services within seconds and records an auditable event. Integrates with the Device Inventory Dashboard and alert flows, ensuring idempotency and safe retries.

Acceptance Criteria
New Device Sign-In Alerts
"As a studio owner, I want instant alerts for new device sign-ins so that I can verify legitimacy and respond quickly to suspicious activity."
Description

Real-time notifications when a new device signs in, delivered via in-app push (primary), with optional email fallback. Alerts include device details, approximate location, time, and a risk summary, with inline actions: Approve and trust, or Not me—revoke and block. Links back to the Device Inventory Dashboard for deeper review. Includes throttling, localization, and notification preferences to avoid alert fatigue. Integrates with risk scoring to elevate or suppress alerts appropriately and writes full audit entries for each decision.

Acceptance Criteria
Proximity Approval Flow
"As an instructor, I want to approve new device sign-ins from a device I already control nearby so that I can securely add devices without using passwords or codes."
Description

A secure, passwordless flow that requires approval of a new device from an already-signed-in device in physical proximity. Implements approval via in-app prompt on trusted devices with short-range confirmation (e.g., BLE/Nearby handshake) or QR-code scan as a fallback, with strict time windows and one-time tokens. No SMS or passwords are used. If proximity cannot be established, the flow escalates per policy (e.g., co-admin approval). All approvals are signed, time-bound, and logged. Designed for mobile-first usage while also supporting web sign-ins by pairing with a mobile device.

Acceptance Criteria
Co-Admin High-Risk Approval
"As a co-admin, I want high-risk sign-ins to require my approval so that we reduce the chance of account hijacks."
Description

Policy-driven requirement that high-risk sign-in attempts (new country, impossible travel, suspected emulator, TOR/VPN, or unfamiliar device fingerprint) obtain approval from a co-admin. Sends actionable push prompts to eligible co-admins with context (who, what, where, when, risk score) and one-tap Approve/Deny. Supports quorum (e.g., any 1 of N) and expiry windows. Includes escalation to the account owner if no co-admin responds and full audit trails. Configurable per organization with role-based visibility and override safeguards to prevent accidental lockouts.

Acceptance Criteria
Risk Policy Engine
"As an admin, I want to set policies based on risk so that security adapts to our needs without hurting usability."
Description

A configurable engine that calculates sign-in risk using signals such as geovelocity (impossible travel), IP reputation, VPN/TOR detection, device fingerprint changes, rooted/jailbroken indicators, and historical behavioral patterns. Produces a risk score and recommended action (allow, alert, proximity approval, co-admin approval, or block). Provides per-organization policies to tune thresholds and required actions, with safe defaults. Exposes metrics and logs for monitoring, ensures data minimization, and complies with privacy constraints. Integrates with alerts, approvals, and dashboard surfaces.

Acceptance Criteria
Account Recovery & Lockout Prevention
"As an instructor, I want secure recovery options if I lose all devices so that I am not locked out of my account."
Description

Redundant, passwordless recovery paths to prevent permanent lockouts while maintaining strong security. Options include co-admin recovery approval, pre-generated single-use recovery codes, and time-delayed owner recovery with broad notifications to other admins. Enforces at least one trusted device or recovery option on setup, guides users through safe device replacement, and blocks actions that would remove the last recovery path. Provides clear UX for lost/stolen device scenarios, with thorough audit logging and rate limiting on recovery attempts.

Acceptance Criteria

Quorum Recovery

Recover access without passwords using trusted teammates. Set a policy (e.g., any 2 of 3 admins) to approve re-enrolling a new passkey when a device is lost. Resilient against SIM swaps, reduces downtime for studios, and removes tedious support back-and-forth.

Requirements

Quorum Policy Configuration
"As a studio owner, I want to set a k-of-n approval rule using my team so that we can securely recover access without waiting on support."
Description

Provide organization-level settings to define a recovery quorum (k-of-n) using existing Classlane roles (Owner, Admin, Manager). Allow owners to specify the minimum number of approvers required, eligible roles, request expiration window, cooldown between requests, and whether policy changes themselves require a quorum. Surface a Security > Recovery Policy page with real-time coverage indicators (e.g., "2 of 5 eligible online"). Enforce constraints to prevent insecure states (e.g., k cannot exceed current eligible members). Changes are versioned and auditable, with rollback. Integrates with existing team management and permissions.

Acceptance Criteria
Trusted Teammate Management
"As an admin, I want to add or remove who can approve recovery so that only reliable teammates can help us regain access."
Description

Enable owners to designate and manage trusted teammates eligible to approve recoveries. Provide invite flow for new teammates, verification that each approver has an active passkey enrolled, and prompts to complete passkey setup. Prevent self-approval and duplicate approvals from the same individual. Reflect status (active, pending, suspended) and enforce automatic ineligibility for suspended or removed users. Integrate with existing Team page and role-based access control.

Acceptance Criteria
Recovery Request Submission Flow
"As a locked-out instructor, I want to start a recovery request that alerts my teammates so that I can quickly regain access to manage classes."
Description

Offer a guided, passwordless flow for a locked-out user to initiate recovery from the sign-in screen or device-lost link. Collect context (reason, lost device, last access), display current policy, and open a time-bound request visible to eligible approvers. Provide real-time status updates, ability to withdraw the request, and automatic expiration. Do not rely on SMS; instead use in-app and email channels. On submission, notify approvers and create an audit record with a unique, tamper-resistant request ID.

Acceptance Criteria
Approver Notification and Approval UX
"As a trusted teammate, I want a clear approve/deny flow that requires my passkey so that I can securely help a colleague recover access."
Description

Notify eligible approvers via in-app banner and email with secure deep links. Present request details (who, when, why, recent activity) and current approval count. Require approvers to re-authenticate with their passkey to approve or deny; capture an optional reason. Support partial approvals, revocation before quorum is met, and automatic completion when threshold is reached. Handle expiration, decline, and escalation states with clear messaging to requester and approvers.

Acceptance Criteria
Passkey Re-enrollment via WebAuthn
"As a recovered user, I want to enroll a new passkey immediately after approval so that I can resume managing bookings without passwords."
Description

Upon quorum approval, unlock a secure flow for the requester to register a new FIDO2/WebAuthn passkey (platform or roaming) and invalidate known sessions on the reported-lost device. Validate attestation where supported, bind the new credential to the user and organization, and confirm success with a signed server event. Ensure cross-browser/mobile compatibility and graceful fallback messaging if device capabilities are insufficient.

Acceptance Criteria
Security and Risk Controls
"As a security-conscious owner, I want strict safeguards on recoveries so that our studio isn’t vulnerable to social engineering or SIM swaps."
Description

Apply defense-in-depth controls to recovery: rate-limit open requests per user/org, enforce cooldowns after failed or expired attempts, block approvals from anomalous contexts (impossible travel, TOR/known bad IPs), and require fresh approver passkey verification within a short window. Ensure requests and approval tokens are nonce-based and single-use. Disallow SMS OTP reliance to mitigate SIM swap risk; prefer in-app and email. Provide org-level denylist, and automatically pause recovery if risk thresholds are exceeded.

Acceptance Criteria
Audit Trail and Admin Reporting
"As an owner, I want a detailed audit trail of recoveries so that I can review what happened and prove compliance if needed."
Description

Record immutable, timestamped logs for every recovery event: requester details, approver identities, decisions, device metadata, IP, and policy version applied. Expose an Admin > Security Log view with filters and exports (CSV/JSON) and a summary dashboard (requests created, approval times, declines). Retain logs per data retention policy and make them searchable for compliance and incident response.

Acceptance Criteria

Login Ledger

A clear audit trail of sign-ins, role changes, and access grants with device, location, and timestamp. Filter by class, staffer, or venue and export for compliance or incident review. Owners resolve “who had access when?” in seconds and spot anomalies early.

Requirements

Unified Audit Event Capture
"As an owner, I want every access-related action recorded with device, location, and time so that I can confidently reconstruct incidents and prove compliance."
Description

Capture all authentication and authorization events across Classlane, including sign-ins, sign-outs, role changes, and access grants/revocations, with immutable, append-only logging. Each event records user/staff identifiers, pre/post role state, auth method (SMS magic link, email OTP, SSO), device fingerprint and user agent, IP address, privacy-safe geolocation (city/country), correlated request/session IDs, timestamp (UTC and local), outcome (success/failure) with error codes, and contextual metadata (class ID/session time, venue). Ensure multi-tenant isolation by studio, idempotent writes, and cryptographic hash chaining for tamper-evidence. The logger must add under 200 ms to the auth flow, batch and retry on transient failures, and guarantee at-least-once delivery with 99.9% durability.

Acceptance Criteria
Contextual Filters & Fast Search
"As a studio owner, I want to quickly filter ledger events by staffer, class, and time window so that I can isolate relevant activity without sifting through noise."
Description

Provide server-side filters and indexed search over ledger data by time range, event type, user/staffer, role change, class, session, venue, device, IP/city/country, and outcome. Support sort, pagination, AND/OR combinations, and full-text search on user email/phone and class titles. Ensure sub-500 ms query performance for up to 10M events per tenant with efficient indexes and caching. Allow saving and sharing filter presets with deep links embedded in the Classlane admin. Render results with infinite scroll and badge chips for quick refinements.

Acceptance Criteria
Export & Compliance Bundle
"As a compliance officer, I want to export a tamper-evident subset of login and access events so that I can satisfy audits and investigations efficiently."
Description

Enable export of filtered ledger data to CSV and JSONL with a stable, versioned schema and included data dictionary. Provide optional PII redaction (e.g., partial IP, masked phone/email) and include a signed integrity manifest (hash and timestamp) for chain-of-custody. Support time-bounded, on-demand and scheduled exports delivered via email link and S3 webhook, with streaming for large datasets and resumable downloads. Include one-click subject-specific export for Data Subject Access Requests and maintain an internal audit trail of who exported what and when.

Acceptance Criteria
Anomaly Detection & Alerts
"As an owner, I want to be alerted to unusual access behavior so that I can intervene quickly before it affects my classes or customers."
Description

Detect suspicious patterns such as first-time device/location, rapid role escalations, spikes in failed sign-ins, and simultaneous multi-venue access from the same account. Provide configurable rules and thresholds per studio, alert routing (email, SMS, in-app), deduplication, and snooze/mute controls. Present an alert detail view with correlated events, impacted classes/sessions, and quick actions to revoke sessions or downgrade roles. Incorporate feedback to mark false positives and refine rules.

Acceptance Criteria
Access Timeline & Diff View
"As a studio owner, I want a clear timeline of a staffer’s access and role changes so that I can resolve access disputes in seconds."
Description

Deliver a timeline view that reconstructs a user’s or staffer’s access history and role state over time, with per-event device and location badges. Support point-in-time snapshots and a diff view of role changes to answer “who had access when” for any selected time window. Provide quick export to PDF with embedded metadata for incident reports and a print-friendly layout.

Acceptance Criteria
Data Retention & Privacy Controls
"As a privacy-conscious owner, I want control over how long ledger data is kept and what personal data it contains so that I can meet my compliance obligations."
Description

Offer configurable retention policies per studio (e.g., 90/180/365/730 days) with legal hold overrides and automatic purge workflows. Minimize stored location (city/country only) and truncate IPs by default, with configurable granularity. Provide consent and lawful-basis tracking for audit data, subject access and deletion workflows, encryption at rest and in transit, and disaster recovery targets (RPO/RTO) aligned with platform standards.

Acceptance Criteria
Role-Based Ledger Access & Audit
"As an owner, I want only authorized people to view or export the Login Ledger so that sensitive access data is protected from misuse."
Description

Restrict ledger visibility and exports to owners and designated admins with a granular permission matrix. Support just-in-time access requests with approval, and maintain a viewer audit trail recording who viewed or exported which records and why, including timestamp and IP/device. Enforce field-level masking for staff and rate limits to prevent bulk exfiltration.

Acceptance Criteria

Gift Scheduler

Time your gift perfectly with date, time, and channel control (SMS or email). Set the recipient’s timezone automatically from their area code, add a soft reminder if they don’t open within 24 hours, and allow last‑minute edits. Givers hit birthdays and holidays on the dot without calendar stress; recipients get a delightful, right‑moment surprise.

Requirements

Smart Timezone Scheduling
"As a gift giver, I want my message to send at a specific time in the recipient’s local timezone so that it arrives at the perfect moment without me doing timezone math."
Description

Executes gift delivery at a specified date and time in the recipient’s local timezone. Automatically infers timezone from SMS area code, email signals, or existing Classlane profile; allows manual override by the giver. Stores timezone in IANA format, accounts for DST shifts and ambiguous/localized times, and previews the recipient-local send time before confirmation. Persists scheduled sends via a durable job queue with idempotent keys and guarantees exactly-once execution. Provides safe defaults when timezone cannot be inferred (fallback to giver’s timezone with prompt). Integrates with Classlane’s notifications service, payments/gift objects, and event logging to ensure the right message and redemption link are sent on-time.

Acceptance Criteria
Multi-Channel Delivery Orchestration (SMS/Email)
"As a giver, I want to choose SMS or email for delivery so that the recipient gets the gift where they’ll notice it quickly."
Description

Enables channel selection per gift (SMS or email) with optional fallback order. Validates destinations (E.164 for SMS, RFC-compliant email), checks consent/opt-in, and assembles channel-appropriate payloads including sender name and a secure redemption link. Abstracts providers behind a messaging service layer to support multiple vendors, templates, and rate limits. Handles SMS length/segmentation, UTM parameters, and branded link shortener; for email, supports SPF/DKIM/DMARC-signed sending identity. If primary channel fails pre-send validation, prompts the giver to switch or add an alternate channel. Writes message metadata for tracking and customer support.

Acceptance Criteria
Open Tracking and Soft Reminder Automation
"As a giver, I want an automatic reminder sent if my gift isn’t opened within a day so that I don’t have to follow up manually."
Description

Monitors whether the recipient opens or clicks the gift within 24 hours of scheduled delivery. For email, uses a tracking pixel and signed link tracking; for SMS, uses link-click events. If unopened after 24 hours, queues a single, gentle reminder on the same channel respecting quiet hours, opt-out status, and suppression after redemption. Allows configurable reminder copy and timing, exposes real-time status to the giver, and logs events for analytics and support. Ensures reminders never fire if the gift is already opened or redeemed.

Acceptance Criteria
Last‑Minute Edit and Reschedule Window
"As a giver, I want to make last‑minute changes before it sends so that I can fix mistakes without ruining the surprise."
Description

Permits givers to edit message content, delivery time, and channel up to a configurable cutoff (e.g., 15 minutes) before send. Displays a countdown, shows the resulting recipient-local time, and confirms changes with undo. Updates scheduled jobs atomically to avoid double sends, preserves an audit trail with version history, and prevents edits after cutoff. Supports canceling the send while retaining the gift code, with clear refund/void behavior defined for any per-message fees. Notifies the giver of successful updates and final lock-in.

Acceptance Criteria
Quiet Hours, Consent, and Compliance Controls
"As an operator, I want messages sent at respectful times and in compliance with regulations so that we protect recipients and maintain high deliverability."
Description

Enforces default quiet hours per recipient timezone (e.g., 8am–8pm) with an explicit override option. Implements SMS compliance (STOP/HELP keywords, opt-in records, A2P 10DLC registration where required, throttling) and email compliance (unsubscribe link, physical address, CAN-SPAM). Applies per-recipient do-not-contact lists, content safety checks, and locale-aware formatting. Injects required compliance footers and short codes, stores consent artifacts, and blocks sends when compliance cannot be established. Integrates with Classlane’s legal and messaging configuration for consistent enforcement.

Acceptance Criteria
Delivery Failure Handling, Retries, and Channel Fallback
"As a giver, I want the system to retry or switch channels if delivery fails so that my gift still arrives without me micromanaging it."
Description

Detects delivery failures (bounces, blocks, carrier errors) and applies a retry policy with exponential backoff and jitter. If final failure occurs and an alternate channel is configured, automatically attempts fallback while notifying the giver and honoring quiet hours and consent. Ensures idempotency to avoid duplicate messages, records detailed failure reasons for support, and surfaces final delivery status and next steps in the giver’s timeline.

Acceptance Criteria
Template Personalization and Live Preview
"As a giver, I want beautiful, personalized templates I can preview so that the gift feels thoughtful and looks right on the recipient’s device."
Description

Provides on-brand templates for birthdays and holidays with personalization tokens (recipient name, occasion, gift value, class type, redemption link, sender note). Supports emojis, media where applicable, and locale-aware date/number formatting. Offers live previews for SMS and email showing character count, segment estimation, and approximate inbox rendering. Saves custom messages and templates to the giver’s account for reuse and ensures parity of content across channels while adapting to channel constraints.

Acceptance Criteria

Gift Wrap

Add a personal touch with themed digital wraps, a short message or 10‑second video, and optional studio branding. The recipient opens a polished, ‘unboxing’ style page right from the text. Givers make gifts feel intentional and special; instructors showcase their vibe, improving redemption and referrals.

Requirements

Themed Wrap Gallery & Live Preview
"As a gift giver, I want to browse and preview themed wraps so that my gift feels personal and intentional."
Description

Provide a curated library of themed digital gift wrap templates (e.g., yoga, pottery, cooking, seasonal, minimalist) with color variants and localized copy. Include a mobile-first live preview that reflects the selected theme, personal message, optional 10-second video poster, and studio branding in real time. Ensure templates are responsive, performant, and accessible, and are served via CDN with cache-busting. Support feature flags for incremental rollout and template A/B testing. Integrate with Classlane’s checkout so givers can select and preview the wrap before purchase, and with the instructor dashboard for theme recommendations.

Acceptance Criteria
Personal Message & 10-Second Video Capture
"As a gift giver, I want to add a short note or video so that the recipient feels a personal touch when opening the gift."
Description

Enable givers to add an optional short note (up to 160 characters with emoji support) and a 10-second video recorded in-app or uploaded from camera roll. Automatically transcode uploads to a standardized format (MP4/H.264, max 720p, target <5 MB), generate a poster frame, and compress for fast playback on mobile networks. Provide automatic captions with edit capability for accessibility. Validate content length/size/types client-side and server-side, handle upload retries, and store assets on secure object storage with signed URL access. Integrate with the unboxing page to display the message and inline video with tap-to-play.

Acceptance Criteria
Studio Branding Controls
"As an instructor, I want my studio branding applied to gift wraps so that recipients experience my vibe and recognize my studio."
Description

Give instructors an opt-in control to apply studio branding to gift wraps, including logo upload, brand colors, and type style presets. Provide a brand preview in the dashboard and a per-gift toggle for givers to include or exclude branding. Ensure color-contrast compliance, safe logo scaling, and graceful fallback to a neutral theme if branding is unavailable. Persist branding configurations per studio and apply them consistently across the preview, unboxing page, and SMS link preview card (OG tags).

Acceptance Criteria
Unboxing Landing Page with Redemption CTA
"As a recipient, I want an engaging unboxing page with a clear redeem button so that I can quickly use my gift without confusion."
Description

Create a polished, mobile-first ‘unboxing’ landing page that recipients open from SMS. Include a brief reveal animation, the selected wrap theme, the giver’s message, inline video playback, and optional studio branding. Provide a prominent call-to-action to redeem the gift that deep-links into Classlane’s redemption flow with the correct class credit/prepaid code. Optimize for fast load (<2s on 3G), accessibility (screen reader labels, keyboard focus order, captions), and privacy (noindex, tokenized access). Include a secondary CTA to share or refer friends with prefilled messages.

Acceptance Criteria
SMS Delivery & Secure Gift Links
"As a gift giver, I want the gift delivered via a secure text link so that the recipient can open it instantly and safely."
Description

Integrate with the existing SMS gateway to deliver the gift as a branded, shortened link immediately upon purchase or at a scheduled time. Generate unique, tokenized links bound to the recipient’s phone number with optional PIN verification if the link is forwarded. Support resend, delivery status tracking, and fallback to email if SMS fails. Enforce link expiration policies, rate limiting, and device fingerprint checks. Comply with messaging regulations (opt-out via STOP, time-of-day quiet hours) and include a preview card (OG/Twitter tags) for rich link presentation.

Acceptance Criteria
Engagement Analytics & Redemption Reporting
"As an instructor, I want insights into gift wrap engagement so that I can choose themes that increase redemptions and referrals."
Description

Instrument analytics for key events: SMS sent/delivered/opened, unboxing page views, video play-through, CTA clicks, redemption conversion, and referral clicks. Provide instructor-facing dashboards summarizing performance by theme, timeframe, and campaign, plus CSV export. Surface recommendations (e.g., top-performing themes) and allow platform-level cohort analysis. Ensure privacy compliance (aggregate metrics, opt-outs) and expose event hooks to the experimentation framework for A/B testing of themes and layouts.

Acceptance Criteria
Content Moderation & Compliance Safeguards
"As a platform admin, I want moderation and compliance controls so that user-generated wrap content remains safe and aligns with regulations."
Description

Implement content safety for user-generated notes and videos using profanity filters, blocklists, and automated NSFW detection with human review escalation. Provide clear user consent copy for media uploads, data retention controls (e.g., auto-delete after 90 days or upon redemption), and DSAR/erasure handling per GDPR/CCPA. Allow givers to delete or replace media prior to delivery, and allow recipients to report inappropriate content. Log moderation decisions, versioning, and notifications, and update Terms/Privacy as needed.

Acceptance Criteria

Chip-In

Invite friends to contribute to the same gift with a shareable link and live progress bar. One organizer sets the target; contributors pay in seconds, see transparent fees, and get auto‑receipts. The gift activates when funded (or sends at the scheduled time with the funded amount). Group gifting becomes effortless, expanding average gift value without coordinator headaches.

Requirements

Shareable Contribution Link & Access Controls
"As an organizer, I want to create a shareable chip-in link with configurable access controls so that friends can easily contribute while I control who can participate."
Description

Enable organizers to create a Chip-In campaign with title, cover image, description, target amount, and optional deadline, generating a unique short link optimized for mobile and social sharing (SMS, WhatsApp, Instagram bio). Provide public or invite-only access controls (open link, whitelist by phone/email), configurable name visibility (real name, alias, anonymous), and link preview metadata (OG tags) for rich snippets. The campaign page displays progress, fees disclosure, and time remaining. Include link management (copy, QR code, pause/close campaign) and basic campaign analytics (clicks, conversion). Ensure anti-abuse (rate limiting, duplicate submission protection) and localization (currency, timezone) aligned with Classlane settings.

Acceptance Criteria
Real-Time Progress Tracking & Activity Feed
"As a contributor, I want to see live progress and recent activity so that I feel confident my payment moves the group toward the goal."
Description

Provide a live progress bar showing amount raised vs. target, percentage complete, contributor count, and time remaining. Implement real-time updates using WebSockets or SSE with an auto-refresh fallback for broad device compatibility. Include a lightweight activity feed showing recent contributions (with optional contributor names/messages per privacy settings) and milestone indicators when thresholds are hit (e.g., 25%, 50%, 100%). Ensure consistent state across organizer dashboard and public campaign page, handle concurrent contributions, and display a clear goal-reached state with next steps. Optimize for performance on mobile networks.

Acceptance Criteria
Payment Processing & Fee Transparency
"As a contributor, I want a fast, secure checkout with clear fees so that I can contribute confidently in seconds."
Description

Offer a fast, secure checkout that completes in seconds, supporting major cards, Apple Pay/Google Pay, and regional methods via the payment processor. Present a clear, itemized breakdown of contribution amount and fees before confirmation, with an option for the organizer to absorb fees or pass them to contributors. Enforce min/max contribution rules, currency formatting, and strong customer authentication (3DS) when required. Implement retries, idempotency, and robust error states. Store only tokens as needed (no raw PANs) and comply with PCI via the PSP. Optimize for one-handed mobile use and sub-3-second confirmation under normal conditions.

Acceptance Criteria
Auto-Receipts & Contribution Records
"As a contributor, I want an automatic receipt sent to my email or phone so that I have proof of payment and can track my spending."
Description

Automatically issue receipts via SMS or email to each contributor upon successful payment, including campaign title, organizer name, contribution amount, fees, net to gift, date/time, last4 of payment method, and a unique receipt ID. Provide an organizer dashboard ledger with real-time totals, contributor list (respecting privacy settings), and exportable CSV. Support resend of receipts and a daily summary to the organizer. Ensure receipt content meets regional requirements and includes Classlane branding and support links. Maintain immutable audit logs for compliance and dispute resolution.

Acceptance Criteria
Funding Rules: Target, Deadline, Activation & Scheduling
"As an organizer, I want to set a target and deadline with clear activation rules so that the gift is delivered automatically when conditions are met."
Description

Allow organizers to define target amount, deadline (date/time with timezone), and delivery behavior: auto-activate immediately upon reaching target, or deliver at a scheduled time with whatever amount is raised. Let organizers choose the gift destination (specific class booking, studio credit, or Classlane gift voucher) and configure overfunding behavior (cap at target vs. allow surplus to roll into credit). Lock critical fields after first contribution, support deadline extensions before expiry, and display a countdown on the campaign page. Trigger milestone notifications and a definitive activation event for subsequent disbursement flow.

Acceptance Criteria
Disbursement, Refunds & Shortfall Handling
"As an organizer, I want clear controls for what happens if we miss or exceed the goal so that contributors are treated fairly and funds are handled correctly."
Description

Implement escrow-style holding of contributions until activation. On activation, convert funds according to destination: issue a Classlane voucher, apply credit to a selected studio, or prepay a designated class booking. If the deadline passes without meeting the target, follow organizer preference: auto-send the partial amount as a gift or issue refunds to contributors. Handle partial and full refunds (including proportional fee reversal where supported), chargebacks, and payout reconciliation. Provide clear messaging to organizer and contributors on outcomes, and maintain a comprehensive audit trail for every state transition.

Acceptance Criteria
Gift Delivery & Redemption in Classlane
"As a recipient, I want an easy way to claim and use the group gift on classes so that I can book experiences without hassle."
Description

Generate a branded digital gift page and redemption code/link at activation. Allow the recipient to claim the gift into their Classlane account, view balance, and apply it seamlessly at checkout to eligible classes across participating instructors/studios per organizer configuration. Support partial redemptions, remaining balance tracking, and configurable expiry. Prevent abuse via single-claim enforcement, rate limiting, and basic KYC triggers for anomalous behavior. Trigger instructor payouts when redeemed funds are used in bookings, and surface redemption analytics (time to claim, redemption rate) to organizers.

Acceptance Criteria

Gift Match

On open, recipients see smart, one‑tap suggestions tailored to location, schedule, popularity, and seat availability—plus clear value left if the gift covers multiple classes. Built on Classlane’s booking data, it removes decision friction and turns gifts into bookings in seconds.

Requirements

Smart Gift Suggestions Engine
"As a gift recipient, I want to see class suggestions that fit my location, schedule, and interests so that I can redeem my gift quickly without researching."
Description

Build a personalized ranking service that composes a one‑tap gift suggestion list using Classlane’s booking data. Inputs include device or user‑selected location, recipient availability (calendar connect or quick preference chips), class popularity (recent booking velocity and rating), real‑time seat inventory and waitlist status, and price fit against gift balance. Outputs are 5–10 tappable class cards showing distance, next start time, seats left, and coverage indicator. Provide cold‑start defaults, geo‑fallback to city centroid, and safe‑mode cache. Target P95 response ≤300 ms from edge cache; refresh inventory every 10 seconds. Expose API v1: GET /gift/suggestions and deep links carrying gift_token and class_id for seamless handoff to redemption. Expected outcome: reduced decision friction and faster gift‑to‑booking conversion.

Acceptance Criteria
One‑Tap Gift Redemption
"As a gift recipient, I want to book a suggested class in one tap using my gift balance so that I can convert the gift into a confirmed spot instantly."
Description

Create a frictionless redemption flow that confirms a suggested class in a single tap using the recipient’s gift balance. Pre‑apply the gift, auto‑select the earliest suitable session, default seat count to one with easy adjustment, and confirm booking within a two‑minute Hold‑to‑Confirm window. If the balance is insufficient, surface an inline top‑up (Apple Pay/Google Pay/cards) without leaving the flow. Validate gift token status, expiration, and terms; support partial redemption and preserve remaining balance. Provide clear error recovery, confirmation receipt, add‑to‑calendar, and studio notification. Mobile‑first experience completes in three steps or fewer from open to booked.

Acceptance Criteria
Gift Balance Meter & Multi‑Class Coverage
"As a gift recipient, I want to clearly see how much of my gift covers each class and what remains so that I can choose confidently and plan multiple bookings."
Description

Display a live balance meter on suggestions and checkout indicating whether the gift fully covers a class, the remaining amount afterward, or any top‑up required. For multi‑class coverage, compute and show how many classes the balance can still fund based on current suggestion price ranges. Persist remaining balance across sessions and provide a redemption ledger. Correctly handle taxes, fees, discounts, refunds, and currency. Expose a Balance API for clients and integrate with payments to reconcile partial payments and adjustments.

Acceptance Criteria
Real‑Time Availability & Waitlist Awareness
"As a gift recipient, I want accurate availability with alternatives and waitlist options so that I don’t waste time on classes I can’t get into."
Description

Integrate seat availability and waitlist signals into ranking and UI. Show badges for low inventory, next start date/times, and alternative sessions for full classes. If a chosen session is full, offer one‑tap join waitlist with automatic Hold‑to‑Confirm texting on backfill. On tap, temporarily reserve a seat within the two‑minute window to keep availability consistent through checkout. Use optimistic locking and reconciliation to prevent oversells and gracefully handle studio‑side edits.

Acceptance Criteria
Recipient Preferences & Privacy Controls
"As a privacy‑conscious user, I want control over which data is used for suggestions so that I get relevance without compromising my privacy."
Description

Provide user‑controlled inputs and consent for personalization. Offer explicit permission prompts for device location and optional calendar access; if declined, allow manual entry of home area (ZIP/city) and preferred days/times. Store preferences on‑device with minimal server profile, enable revoke/edit at any time, and respect OS permissions and regional privacy laws (GDPR/CCPA). Implement data minimization, encrypted transport and storage, and transparent explanations of how data improves suggestions.

Acceptance Criteria
Suggestion Analytics & A/B Experimentation
"As a product manager, I want analytics and experiments on Gift Match so that I can improve ranking and UI to maximize conversion."
Description

Instrument the Gift Match funnel and enable controlled experiments on ranking and UI. Track impressions, suggestion taps, redemption starts, bookings, time‑to‑book, and top‑up conversions with anonymized event telemetry. Provide a dashboard segmentable by market, category, and gift value. Support feature flags and server‑side A/B testing of ranking weights, card layouts, and call‑to‑action copy with guardrails (holdouts, ramps). Use statistically sound assignment to ensure unbiased results and reproducibility.

Acceptance Criteria

Redeem Nudges

Gentle, configurable reminders help recipients redeem before key dates, with a courtesy ‘nudge me’ toggle for the giver. Nudges include fresh class picks and a live countdown to popular times. More gifts convert to seats, fewer get forgotten, and givers stay informed without micromanaging.

Requirements

Nudge Opt-in & Scheduling Preferences
"As a gift recipient, I want to control how and when I receive redemption nudges so that I feel supported to use my gift without being overwhelmed."
Description

Provide configurable reminder controls for both recipients and givers, including a courtesy “nudge me” toggle for the giver. Support per-gift and global settings for frequency (e.g., weekly, just-in-time before expiry), preferred channels (SMS, email, push), time windows and quiet hours, snooze/skip next nudge, and one-tap unsubscribe/STOP. Capture explicit consent for each channel, store consent state with timestamps, and respect locale-specific rules. Integrate with user profiles, the notification center, and gift objects so nudges stop immediately on redemption or refund. Provide admin defaults and guardrails to balance effectiveness with user comfort, aiming to increase redemption while minimizing perceived spam.

Acceptance Criteria
Live Countdown & Popular Times Module
"As a gift recipient, I want a live countdown and popular time suggestions in the reminder so that I can quickly choose a class before it sells out or expires."
Description

Embed a dynamic component in nudge messages that shows an accurate countdown to key dates (gift expiration, seasonal peaks, expiring promos) and lists popular class times with current availability. Auto-adjust for user timezone, daylight savings, and locale formats, and degrade gracefully when data is delayed. Pull live availability from the Classlane inventory service and link directly to the pre-filled booking flow. Provide configuration for the number of time slots shown and fallbacks when a slot sells out, ensuring the content always reflects real-time capacity to drive fast conversion.

Acceptance Criteria
Fresh Class Picks Personalization
"As a gift recipient, I want nudges to include tailored class suggestions so that I can redeem my gift without having to search extensively."
Description

Generate relevant class recommendations for each nudge using signals such as gift type, recipient location, browsing history, instructor ratings, trending classes, and real-time capacity. Ensure diversity across categories to avoid repetition and provide cold-start logic when history is sparse. The system should return 3–5 ranked picks with titles, images, times, and deep links to booking. Integrate with the catalog, availability, and pricing services, and support feature flags for algorithm variants to enable rapid iteration.

Acceptance Criteria
Waitlist & Redemption Sync
"As an instructor, I want nudges to align with real-time seat availability and redemption status so that reminders convert to bookings without overbooking or mixed messages."
Description

Synchronize nudge logic with Classlane’s hold-to-confirm waitlist and redemption states to avoid conflicts and maximize conversion. When a cancellation backfills a seat, trigger targeted nudges to unredeemed recipients who have opted in and match the class criteria, respecting frequency caps and consent. Immediately suppress nudges once a gift is redeemed or the hold window is active to prevent overbooking and confusion. Ensure idempotent send logic, real-time inventory checks, and clear event-driven integrations with booking, waitlist, and payment services.

Acceptance Criteria
Message Deliverability, Consent & Rate Limiting
"As a platform admin, I want compliant, reliable nudge delivery with sensible caps so that we minimize complaints and costs while maintaining effectiveness."
Description

Implement reliable, compliant delivery across SMS and email with built-in consent management and protective rate limits. Support carrier best practices (alphanumeric sender IDs where allowed, A2P registration, STOP/HELP keywords), email authentication (SPF, DKIM, DMARC), bounce handling, retries with exponential backoff, and per-user frequency caps. Maintain an audit trail of consent, sends, and outcomes for compliance and support. Provide configurable quiet hours, per-channel fallbacks, and cost controls to keep nudges respectful, legal, and cost-effective.

Acceptance Criteria
Giver Courtesy Updates & Privacy-Safe Status
"As a gift giver, I want lightweight status updates about the gift I sent so that I stay informed without micromanaging the recipient."
Description

Enable a simple “nudge me” toggle for gift givers to receive high-level updates such as redeemed, not yet redeemed, or expiring soon, without exposing the recipient’s personal schedule or class choices unless the recipient explicitly consents. Allow givers to adjust channel and frequency, pause updates, or unsubscribe at any time. Integrate with the gift object and redemption events to ensure timely, minimal updates that reassure givers and reduce manual check-ins.

Acceptance Criteria
Nudge Performance Analytics & Experimentation
"As a growth manager, I want to analyze and test nudge content and timing so that we can systematically increase gift-to-seat conversions."
Description

Track and attribute the impact of Redeem Nudges across the funnel, including sends, deliveries, opens, clicks, session starts, redemptions, bookings, and revenue. Provide cohort and segment breakdowns (channel, gift type, geography, instructor) and a privacy-safe holdout framework to measure incremental lift. Support A/B tests for send times, subject/preview text, templates, recommendation variants, and countdown placements. Surface dashboards and alerts for underperforming segments and automate learning loops to continuously improve redemption rates.

Acceptance Criteria

Smart Top-Up

If a chosen class exceeds the gift value, the recipient pays the difference instantly—card collected on redemption—without leaving the flow. Offers alternate sessions within budget or pack options when it’s a better fit. No awkward upsell moments for instructors; recipients always have a smooth path to ‘Book.’

Requirements

Auto Gift Balance & Top-Up Calculation
"As a gift recipient, I want the gift value automatically applied and the difference calculated so that I can complete my booking quickly without doing math or leaving the flow."
Description

Automatically applies the recipient’s gift balance to the selected class price at redemption and calculates any remaining amount due in real time, including configurable taxes and fees as defined in Classlane. Presents a clear cost breakdown showing what the gift covers and what the recipient needs to top up, and ensures the user never leaves the booking flow. Supports multi-currency display and rounding rules consistent with the merchant’s locale. Honors seat holds and availability checks, recalculating if pricing, promotions, or fees change before confirmation. Writes the computed amounts to the booking record for downstream receipts, refunds, and reporting, ensuring parity across web and mobile link-in-bio contexts.

Acceptance Criteria
In-Flow Payment Collection on Redemption
"As a gift recipient, I want to pay any difference right in the redemption screen so that I can confirm my spot without redirects or re-entering details."
Description

Captures the recipient’s payment method within the redemption flow for any top-up amount using a PCI-compliant processor, supporting Apple Pay, Google Pay, and major cards with 3DS/SCA where required. Tokenizes the card to the recipient profile (with consent) for instant charge on this redemption and future bookings. Performs auth-and-capture atomically with seat confirmation to prevent double-booking, with idempotency keys and retries for transient failures. Provides immediate inline error states for declines and alternative payment prompts without redirecting. Issues receipts, updates booking/payment ledgers, and returns the user to a confirmed ‘Booked’ state in one seamless step.

Acceptance Criteria
Budget-Friendly Alternatives
"As a gift recipient, I want to see similar classes that fit my gift amount so that I can still book something today without paying extra."
Description

When the selected class exceeds the gift value and the user opts not to top up, surfaces relevant alternative sessions within the remaining balance, ordered by fit (same instructor, category, location, date proximity). Includes quick filters (date, distance, level) and clearly marks which options are fully covered by the gift. Preserves the user’s context and allows one-tap swap to an alternative without losing their place. Logs impressions and selections for optimization and supports A/B testing of ranking strategies.

Acceptance Criteria
Pack Option Recommendations
"As a gift recipient, I want to see pack options that make better use of my gift so that I get more classes without unexpected costs."
Description

Detects when a multi-class pack is a better fit for the recipient’s goals and gift value, presenting a concise comparison versus single-session top-up. Allows applying the gift as a partial or full payment toward eligible packs, shows per-class effective price, and explains remaining balance or top-up required. Handles conversion of gift value into account credit when permitted by studio policy and ensures correct revenue recognition and usage tracking across multiple redemptions.

Acceptance Criteria
Instructor Controls & Policy Settings
"As an instructor, I want to control how top-ups apply and see performance metrics so that the experience matches my policies and grows revenue transparently."
Description

Provides studio/instructor-level settings to configure Smart Top-Up rules, including which fees are covered by gift value, maximum allowed top-up percentage, permitted payment methods, messaging tone and copy, and whether gift value can convert to account credit for packs. Exposes reporting on top-up offers, acceptance rate, alternative selection rate, and incremental revenue. Integrates with existing cancellation/refund policies so top-up amounts follow the same rules as standard bookings, with clear ledger entries for reconciliation.

Acceptance Criteria
Error Handling & Concurrency Safeguards
"As a recipient, I want clear answers and safe retries if something goes wrong so that I don’t lose my spot or get charged twice."
Description

Implements robust handling for expired or fully redeemed gifts, insufficient balances, processor timeouts, and card declines with user-friendly guidance and recovery paths. Uses seat holds aligned with Classlane’s two-minute confirm window, extending only when necessary during SCA challenges and releasing gracefully on abandonment. Ensures idempotent booking creation, prevents duplicate charges on retries, and synchronizes state across devices. Records all failures with diagnostic context for support and auto-notifies users when a hold expires with next steps.

Acceptance Criteria
Top-Up Analytics & Reporting
"As a product manager, I want end-to-end metrics on top-up and alternatives so that I can identify drop-off points and improve conversion."
Description

Instruments funnel events across the Smart Top-Up flow, including redemption start, price calculation, top-up presented, accept/decline, payment success/failure, alternative viewed/selected, and pack conversion. Surfaces dashboards for instructors and Classlane ops showing conversion rates, average top-up amount, incremental revenue, and abandonment reasons, with export to analytics platforms. Enables cohort breakdowns by category, location, device, and payment method to guide optimization and partner success.

Acceptance Criteria

Gift Ledger

Studios and instructors see real‑time gift liability, redemption rates, and breakage forecasts with exportable reports. Configure jurisdiction‑aware expiration rules and disclosures automatically. Finance stays clean, compliance is handled, and ops can plan promos with confidence.

Requirements

Real-time Gift Liability Dashboard
"As a studio owner, I want a live view of gift liability and performance so that I can make confident decisions about promos and capacity."
Description

Provide a live, filterable dashboard that aggregates outstanding gift liability, redemptions, expirations, and breakage forecasts across studios, instructors, classes, campaigns, and time ranges. The dashboard consumes double-entry ledger data and jurisdiction rules to correctly classify balances, updates within seconds of issuance/redemption events, and supports drill-down to instrument and transaction detail. It is mobile-first to match Classlane’s link-in-bio usage, offers saved views for finance and ops, exposes configurable KPIs (e.g., total liability, liability aging buckets, 7/30/90-day redemption rates), and supports multi-currency with consistent base currency reporting. The outcome is a single source of truth for gift exposure and performance that informs pricing, promos, and capacity planning.

Acceptance Criteria
Gift Instrument Lifecycle & Ledger
"As a finance lead, I want a reliable ledger of all gift activity so that our balances, revenue recognition, and audits are accurate."
Description

Implement a robust data model and double-entry ledger for gift instruments (paid gift cards, class credits, promo vouchers) covering statuses (issued, activated, partially redeemed, expired, voided, refunded, escheated) and events (issue, redeem, adjust, expire, breakage recognition). Ensure idempotent event ingestion, ACID persistence, and precise UTC timestamping to enable reconciliation. Each event generates balanced ledger entries for liability, cash, revenue deferral, redemption, and breakage recognition. Provide unique code/QR issuance, balance inquiry, and concurrency-safe redemption across web, POS, and API, integrated with Classlane bookings and payments so redemptions can apply at checkout and against specific classes. Deliver reconciliation tools to detect orphan balances, negative liabilities, and duplicate redemptions.

Acceptance Criteria
Jurisdiction-Aware Expiration & Disclosures
"As a compliance manager, I want jurisdiction-aware rules applied automatically so that our gift program remains compliant without manual work."
Description

Create a rules engine that applies location-specific laws for gift instruments, distinguishing paid vs promotional value, partial cash-back states, expiration limitations, escheatment, and disclosure requirements. Automatically assign compliant expiration dates and disclosures at purchase, display mandated text in checkout, receipts, SMS/email delivery, and the customer wallet, and block configurations that violate known regulations. Allow studio-level overrides with justification and audit capture. Maintain a versioned policy dataset with effective dates and audit logs to evidence compliance. Integrate with Classlane’s checkout and messaging so that buyers and recipients see correct terms based on purchaser/recipient location, currency, and instrument type.

Acceptance Criteria
Redemption & Breakage Forecasting
"As an operations manager, I want projected redemptions and breakage so that I can plan promos and staffing without overbooking classes."
Description

Deliver a forecasting module that estimates future redemptions and breakage by cohort, campaign, and studio using historical issuance/redemption patterns, seasonality, and instrument type. Provide adjustable assumptions (e.g., lookback window, decay model, class capacity constraints) and display forecast curves with confidence ranges. Feed projections into the dashboard KPIs and reports to inform revenue recognition timing and promo planning. Enable scenario analysis (e.g., 20% off promo in Q4) with side-by-side impact on liability and expected redemption load for classes. Start with transparent, rules-based models with exportable inputs/outputs, leaving room for ML enhancement later.

Acceptance Criteria
Reports & Exports (CSV/XLSX/Scheduled)
"As a finance analyst, I want exportable, reconcilable reports so that I can close the books and share numbers with stakeholders."
Description

Provide configurable reports for liability balances, activity by period, aging, redemption rates, expirations, and breakage recognition, with filters for date range, studio, campaign, instrument type, and jurisdiction. Support ad-hoc downloads (CSV/XLSX), scheduled email delivery, and API-based retrieval. Include a column dictionary, timezone and currency normalization, stable identifiers (instrument_id, transaction_id, ledger_entry_id), and PII redaction options. Optimize for large datasets with pagination/streamed CSV for 100k+ rows and background job processing with status notifications. Ensure exports reconcile to dashboard totals and the ledger.

Acceptance Criteria
Accounting Integrations & Journal Sync
"As an accountant, I want automated journal entries synced to our GL so that gift activity is reflected accurately without manual posting."
Description

Integrate with QuickBooks Online and Xero to post summarized daily journals for gift activity: cash received for gift sales, liability recognized, redemptions reducing liability, and breakage recognition to revenue. Provide a chart-of-accounts mapping UI, multi-entity support, posting schedules, and a retry queue with error surfacing. Allow sandbox mode for testing, and produce a reconciliation report comparing posted journals to the internal ledger. Respect settlement timing differences from payment processors and support currency mappings. Webhooks notify on posting success/failure to keep finance informed.

Acceptance Criteria
Role-Based Access & Audit Trail
"As an admin, I want fine-grained access controls and audit logs so that we protect sensitive data and can prove compliance."
Description

Implement granular permissions for viewing, exporting, and configuring gift settings, separating finance, ops, and instructor roles. All changes to rules, mappings, and instrument adjustments must be captured with who/when/what before/after details and immutable audit logs. Provide exportable audit trails for compliance and SOC2 needs, with filters by user, action, and time range. Surface high-risk changes (e.g., disabling expirations, bulk adjustments) with review/approval workflows and notifications. Integrate with Classlane’s orgs and team management to inherit roles and SSO where available.

Acceptance Criteria

Product Ideas

Innovative concepts that could enhance this product's value proposition.

Reply-to-Book

Students claim openings by replying “Y” to a text; card on file auto-charges and confirms in seconds. Fills last-minute seats without app taps.

Idea

Blink Check-In

Two-second QR check-in validates attendance; unclaimed seats auto-release at T+5 to the waitlist with instant texts. Cuts no-shows and chaos at the door.

Idea

AutoSplit Payouts

Per-class rules route each booking’s revenue—percentage or fixed room fee first—into separate instant payouts for hosts and instructors. Eliminates spreadsheets and payout math.

Idea

FlexiBundle Packs

Create 3 to 10 class packs with rolling expiration; SMS nudges unused credits and one-tap booking from reminders. Increases repeat visits without subscriptions.

Idea

SeatSwap Text

Let booked students release a spot via SMS; waitlist auto-charged, original payer gets instant credit or partial refund. Reduces no-shows and friction.

Idea

Passkey Sign-In

Passwordless passkey login for instructors and coordinators; supports role-based access for co-hosts. Faster sign-in, fewer lockouts, safer accounts.

Idea

Instant Gift Link

Sixty-second gift checkout with scheduled delivery and one-tap transfer; recipients book directly from text, card collected on redemption. Unlocks holiday spikes and referral loop.

Idea

Press Coverage

Imagined press coverage for this groundbreaking product concept.

Want More Amazing Product Ideas?

Subscribe to receive a fresh, AI-generated product idea in your inbox every day. It's completely free, and you might just discover your next big thing!

Product team collaborating

Transform ideas into products

Full.CX effortlessly brings product visions to life.

This product was entirely generated using our AI and advanced algorithms. When you upgrade, you'll gain access to detailed product requirements, user personas, and feature specifications just like what you see below.