Features
Everything in the box.
No "coming soon" pages and no premium tier hiding the good stuff. If a feature is listed below, it's working in the product today. Each category groups the full feature set so you can audit the depth before signing up.
Sign up & pay
Families enroll without a phone call. Every fee is on the page before they agree. Tuition goes straight to your bank. No password required, ever.
Your own school page
Branded page at /schools/your-slug. Programs, packages, every fee visible up front. Families can browse without signing up; checkout opens when they're ready.
Programs and packages
Bundle your programs (Teen, Adult, Refresher) into priced packages โ 'Standard 6-hour BTW', 'Plus 10 lessons', whatever your school sells.
Every fee, visible up front
Tuition, admin fee, credential cost, reschedule policy โ laid out as line items before checkout. No 'oh and one more thing' surprises after the family pays.
Guest checkout โ no password to set
Parents complete enrollment, pick a program, and pay without ever choosing a password. The account is created behind the scenes from email + phone. Removes the single biggest funnel killer.
Magic-link sign-in
Email + one-tap link. That's the canonical auth flow. Password is optional and never blocking. The same link works every time โ sign in from any device.
Account merging at checkout
Email already in our system? We recognize it. The new enrollment links to the existing family record โ no 'account already exists' friction wall, no duplicate user.
Your bank, not ours
We don't sit in the middle. Tuition flows straight from the family's card to your bank account through Stripe.
Pay once, pay later, or pay monthly
Three checkout options per package: one-time charge, buy-now-pay-later (Klarna or Affirm), or recurring monthly installments. You pick which to offer.
Honest refunds
Refund a drop-out and you get the platform fee back too โ you shouldn't eat the cost of a transaction that didn't stick.
Time-to-paid as a north-star metric
Your dashboard tracks median time from new enrollment to first paid payment. Add friction anywhere in the funnel and you'll see it on the next dashboard load.
Online classroom
A full classroom you can install instead of build. Start with our lessons and quizzes, edit anything you want, or import your own materials with AI help.
Seeded national-core pack
10-module MN-aligned national-core classroom pack pre-installed. Driving as responsibility, vehicle familiarization, signs and signals, intersections, lane discipline, sharing the road, highway driving, adverse conditions, night driving, MN laws.
MN BTW 6-hour progression
A platform-owned BTW progression pack. Lesson 1: controls and parking lot. Lesson 6: test prep. Each lesson lists the rubric skills the instructor should focus on. Auto-surfaces on the instructor's today view at the right number.
51 state overlays
Every state + DC has a seeded overlay covering local rules, GDL stages, and state-specific terminology. Schools pick their state and the overlay applies.
Install once, edit anything
You get your own editable copy. When we improve the originals, you get a notice โ never a forced overwrite.
AI-assisted curriculum import
Paste or upload your existing materials. Claude segments the content into lesson-sized chunks and proposes which module slot in your installed pack each piece belongs in. You review and confirm โ only confirmed segments become school lessons.
AI-assisted indicator on every imported lesson
School lessons created via AI import carry a visible 'AI-assisted' badge plus the approver's name and date. Editorial responsibility stays with the school.
Video, PDFs, images
Drop assets into any lesson. Files are served privately to your students โ never accessible from another school's account.
Paste any YouTube link
We figure out the format โ watch URLs, short links, embeds, Shorts, live, mobile. Just paste and go.
Quizzes that teach
Multiple choice with an explanation after each answer. Students don't just get a score โ they learn why they got it wrong.
Outcomes per content version
Quiz pass rate, road-test pass rate, completion count โ for each installed pack version. Identify weak modules over time; eventually rank packs by outcomes, not vibes.
Parent supervised-driving logbook
The state-required 50 parent-led hours have a real surface. Parents log every drive (date, minutes, night, conditions). Instructors countersign in person. Progress bar to target.
Scheduling
One constraint engine, three booking surfaces. Admin board, parent self-serve, AI auto-suggest at sign-off. A slot one surface offers is a slot the other two will accept.
Pure constraint engine
Takes (student, lesson kind, time window) and returns ranked valid slots filtered by instructor availability + certifications, vehicle compliance + conflict checks, school business rules. The single source of truth for 'is this bookable?'
Admin booking with click-to-prefill suggestions
Pick a student, see the top 10 valid slots for the next 14 days. One click prefills the booking form with start time + instructor + vehicle. Or book manually with live validation.
Parent self-serve booking
Family sees top valid slots filtered by every rule โ instructor availability, vehicle status, conflicts, school policies. One tap to book.
AI auto-suggest at sign-off
The moment an instructor completes a lesson, the engine pre-computes top 3 next-lesson slots and surfaces them to the parent within 60 seconds. Next lesson lands while the parent's attention is still on driver ed.
Lesson series first-class
'Tuesday and Thursday at 4pm for six weeks' is one logical booking with six linked appointments. Reschedule asks 'just this one or the rest of the series?' Progress is tracked at the series level. Invoice shows the series.
Live scheduling board
Real-time admin board powered by Cloudflare Durable Objects. A booking made on the parent portal lands on the admin board within a second. Today and tomorrow at a glance, grouped by instructor.
No double-bookings
Try to put the same instructor in two places at once, or the same car with two students โ the system says no and tells you what's already there.
Smart warnings, easy overrides
Booking outside an instructor's posted hours? You'll see a warning with a one-checkbox override for the times you've worked it out off-platform.
Weather hold โ bulk cancel a day
One click marks every scheduled lesson on the chosen day as weather-hold, with reason. Families notified. Reversible per-lesson.
Capacity heatmap with gap callouts
14-day forward look on the owner dashboard with 'promote these gaps โ Tuesday afternoon is open' callouts. Underbooked days surface so you can advertise into them.
Automatic reminders
24 hours and 1 hour before each lesson, families get a friendly email. If the system retries, nobody gets a duplicate. Hands off.
Your cancellation rules
Pick your deadline, your late-cancel fee, your no-show fee, and whether families can cancel themselves. Inside-the-deadline cancellations charge the fee automatically.
One-tap no-show
Student didn't show? One button on the instructor's phone marks it, charges the fee, and updates the timeline.
In the car (instructor experience)
The instructor is the daily user whose engagement determines whether the platform lives. Every daily action works one-handed, in three taps, with poor cell signal, in the front seat of a parked car.
Today view is the app
Time, student, pickup address with one-tap maps link, vehicle, lesson number in the student's progression, current skill focus, parent phone, last lesson's notes inline. Everything you need before the next pickup, no scroll required.
BTW lesson plan auto-surfaces
For each BTW lesson the app shows the right plan from the platform's MN-aligned 6-hour progression โ controls and parking lot on lesson 1, highway on lesson 4, test prep on lesson 6. The 'what was I supposed to teach today?' problem solved.
Carry-over notes
Whatever you flagged at the previous lesson's sign-off ('work on highway merging next') shows up automatically at the top of the next appointment with that student.
Structured 15-skill BTW rubric
Tap-to-rate proficiency on the 15 universal BTW skills (pre-drive, vehicle control, lane positioning, lane changes, following distance, scanning, speed control, intersections, turns, backing, parallel parking, three-point turn, hill parking, highway, road-test readiness). Powers parent progress summaries, credential readiness, and the instructor scorecard.
Lesson notes that go somewhere
Freeform notes visible to school admin and the family. Carry-over focus for the next lesson is prefilled at the top of the next appointment with that student.
Credential readiness recommendation
When every rubric skill is at proficient and overall road-test readiness is at independent, the credential workflow surfaces the student as ready for the school admin to issue. Your rubric data drives the recommendation โ your judgment counts.
Two-ping geolocation breadcrumbs
Per-school policy (off / opt-in / required). One GPS reading at lesson start, one at lesson end. Not a tracked route, not visible to parents. Defends good instructors against false accusations and catches the 'ghost lesson' pattern that ends school licenses.
Vehicle check-out / check-in
At shift start: pick the car (compliance-blocked cars don't show up), enter start odometer, fuel level, walk-around checklist. At shift end: end odometer, fuel level, optional 'flag an issue' field that auto-takes the vehicle out of service.
Open-shift offers
When admin posts an extra lesson (or a no-show creates a gap), eligible instructors see it on their today page. Tap 'Claim shift' โ first to write wins via a single UPDATE statement so two simultaneous taps can't both win.
Substitute coverage requests
Conflict on Tuesday? Tap 'Need coverage' on the lesson. It becomes an open shift on everyone else's queue. Whoever claims it first gets it.
Cross-school identity
1099 across two or three schools? Your today view aggregates lessons from every school you teach at, badged so you see which is which. Earnings aggregate across all schools; per-school pay rules carry through.
Pay transparency every visit
Earned this period, pending payout, average per lesson โ three tiles at the top of your today page. No spreadsheet, no calling the office.
Sign off parent drives
Parents log their supervised practice drives. You verify them. Only signed entries count toward state-required hours.
Past and upcoming
Two more views โ last 30 days, next 30 days. Enough for timesheets and forward planning.
Family experience
Parents and students see the same page. One login per family even when kids are at multiple directio schools.
All your kids, all your schools, one page
If you have two kids at the same school they both show up. If you have kids at two different directio schools, they show up too โ grouped by school. One login, every child.
One timeline per kid
Enrolled โ classroom โ permit โ behind-the-wheel โ supervised practice โ road test โ certificate. With real numbers: 4 of 6 BTW hours, 30 of 50 practice hours.
Book the next lesson in one tap
After your kid's lesson, the AI engine surfaces 3 suggested next-lesson slots on your kid card. Tap 'Book' โ done. The whole no-show economics problem fixed at the source.
Cancel yourself
No more calling the office at 9:01 AM. Cancel right from /family/lessons. If you're inside the deadline, the fee is disclosed before you confirm.
Sign waivers from your phone
Type your name, tick the box, done. Or upload a PDF the school asked for. All stored alongside your kid's record.
Practice log that counts
Log each drive: date, minutes, night minutes, conditions (city / freeway / night / weather), notes. Your kid's instructor signs off in person so the state actually counts the hours. Live progress bar to your state's target.
Completion certificate
School-branded, dated, with a unique serial number. Print it, save it as a PDF, hand it to the DMV. Yours forever.
Owner dashboard
The weekly love letter. Owners log in to answer 'is this thing making me money?' If the dashboard doesn't answer in 30 seconds, it failed. Here's the surface that doesn't.
30-second health answer
Top card: revenue this period vs prior, payment count, green / amber / rose status. The owner with 30 seconds gets the answer; the owner with more time goes deeper.
Dollars-recovered story, named
Three numbers: no-show fees collected, late-cancel fees collected, total recovered. When their sum exceeds your subscription, 'is directio worth it' answers itself.
Period selector + prior-period deltas
7d / 30d / 90d / YTD. Every metric shows the comparison vs the prior period of the same length. The dashboard has memory.
Enrollment funnel + time-to-paid
Enrolled count, paid through count and percent, average duration from enrollment to first paid payment. The funnel that justifies the marketing spend.
14-day capacity heatmap with gap callouts
Day-level heat map of upcoming lessons. Gap callouts surface underbooked days: 'Tuesday afternoon is open โ promote it.'
Outstanding A/R + chase list
Unpaid payments and unpaid no-show fees, with totals and one-tap reminder actions. The operational money the dashboard surfaces so nobody hunts for it.
Compliance health
Credentials ready to issue. Students stuck in a journey state >30 days. Instructor licenses expired or expiring in 30 days. Road test pass rate. The 'what might bite me next week' surface.
Per-instructor scorecard
Completed lessons, no-show rate (colored pill), upcoming-14d count per instructor. Click into the instructor for detail.
Per-vehicle utilization
Lessons supported per period, upcoming-14d per vehicle. Identify the under-utilized car the school is paying insurance on for no reason.
Multi-location comparison
Schools with 2+ locations get a side-by-side per-location breakdown. Single-site schools see no extra noise.
Daily digest email
Optional. One email a day with revenue, recovered, payroll, lessons next 24h, new enrollments, outstanding A/R, license expiries. Comes to your phone when you don't come to the dashboard.
Customizable card toggles
Hide what doesn't matter for your school. No widget builder, no drag-and-drop โ just checkboxes. Sleek and simple.
CSV snapshot export
Full dashboard as a single CSV file for your accountant or board. One click per visit.
Fleet & vehicles
Cars constrain revenue more directly than people do. A car out for service collapses a day; expired insurance takes down a week. Auto-blockers prevent the wrong car from ever showing up on a schedule.
Full vehicle record
VIN, color, year, plate, fuel type, dual-controls flag, current odometer, status (active / in service / out of service / retired), quirks notes, photo.
Insurance + registration + safety inspection
Expiration tracking on all three with 90 / 60 / 30 / 7-day reminders. Lapse = auto-block from being scheduled. Dashboard surfaces the count.
Maintenance threshold tracking
Per-vehicle thresholds against odometer โ oil change, tire rotation. Plus a date-based safety inspection threshold. Auto-block when overdue.
Maintenance event log
Date, kind, odometer at service, cost, vendor, notes. Logging an oil change advances the next-oil threshold +5,000 mi. Tire rotation +7,500 mi. Safety inspection +1 year.
Vehicle shifts with odometer chain
Instructor checks out the car at shift start (odometer, fuel, walk-around). Checks in at end (odometer, fuel, optional flag). Yesterday's end odometer must match today's start within tolerance โ light-touch fraud and accident detection.
Mid-shift out-of-service flag
Instructor reports a problem from their phone; vehicle status flips to out-of-service automatically. Upcoming lessons reroute when possible.
Photo upload
Helps instructors and students recognize the car at pickup. Stored privately in Cloudflare R2 with auth.
Multi-location fleet
Vehicles belong to a location (in multi-location schools). The constraint engine and dashboard respect home-location.
Retirement path
Status enum preserves history when a vehicle leaves the fleet (resale, totaled, lease return). Every lesson it ever supported keeps its vehicle reference intact for audit.
Compensation & payroll
If owners are still running payroll in a spreadsheet, directio is additive โ and therefore cancellable. The financial substrate that makes the product load-bearing.
Declarative versioned compensation rules
Sibling to the state rule-pack engine. Rate types: per_lesson, per_hour, per_mile, flat_shift, no_show_stipend, weekend_differential, evening_differential. Conditions: kinds, day of week, weekend, evening. Per-instructor overrides layer on top.
Versioned, audit-defensible
Every rate change creates a new comp_rule_version. Historical lesson_payout rows keep pointing at the version they were computed against. A state audit can reconstruct exactly how each payout was built.
Computed at sign-off
The instructor's running pay number is current the moment they complete a lesson. No end-of-period accounting.
Pay period engine
School configures cadence (weekly / biweekly / semi-monthly / monthly). The engine closes each period on schedule and emits per-instructor payout drafts. Cron-driven; admins can also close early.
Payout draft workflow
Admin reviews each draft, adds an adjustment with a note (every adjustment change recorded as an event), approves, marks paid with method (Stripe / check / external payroll) and a reference number.
Adjustment audit history
Every change to a payout draft's adjustment is logged with prior value, new value, note, who changed it. Defends against silent payroll mutation.
Payroll-ready CSV per period
Per-lesson rows + adjustment + per-instructor subtotal. Direct paste into Gusto, Justworks, ADP, QuickBooks Payroll.
Year-end 1099-NEC summary CSV
One row per instructor with YTD paid total and a 'meets $600 IRS threshold' flag. Suitable input for 1099 filing software.
Tax document storage
W-9, W-4, I-9, 1099-NEC stored in audit-logged R2 with download. Per-instructor record. The school retires the payroll binder.
Instructor pay transparency
Every instructor sees every dollar they're owed, when it pays out, and the breakdown of how it was computed. No black box. Disputes filed in-app with the lesson record attached.
No-show fee engine
Per-school configurable. Auto-charges the family's authorized payment method when a no-show is logged. Instructor pay for the no-show slot follows the policy. The event lands as a clear line item.
Waitlist auto-backfill
A cancellation pushes the slot to the waitlist first; the school recovers slot revenue that would otherwise be lost. Open-shift queue for instructors picks up the rest.
State compliance
Each state has its own rules. We handle them honestly โ no marketing-page lies about coverage depth. Per-school adapter maturity is visible on page one of onboarding.
Minnesota deep; others co-built
Minnesota is the state we've gone deep on โ Blue Card credential, three GDL stages, fees, full audit trail. A handful of others (Texas, California, New York, Florida, Ohio, Illinois, Washington) have real per-state work at varying depth. Schools in every other state sign up as design partners and we co-build their state's rules with them.
Three honest maturity levels
Some states are a guided checklist (Level 1). Some include the official PDF (Level 2). Some submit directly to the DMV (Level 3). We tell you which is which โ your settings page shows your state's level with the last-verified-with-DPS date.
Adapter maturity on page-one onboarding
The school's home state's adapter maturity is the first thing they see in the onboarding checklist. Schools never discover their state's reality in week 2 anymore.
Legal-blocker disclosures
TX schools see the TDLR provider-approval note from the moment they sign up. CA schools see the DL 91 approval situation. Honest disclosure beats unwelcome surprises.
Override when you need to
Your school does it slightly differently from the default? Adjust individual rules without throwing away the rest of the state's setup.
Permit credentials
Blue Card, ITTD slip, driver-education certificate โ whatever your state calls it. Unlocks on the student's timeline when they hit the requirement. Hand it over, print it, or submit it electronically.
External credential bridging
A student arrives already credentialed by their previous school? Record the issuance, upload the proof PDF, and the eligibility engine treats it as native. No re-issue, full audit trail.
Partial-state enrollment
Hours completed elsewhere become first-class on the enrollment โ priorHoursClassroom + priorHoursBtw. The credential engine satisfies state requirements without forcing a re-do.
Public state-coverage page
Every state's current adapter maturity, last verified date, any legal-blocker notes, and what's needed to level up. Schools shopping the product see exactly what to expect.
State feature-request log
Filed requests for things states could automate but don't. Customer schools can co-sign to signal collective DPS demand. Co-signed lists carry weight in state DPS conversations.
Design-partner intake
Schools who want to push their state's adapter from Level 1 to Level 2 or 3 sign up as design partners. Product input weight, not a discount.
Road test results
Log each attempt. We calculate your pass rate and first-try pass rate. Show it on your public page โ families look at this when picking a school.
Migration & data portability
The hard part of migration isn't the file format โ it's the audit bridge. A student mid-journey under another system must finish with one defensible record. We model that.
Student CSV importer
AI-assisted column mapping (Claude figures out which header is firstName), validation preview, dry-run before commit. Idempotent: re-running the same CSV doesn't duplicate.
Instructor CSV importer
Same shape for the instructor roster. Headers recognized: firstName / lastName / fullName, email, phone, notes.
Vehicle CSV importer
Full fleet bring-over: label, makeModel, year, plate, vin, color, fuel, odometer, insurance carrier/policy/expiry, registration number/expiry. Date strings accepted as YYYY-MM-DD.
Payment ledger CSV importer
Past payments import as reference-only ledger entries. Stripe-managed payments go forward from cutover. Outstanding balances flow into the active ledger.
Provenance on every imported row
Every row carries importSource, importExternalId, importBatchId. The audit log links every imported row back to who imported them and when. Schools auditing the migration can reconstruct.
'From previous system' badges
Imported student records show a visible badge above the enrollments section so admins always know the migration status at a glance.
External instructor attribution
Imported BTW hours preserve the original instructor's name and license number when that instructor isn't a directio user. The audit trail records who actually taught, not just who imported.
Symmetric exporter on day one
A school can leave with their entire data set in the same CSV shape they imported with. Seven entities (students, guardians, enrollments, appointments, instructors, vehicles, payments). Trust signal + anti-lock-in.
White-glove migration for the first cohort
The first N customer migrations are run as a paid service by the directio team. Surfaces the edge cases that productize the self-serve importer; removes friction from the most important early conversions.
Back office
The unglamorous tools schools actually open every day. Imports, paperwork review, fees, branding, the works.
Paperwork review queue
Every signed waiver, every uploaded form, in one list. Approve, reject (with a reason for the record), or send it back for review.
Late-cancel and no-show fees
Pending, paid, waived โ three tabs. Headline tiles show how much is outstanding. One click to mark paid or waive.
Branded public page
Flip a switch and your school gets a real marketing page at /schools/your-slug. Tagline, about copy, programs, checkout โ your brand throughout.
Your logo, your colors
Set your brand color, upload your logo, pick a custom font. Every page your families see looks like your school, not ours.
Locations management
Multi-location schools manage their addresses, scope vehicles + instructors to locations, see per-location utilization on the dashboard. Single-location schools ignore this entirely.
Instructor credential tracking
State license, jurisdiction, expiration. Background check completion + expiration. Continuing-ed hours YTD against annual requirement. Reminders at 90 / 60 / 30 / 7 days; auto-block on lapse.
Onboarding checklist
Add an instructor. Add a car. Pick your state. Install lessons. Connect your bank. Tick each box and you're operating. Your state's adapter maturity is the first card.
Audit & accountability
Every compliance-relevant action, credential issuance, payout approval, vehicle status change, instructor sign-off is recorded. And readable.
Audit log viewer
Newest-first list of every recorded event with cursor pagination. Filter by action, entity type, entity id. Click any entity to scope to that exact record's history.
Per-event payload
Each event has its JSON payload pretty-printed in a details disclosure. State audits and IRS inquiries can reconstruct what happened, who did it, when.
Tax-doc access audit-logged
Every W-9 / W-4 / I-9 / 1099 upload, download, and delete is recorded. Compliant document workflow without a paper binder.
Geolocation breadcrumb storage
When school policy enables it, every BTW lesson sign-off captures a two-point GPS evidence trail. Stored on the appointment with the rest of the audit data. Same retention as the lesson.
Audit log of import batches
Every CSV import records the batch id with inserted + skipped counts. Audit query reconstructs every row brought in from every source system.
Find your way
When your student needs to find the nearest DMV or get an answer about the Blue Card at 9pm, it's all in the app.
Map-based BTW finder
Family enters their ZIP. They see your school's step-by-step flow plus the nearest testing centers, partner schools, and DMV offices on a map.
Fill in your local directory
Empty directory for your state? Click 'enrich' and we'll surface verified candidates you can vet and publish.
Your own steps
Build your school's behind-the-wheel flow with whatever steps fit: instructions, finding a place, external link, upload a doc, make a payment.
AI help that knows your school
Families ask questions in plain English. Answers pull from your school's help articles and the platform library โ so 'when do I get the Blue Card?' gets a real answer.
Listen instead of read
Long help answers can be read aloud โ handy for parents driving or students with reading challenges.