ABA Operations Platform · MVP Plan v1.1

The operational connective tissue for ABA therapy agencies

Agencies lose time, revenue, and people in the gaps between their CRM, EMR, HR tools, and spreadsheets. This platform owns those gaps — intake, recruiting, credentialing, staffing, and utilization — on a single map-and-matching data model.

Operations Map · Able Stars

live

2 staff with capacity within a 20-min drive of C1

clientopenpartialfull

$8B

US ABA services market (2025)

77–103%

Annual staff turnover in the industry

~$500K

Recovered per year at one pilot agency*

6–7 mo

To a genuinely usable MVP

*100-client agency, moving utilization 85% → 92%. Measurable in the agency's own billing data.

The problem

The money leaks out in the gaps

An ABA agency runs on four disconnected systems. None of them talks to the others, so coordination lives in spreadsheets, inboxes, and someone's memory. That's where clients stall, staff churn, and authorized hours go undelivered.

Leads & intake

CRM

New referrals arrive, then stall with no owner

Clinical & billing

EMR

Where sessions live, invisible to ops

Hiring & credentials

HR tools

Expirations and enrollments tracked by hand

Everything else

Spreadsheets

Staffing, utilization, waitlists, the glue

The gaps are where the money leaks

6–9 mo

Payor credentialing timelines

Enrollment often takes 90–180 days and directly gates when a new hire can bill. Untracked, it silently delays staffing.

$15–25K

Cost to replace one therapist

With turnover running 77–103% annually, every stalled applicant and mis-staffed case compounds into real replacement cost.

Every %

Of utilization is money

Payors approve fewer hours and track how you use them. Authorized-but-undelivered hours are revenue that quietly evaporates.

One platform can own those gaps — the connective tissue the four tools never had.

The platform

Three connected modules, two cross-cutting systems

One platform, one data model. It sits beside the EMR — not on top of it — and owns the operations the EMR was never built to run.
  1. 01

    Client Pipeline

    Lead → Active Client

    Nine configurable stages with auto-generated task checklists. Every client has exactly one stage, one owner, one next action, one due date — always.

    • Needs profile captured early: location, payor, hours, language, availability, setting
    • Lead entry via manual add, web form, and referral-source attribution
    • Stall alerts when a record stops moving; disqualification tracking with reasons
  2. 02

    Staff Pipeline

    Applicant → Full Caseload

    Nine role-based stages (RBT vs BCBA) with a live credential matrix — certifications, licenses, and payor enrollments with expiration and renewal alerts.

    • Availability profile: days/times, geography, travel radius, setting, languages, max hours
    • Parallel task support — credentialing and training run concurrently
    • Bottleneck reporting: average days per stage, stuck records surfaced
  3. 03

    Case Management

    The retention engine

    Cancellations, reauthorizations, eligibility, and utilization — each a workflow that generates tasks with owners, not just a report that generates worry.

    • Reauth task chains auto-fire at 60 / 45 / 30-day lead times with a runway dashboard
    • Utilization tracked as authorized vs scheduled vs delivered, per client / staff / CPT
    • Delivered hours reconciled against the EMR billing export, not self-reported
  4. 04

    Matching Engine

    Connective tissue

    Connects client needs to staff capacity as early as possible in both pipelines — a weighted match score across geography, availability, credentials, payor, language, setting, and hours.

    • Bidirectional: a qualified client surfaces matching staff; a new hire surfaces unstaffed clients
    • Triggers recruiting when demand has no supply, and surfaces the waitlist when supply appears
    • Suggestions with human confirmation only — never auto-assignment
  5. 05

    Operations Map

    The daily driver

    A geographic staffing view — the primary day-to-day tool. Client and staff pins, color-coded by stage and schedule fullness, with radius and drive-time search.

    • Layer toggles: client stages, staff stages, credential status, payor enrollment
    • Drive-time isolines — every staffer within 20 minutes' drive of a client address
    • Role-gated address precision, real-time refresh, full audit trail on every pin surfaced

