Skip to content
All work

Care operations

Tiny Staffing

Weekly scheduling for a therapy center: provider grids, caseloads and booking links for parents.

In useNo public link

A therapy center's week is a grid of thirty-minute sessions across many providers and many children. Tiny Staffing replaces the whiteboard.

Providers see their own week, the office sees everyone's, and parents choose times from a texted link without creating an account.

Status
In use at the center it was built for. No public site.
Stack
Next.js, Convex, Tailwind

Why it exists

Parents need to book therapy times from a phone without calling the office, making an account or installing anything. Office staff and therapists need to see the result on the schedule.

Classroom seats and expiring medical paperwork used to be tracked by hand across spreadsheets. Here they live in one record with filtered views.

Try it

Pick up a child, then move or swap. Conflicts are refused. This is an illustrative prototype built for this site with fictional data, not the product itself.

Shift board · Illustrative prototype · fictional data

One run through it

  1. Open the case

    An admin creates a referral, then schedules the child directly or sends the family a link.

  2. The parent books

    From that link, a parent picks one therapist and the required times on different days.

  3. It lands on the grid

    The booking shows up amber on the therapist's week. Marking it started turns it green.

  4. Plans change

    Reassign moves a booked child to a new therapist or new times in one step. The status carries over, and no parent gets a surprise notification.

What it does

  • Provider week grid

    Monday to Friday, eight to four, in thirty-minute cells, one grid per provider.

  • Move and swap

    Pick up a child and every cell says what would happen: move here, swap, or blocked. The server rejects same-day doubles and overlapping services.

  • Case lifecycle

    Link sent, waiting, authorized, started. The caseload view shows where every child is.

  • Blocked time

    Lunch, paperwork and unavailable slots, with office-set groups locked.

  • Parent booking links

    A family picks a therapist and times on different days from one link.

Why it's built this way

  • One set of booking rules

    Staff and parents book under the same rules, so a reassign can't produce a grid that a parent booking couldn't.

  • Removing isn't deleting

    Taking a session off the grid reopens the cell and keeps the case assigned. Only admins can delete a child.

  • No parent accounts

    A family gets a link, picks times and is done. There's no login to forget.

How it fits together

  1. 01A Next.js web app with a Convex backend; scheduling conflicts are checked on the server, not just in the browser.

In plain terms

Mandate
How often a child is authorized to be seen. "2×30" means two thirty-minute sessions.
Caseload
The children a therapist is responsible for.
Clearance
Whether a child is authorized and medically current to hold a classroom seat.