Roadmap

What is coming.

Timing is intentionally rough. We commit to direction, not dates.

Shipped

· 13 items
POS Shipped May 2

POS Phase 1: Inventory foundation with catalog/shop column separation

Phase 1 of the POS surface: inventory data model with the catalog/shop column-pair pattern (catalog_* fields are overwritten by nightly distributor sync, shop_* fields are never touched), an InventoryService for CRUD, manual receiving, and a basic inventory report. This is the architectural foundation for everything that follows — walk-in register (Phase 2), parts on appointments (Phase 3), sales reports (Phase 4). Designed to make the Lightspeed Retail / Ascend RMS bug pattern (where shop-defined specifics get reset by catalog updates) structurally impossible. Shipped May 2, 2026.

Reliability Shipped May 6

Nightly automated backups

Your tenant data is backed up every night to encrypted offsite storage. Retention runs for 30 days, so you can recover from accidents up to a month back.

Calendar Shipped Apr 26

Week and month calendar views

Sunday-anchored week with per-resource swimlanes; month view as a density grid. Click to drill into day view.

Inventory Shipped May 2

POS Phase 2: Cashier register

A point-of-sale register surface for ringing up customers. Builds on the inventory and receiving foundation that just shipped. Includes: • Add items to a cart by scanning, typing, or browsing • Attach the sale to a customer (optional, useful for warranty) • Calculate tax • Show running totals and per-line subtotals • Hold and resume sales (multiple in-progress carts) • Refunds and voids with audit trail • Receipts (email and print) Payments via Stripe Connect ship in Phase 3, after the rest of the register is solid.

Quotes Shipped May 6

Quotes dashboard

Pipeline, aging, conversion rate, and weekly volume on one page.

Register Shipped May 6

Combined refunds and exchanges

Refund and new-sale lines in one transaction, with linked rows in transaction history.

Register Shipped May 6

Transaction history view

Every cart, sale, refund, draft, and quote in one filterable list.

Booking Shipped Apr 26

Race-safe booking engine

When two customers try to book the same time at the same instant, exactly one wins and the other gets told the slot is taken.

Customer Shipped Apr 26

Customer cancellation flow

Customers cancel via a signed link in their confirmation email — no login required, one tap on mobile.

Workflow Shipped Apr 26

Reports

Real reports for revenue, repeat customers, and resource utilization. Built around the questions shop owners actually ask.

Classes Shipped May 7

Memberships and packs

Class memberships and class packs with cancellation refunds, monthly period rollover, and pack expiry. Admin grant flow with one-active-only enforcement.

Customers Shipped May 7

Customer activity timeline

Unified customer detail page showing every event: appointments, POS sales, class registrations, and pack/membership grants. Grouped by month with filters.

Classes Shipped May 7

Class drop-in via register

Take cash payment for a class drop-in through the POS register. Customer auto-registers on sale completion.

In progress

· 5 items
Mobile ~1.5 hr

Inventory mobile polish

Inventory list, receiving, and stock-state views still render as desktop on phones. Bringing them up to the same standard as Customers and Schedule.

Reliability ~3 hr

Routing refactor — finalize custom domain support

The custom domain feature serves traffic correctly but the "Manage" button on a domain's detail page 404s due to a routing conflict with subdomain hosts. The fix removes the legacy subdomain parameter from the routing layer entirely — tenant identity already lives in middleware. About 200 files touched, mechanical refactor. Single combined patch with lint sweep and rollback path.

Reliability ~1.5 hr

Certificate validation records in UI

Cloudflare for SaaS requires two sets of DNS records — one to verify domain ownership (already shown in UI) and a second set for the certificate authority. Today tenants who add the first set but not the second see their domain stuck in verifying forever. The fix surfaces the second set in the same UI with copy buttons. Walked through manually on the first real custom domain; needs to be in the UI before any real tenant onboards.

Payments 3-5 days

Customer payments: Stripe Connect for taking payments at booking or completion

Tenants will be able to take payment from their customers at booking or at completion via Stripe Connect. Refund flow is part of the same surface — process refunds from the appointment view without leaving the admin. Four sub-decisions still being scoped: • Standard, Express, or Custom Connect account type • Platform fee structure (or pure pass-through) • Required at signup, or progressive after first booking • Per-tenant opt-out for cash-only shops Estimated build: 3-5 days after scoping is complete. This is the load-bearing item between now and our first real paying customer.

Stripe In progress

Take payments from your customers

Stripe-powered checkout right inside Intake. Charge at booking or at pickup, refund with one click, no separate POS or invoicing tool needed.

Next up

· 12 items
Payments Next 1–2 weeks

Take payment from your customers at booking