The platform owns the connective tissue. The map and the matching engine are the same capability viewed two ways — visual and algorithmic — sharing one spatial data model.

Operations map · the daily driver

One spatial model, rendered as layers

MapLibre GL JS rendering AWS Location Service tiles — everything under a single AWS BAA, so no third-party map vendor ever touches PHI. It's the tool users open every day to staff cases.
Base map — AWS Location Service tiles
Drive-time isolines — reachability polygons
Client pins — colored by pipeline stage
Staff pins — colored by schedule fullness
  • 01

    Radius & drive-time search

    Every staffer within X miles — or within X minutes' drive — of a client address. Drive-time uses AWS CalculateIsolines, rendered as a reachability polygon, matched against staff points with PostGIS ST_Within.

  • 02

    Data-driven color coding

    Clients colored by pipeline stage; staff by schedule fullness — open, partial, full. See supply and demand geography at a glance.

  • 03

    Role-gated precision

    Users without exact-address permission receive coordinates jittered to zip-centroid level — enforced server-side, never in the browser.

  • 04

    Real-time, audited

    Laravel Reverb WebSockets push thin 'record changed' signals; the client refetches through the authenticated API so RBAC and audit logging happen on exactly one path.

Clients by stage

New / early stageIn staffingActive client

Staff by fullness

Open capacityPartial loadFull caseload

Matching engine

Matching is the same capability, viewed algorithmically

PostGIS spatial queries over staff and client points, filtered by availability, credentials, payor enrollment, language, and setting — then scored by a weighted sum whose weights each tenant can tune. One data model powers both the map and the match.

Weighted match score

Σ 100%

  • Geography / travel time26%
  • Availability overlap22%
  • Credential & payor fit20%
  • Hours fit14%
  • Language10%
  • Setting8%

Illustrative weights — admin-configurable per tenant. The engine is a weighted sum, not a black box.

Demand with no supply

A qualified lead with no viable staff notifies recruiting — a real demand signal, early.

New supply appears

A new hire in an area surfaces waitlisted clients who were waiting on exactly that coverage.

Capacity opens up

An authorized-hours increase surfaces staff with room to take it — before the client stalls.

Phase 3

Phase 3 upgrade: geography scoring switches from raw distance to drive-time polygon containment — reusing the exact isoline infrastructure built for the map.

The pipelines

One stage. One owner. One next action.

Both pipelines are nine configurable stages backed by state machines (spatie/laravel-model-states). Entering a stage auto-generates its task checklist. Nothing sits without an owner and a due date.

Client Pipeline

RBT & BCBA agnostic
  1. 1
    New Lead
  2. 2
    Contacted
  3. 3
    Intake
  4. 4
    Insurance Verified
  5. 5
    Assessment
  6. 6
    Auth Received
  7. 7
    Staffing
  8. 8
    Scheduled
  9. 9
    Active Client

Staff Pipeline

Role-based templates
  1. 1
    Applicant
  2. 2
    Screening
  3. 3
    Interview
  4. 4
    Offer
  5. 5
    Onboarding
  6. 6
    Credentialing
  7. 7
    Payor Enrollment
  8. 8
    Training
  9. 9
    Full Caseload

The template engine is a small BPM system

Admin-configurable task chains with owners, offsets, and dependency chains — data-driven from day one. It's one of the two things deeper than it looks (multi-state credentialing rules is the other), and it's why the estimate carries buffer.

Case management

Tasks with owners, not reports with worry

The defensible difference: when utilization drops or coverage terms, the platform doesn't just show a red number — it generates a task, assigns an owner, and tracks the recovery.

Cancellations

01

Reason codes, makeup-session tracking, and pattern detection that escalates when cancellations cluster.

Reauthorizations

02

Auth records per CPT code, task chains auto-triggered at 60 / 45 / 30-day lead times, and an auth-runway dashboard with a red-flag threshold.

Eligibility

03

Recurring monthly checks logged with document attachment; termed coverage escalates to a pause-billing flag and a family-outreach task.

Utilization

04

