medical-booking
Clinics, providers, patients, insurance plans. Appointments respect business hours, provider specialty, and patient timezone.
- · clinics
- · providers
- · patients
- · appointments
- · insurance_plans
- appointments only land in provider working hours (clinic.tz aware)
- no two appointments overlap for the same provider
- insurance_plan_id is consistent with patient.state
- patient names reflect realistic demographic mix by clinic locale
| column | sample |
|---|---|
| patients.full_name | Marisol Aguirre-Velez |
| patients.dob | 1984-07-19 |
| appointments.starts_at | 2026-06-04 14:30 America/Denver |
| providers.specialty | Family Medicine |
e-commerce
Stores, products, variants, inventory, orders, line items, reviews with realistic prose and pricing that adds up at the order level.
- · stores
- · products
- · variants
- · orders
- · order_items
- · reviews
- order_items.unit_price × quantity sums to orders.subtotal
- variants.sku is globally unique and matches product.category prefix
- reviews.body avoids the words "awesome" and "great product"
- inventory.on_hand never goes negative across fulfilled orders
| column | sample |
|---|---|
| products.title | Cedar Plank Cutting Board, 18" |
| variants.sku | KIT-CB-CDR-18 |
| orders.subtotal | $84.50 |
| reviews.body | Heavier than I expected—in a good way... |
saas-subscriptions
Orgs, users, role membership, plans, subscriptions, invoices, usage events that actually reconcile against the billed amount.
- · orgs
- · users
- · memberships
- · subscriptions
- · invoices
- · usage_events
- every org has exactly one user with role = 'owner'
- subscriptions.status follows a legal lifecycle (trialing → active → past_due → canceled)
- invoices.amount = plan.base + sum(usage_events in period × unit_price)
- usage_events distributed on a Poisson curve, not uniformly
| column | sample |
|---|---|
| orgs.name | Northbeam Analytics |
| subscriptions.status | active |
| invoices.amount | $248.00 |
| usage_events.event_type | api.request |
fork a profile, or write one in an afternoon.
A profile is a markdown brief plus a JSON manifest. No DSL, no plugin API. Copy the closest official profile into ./satus/profiles/, change the tone notes, add or remove tables, and commit it like any other file.
Community profiles for legal, real estate, and logistics are on the roadmap—pinned by user demand, not by us guessing. Open an issue with your CREATE TABLE statements and we’ll triage.