Right now, you can't collect payment from your customers through Intake — only your subscription to Intake itself goes through Stripe. We're building Stripe-powered checkout so customers can pay you directly when they book or when you mark a job complete. Refunds will work the same way.

Calendar Next up

Drag to reschedule

Move an appointment by dragging it to a new time slot. Conflict warnings if you drag onto something busy.

Calendar Next up

Capacity page redesign

Cleaner closed-day handling, per-resource capacity overrides, smarter defaults that match how shops actually run.

Stripe 3 days

Stripe addons: Buy add-ons from inside your billing portal

Tenants will be able to add or remove paid add-ons (offline sync, Bike Pack distributor sync, etc.) directly from the billing portal. Today add-on management is admin-only; this opens it up to self-service. Estimated build: 3 days. Sequenced after customer payments because both reuse the same Stripe Connect onboarding flow.

Register Coming soon

Refund this sale shortcut

One-click refund from any paid sale in transaction history. Loads the refund picker pre-populated.

Stripe 2 days

Master admin billing dashboard: MRR, dunning, churn at a glance

A dedicated billing view for master admin showing MRR by tier, dunning queue (cards that failed, awaiting retry), recent churns with reason codes, and a per-tenant subscription snapshot. Most of the data is already on Stripe — this surfaces it inside Intake without needing to context-switch. Estimated build: 2 days.

Stripe 2 days

In-app plan change: Change your plan from inside Intake (no Stripe portal hop)

Today plan changes go through the Stripe customer portal, which means leaving Intake. We are moving plan changes back inside the admin — when you upgrade from Starter to Pro, you see the comparison, the prorated charge preview, and confirm without leaving your shop. Estimated build: 2 days.

Customer 2 days

Customer cancellation: Cancel via signed-URL link, no login required

Class registration cancellation is already shipped via the customer portal. Appointment-side cancellation needs the same treatment: a signed-URL "Manage appointment" link in the confirmation email, a two-state landing page (still cancellable / past cutoff), confirm modal, and tenant admin settings for the cancellation window. Estimated build: 2 days.

AI 30 minutes

AI Quick Setup hardening: Anthropic tool-use API for guaranteed JSON shape

The current AI Quick Setup uses a system prompt that describes the JSON schema and a defensive parsing layer to catch the occasional model typo. The Anthropic tool-use mode enforces JSON shape at the protocol level — the model literally cannot return malformed output. Estimated build: 30 minutes. No user-visible change; eliminates a class of edge-case failures.

Dashboard 1 hour

Mode-aware attention card labels

Today the "Pending bookings" card on the dashboard reads as appointment-shop language. For drop-off shops the booking is confirmed — the item has not arrived yet. We will split labels per mode: "Awaiting drop-off" for drop-off shops, "Pending bookings" for time-slot shops. Same data, accurate framing. The same audit applies to "Ready for pickup" and "Stale pickups" — phrasing should match how each shop type actually thinks about the work. Estimated build: 1 hour.

Pricing 1.25 hours

Real pricing: $29 / $79 / $199

Swap placeholder pricing for real launch pricing: $29 / $79 / $199 monthly, with 10x annual pricing for the discount. Update Stripe products plus the public pricing page. Estimated build: 1.25 hours including the self-QA Loom recording walkthrough.

Infrastructure 1 day

Test coverage: enum boundaries, status transitions, payment paths

Today (April 30) shipped a one-letter typo in the onboarding wizard that blocked two tenants from logging in. A single integration test asserting that the wizard booking-step save persists a value the schema accepts would have caught it pre-deploy. We are not building a full suite — just the high-blast-radius paths: wizard step writes, status transitions on appointments and class registrations, payment_status flips. The contract assertions that catch typo-class bugs. Estimated build: 1 day.

Considering

· 6 items
Customer

Lead and abandoned-booking recovery

Capture customers who started a booking but did not finish, plus a unified lead inbox for inquiries that come from outside the booking flow.

Customer

Unified messaging inbox

SMS and email conversations with customers in one threaded view. Twilio-backed.

Workflow

Migration helpers

Import customers and history from Acuity, Square, Mindbody, Vagaro, and CSVs. Wave-based imports so you can preview before committing.

Quotes Later this year

Email quotes to customers

Send a polished quote PDF straight to the customer with one click. Especially valuable for shops doing custom builds, bridal packages, or higher-ticket service work.

Platform Later this year

Industry packs

Tailored defaults and feature visibility per industry — yoga studios see class management, bike shops see custom quotes, salons see appointment booking, and so on.

Booking When customers ask

Match services to specific staff or stations

Today, any active resource can perform any service. We're considering an admin-side mapping so a tenant could specify "only Maya does color treatments" or "frame service is only at the back bench." Most useful for shops with specialized staff or equipment. We'll build it when a customer asks.