Authorized vs scheduled vs delivered hours — per client, per staff, per CPT. Below-threshold conditions generate owned recovery tasks.

Session reconciliation

05

Recurring CSV import of delivered sessions from the EMR (CentralReach format first), so delivered hours come from the billing source of truth, with discrepancies flagged as tasks.

Utilization, three ways

0–100 scale
Authorized100%
Scheduled94%
Delivered86%

14 pts — the Authorized–Delivered gap is recoverable revenue.

Authorized is what the payor approved. Scheduled is what's on the calendar. Delivered is what the billing export confirms. The gap between them is recoverable revenue.

Auth runway

days to expiry
  1. 60 days

    Reauth packet task created

  2. 45 days

    Follow-up + escalation

  3. 30 days

    Red-flag threshold

  4. 0 days

    Auth expires

Task chains fire automatically as the authorization end date approaches.

Technical architecture

Built HIPAA-first, multi-tenant from day one

A Laravel API and a server-rendered Next.js front end, on a PostGIS-enabled Postgres, entirely inside a single AWS BAA boundary. Even the first deployment is multi-tenant — retrofitting tenancy into a live PHI product costs far more than carrying it from the start.
01

Backend

  • Laravel APIAPI-only, no Inertia
  • Sanctum cookie authhttpOnly, Secure, SameSite — no tokens in localStorage
  • stancl/tenancyDatabase-per-tenant for hard PHI isolation
  • spatie/laravel-permissionRBAC with PHI minimization by role
  • spatie/model-statesState machines for both pipelines
  • PostgreSQL + PostGISOn RDS, spatial from day one
  • Field-level encryptionPHI columns, per-tenant keys via AWS KMS
02

Frontend

  • Next.jsPHI rendered server-side
  • Proxied API callsThrough Next route handlers — tokens never reach client JS
  • MapLibre GL JSTiles + geocoding from AWS Location Service
  • Laravel ReverbSelf-hosted WebSockets, inside the BAA boundary
03

Hosting

  • EC2 / ECS FargateLaravel via Forge or containers
  • Amplify HostingNext.js, or ECS alongside the API
  • S3 (SSE)Documents, per-tenant key prefixes
  • SESEmail — no PHI in message bodies
  • Secrets Manager / SSMNo secrets in env vars or build config

One BAA boundary

AWS covers RDS, S3, SES, EC2/ECS, KMS, CloudWatch, and Location Service under a single BAA. Only coordinates — never identity — leave for map tiles and isolines. BoldSign (e-signatures) and, later, Twilio (SMS) are the only additional signed-BAA vendors.

Database-per-tenant

Automated provisioning creates a database, runs tenant migrations, seeds default templates, and generates a tenant KMS key alias. A central DB holds only tenants, user mappings, and billing — nothing PHI. Row-level security is a second isolation layer even inside a tenant database.

Security controls

  • MFA required for all users; session auto-logout
  • PHI scrubbed in Laravel log processors before anything reaches CloudWatch
  • No PHI in SES bodies or WebSocket payloads — events carry record IDs only
  • Audit trail on PHI reads, not just writes — including list views and map surfacing
  • Encryption at rest (RDS, S3 SSE) and in transit everywhere
  • BAAs signed with every PHI-touching vendor before go-live

Build plan

Six to seven months to a usable MVP

Sequenced on the PRD's MVP 1/2/3 phasing, with the map pulled into MVP 1 given its priority. Durations assume one primary developer with AI-assisted tooling and part-time review.
P0

Foundation

3–4 weeks

Tenancy, auth, audit, encryption, CI/CD, geocoding, and the Reverb WebSocket layer.

  • Tenancy scaffolding + automated provisioning flow
  • Sanctum cookie auth through the Next proxy; RBAC matrix
  • Audit infrastructure, PHI log scrubbing, KMS encryption
  • AWS infra, CI/CD, secrets management
  • Geocoding pipeline (address → PostGIS point)
  • Laravel Reverb: private channels, thin-signal convention
P1

Pipelines & Map

7–9 weeks

Both pipelines, the operations map with drive-time search, basic matching and dashboards.

  • Client & staff pipelines: stages, state machines, task templates, alerts
  • Credential matrix + availability profiles
  • Operations map: pins, color coding, layers, radius + drive-time search
  • Manual match suggestions on client and staff records
  • Basic dashboards + CSV import for both pipelines
Milestone:Pilot agency runs intake and recruiting in the platform, staffs cases from the map.
P2

Case Management

6–8 weeks

Authorizations, reauth chains, cancellations, eligibility, utilization, and the reconciliation importer.

  • Authorization records + reauth chains with runway dashboard
  • ScheduleBlock & Session models; cancellation workflow
  • Session reconciliation importer (EMR CSV → matched against schedule)
  • Eligibility checks + escalation on termed coverage
  • Utilization tracking with auto-generated recovery tasks
Milestone:Active clients managed end to end; utilization metric live and reconciled against EMR data.
P3

Automation & Config

4–6 weeks

Event-driven match triggers, configurable weights, isoline-based scoring, the admin template editor, and referral sources.

  • Event-driven match triggers + notifications
  • Configurable match-score weights
  • Isoline-based geography scoring (drive-time containment)
  • Admin template editor — built last, once usage stabilizes the model
  • Referral-source pipelines + export tooling
Milestone:Match automation live; admins edit templates in-app; referral pipelines tracked.

The 4–5 month figure is the good case, not the plan. The main uncertainty drivers are the workflow/template engine (a small BPM system) and multi-state credentialing rules — both deeper than they look. Buffer added for BAA paperwork, compliance review, and pilot feedback.

Market opportunity

A fragmented market, actively spending on operations

The services market is large and growing, but the more relevant number is the software segment — growing more than twice as fast, in a market where thousands of small agencies can't build their own tools.

ABA practice-management software

Source · Verified Market Research

2024 → 2032
$1B$500M$0$456M020242032
Projected to more than double — over 2× the growth rate of the services market.

Services market

0

US ABA services market (2025)


Steady single-digit growth; CDC now estimates 1 in 31 children.

10–15%

Market share held by the top 10 providers

The majority of agencies are small operations under $5M in annual revenue — underserved operationally by enterprise EMRs and unable to build internal tooling.

77–103%

Annual staff turnover

Staff pipeline value

6–9 mo

Payor credentialing timelines

Credentialing workflow value

Fewer hrs

Payors approving & tracking utilization

Utilization engine value

Positioning

Beside the EMR, not on top of it

Incumbents — CentralReach, Rethink, Artemis — own the EMR and clinical layer. None owns the operational connective tissue as the product. Sitting beside the EMR lowers switching cost dramatically: agencies keep their EMR.

  • 01

    The matching engine

    Early, bidirectional matching that no EMR treats as the product.

  • 02

    The utilization workflow engine

    Tasks with owners, not reports — the number agency owners feel directly.

  • 03

    The map

    The daily driver that gets users into the platform every single day.

The ROI math

After the pilot, sales is arithmetic

Unlike most software ROI claims, this one is measurable in the agency's own billing data. The pilot's job is to prove the number once.

Recovered per year

$510K

Moving a 100-client agency from 85% to 92% utilization at $70/hr$509,600, measurable in the agency's own billing data.

92%
85% baseline100%
Billed rate
$72,800/point
01

104,000

Authorized hours / year

100 clients × 20 hrs/week

02

$60–80/hr

Billed rate (direct treatment)

Typical range

03

$65–80K/yr

Per point of utilization

Recovered revenue

04

~$500K/yr

85% → 92%

Directly in the billing data

A 100-client agency at 20 authorized hours/week has ~104,000 authorized hours per year. At $60–80/hr, each percentage point of utilization improvement recovers roughly $65,000–80,000 annually.

Pricing & revenue

Aligned pricing, strong margins

Per-active-client pricing aligns platform revenue with agency growth. Against the ROI math, a full contract is trivial — and defensible next to existing CentralReach spend.

Base platform

$500–1,000

/mo base platform fee by tier

Usage

$10–20

/active client / mo

Annual contract value

$20K–35K

annual contract value for a 100-client agency

A full $20K–35K contract sits against ~$500K recovered a year — the price is a rounding error on the return.

Revenue at modest penetration

At ~$20K–35K average ACV. Fifty customers against thousands of addressable agencies is a modest penetration assumption. Near-term goal: $500K–1M ARR within 2–3 years of commercial launch.
Primary

Small & mid-size agencies

30–200 active clients, spreadsheets + an EMR. Highest pain, fastest cycles, most numerous.

Secondary

Multi-entity & multi-state operators

The worst version of the coordination problem — and higher ACVs. The architecture is built for them from day one.

Later

Private equity roll-ups

574 PE-owned centers across 42 states inherit fragmented ops. The largest single-account opportunity — targeted once references exist.

Post-MVP roadmap

From tracking to predicting

The MVP proves the model with the pilot. The post-MVP roadmap turns it into a product that wins the broader market — in three waves, each built on the data the MVP accumulates.
  1. Wave 1Months 7–12

    Integrations & Automation

    Removing manual work the MVP still tolerates.


    • Clearinghouse eligibility API — automated monthly verification
    • EMR session sync — CSV upgrades to scheduled / API sync
    • Job-board integrations (Indeed, Apploi) into the staff pipeline
    • SMS notifications via Twilio (BAA required)
    • Deeper payor-enrollment workflow + formal waitlist module
  2. Wave 2Months 12–24

    Intelligence Layer

    Moving from tracking to predicting.


    • Auto-ranked matching with slot-level schedule optimization
    • Utilization forecasting — supply/demand curves by region
    • Turnover-risk signals on staff records
    • Payor-audit reporting packs from the existing audit trail
    • De-identified peer benchmarking (a moat that grows with scale)
  3. Wave 3Year 2+

    Platform Expansion

    Becoming the operational system of record.


    • Scheduling engine with two-way calendar sync
    • Referral-partner portal with nurture automation
    • Family portal — schedule visibility, document signing
    • Enterprise & roll-up features for multi-agency operators
    • SOC 2 Type II certification for enterprise sales

Go-to-market

Prove it once, then let referrals compound

ABA is a tight, relationship-driven industry. Referrals, industry groups, and conferences outperform cold outreach — but only after the pilot produces a documented before/after number.

The sequence

  1. 1

    Pilot

    Months 0–8

    Able Stars live on the platform, with baseline metrics instrumented before launch. Without baselines, the improvement claims are unprovable.

  2. 2

    Case study

    Months 8–11

    Documented before/after numbers from the pilot, packaged as the core sales asset.

  3. 3

    Design partners

    Months 10–16

    Two to three agencies at discounted pricing — ideally in different states to pressure-test multi-state templates.

  4. 4

    Expansion

    Ongoing

    Referrals, industry Facebook & WhatsApp groups, and conferences (ABAI, CASP). Plan for 2–4 month sales cycles.

Commercial risks

  • Data-entry burden

    Every workflow must be faster than the spreadsheet it replaces, or adoption dies. Session reconciliation is the structural mitigation for the highest-risk data — the platform pulls delivered sessions in rather than demanding double entry.

  • Single-pilot bias

    Able Stars' workflows may not generalize. Configurable templates are the mitigation — treated as a hard requirement, not polish.

  • EMR encroachment

    CentralReach could build more ops features. Speed and focus are the counter; the wedge is being the ops layer for agencies on any EMR.

  • Reimbursement pressure

    Medicaid rate cuts squeeze margins — tighter software budgets, but greater urgency for efficiency. The ROI framing must lead every conversation.

Immediate action items

  1. 01Instrument Able Stars baseline metrics now, before any build completes
  2. 02Get a sample CentralReach session export to build the importer against the real format
  3. 03Verify BoldSign BAA coverage; begin AWS BAA paperwork
  4. 04Draft the RBAC permission matrix — who sees exact addresses, PHI fields, and approves stage transitions