AI-powered markdown · office builder
Build your practice in plain markdown. No consultants. No clunky platform circus.
HeyDental’s office builder is a readable file grammar — office.md, site.md, forms, media, and the insurance center. Highly customizable. Fully DIY. When you’re stuck, ask the help agent.
Open admin playground Browse every builder
Playground = read-only experiment admin. No login. Banner on every screen: This is heydental admin experiment area. Edits and saves are blocked.
The problem
Dental platforms got clunky. Customization got expensive.
Most practice software hides the truth behind wizards, module SKUs, and “implementation partners.” You wanted a schedule and an intake form — you got a six-week project.
- Clunky by design Nested settings, mystery toggles, and screens that only make sense after training. Staff stop changing anything.
- Consultants as a tax “Highly configurable” usually means someone else configures it — for a fee — then disappears when you need a Saturday hour change.
- Your practice, their schema Rigid templates. Insurance bolted on. Public site somehow a different product. Nothing is one readable source of truth.
Our answer
One markdown bundle. Your portal. Your public site. Your insurance desk.
Write (or generate) the files. Load them. The runtime renders admin + patient surfaces from the same grammar. Change the file — change the practice.
- Fully DIY Author in the generate studio or paste into companion chat. No sales call to unlock a field.
- Highly customizable Hours, staff, services, swimlanes, forms, media, site pages, insurance enables — all first-class sections.
- Help agent on call Ask anything while you build. Agents explain the grammar and keep you moving — you stay in the driver’s seat.
Builders
Every office builder, with canned markdown
Each section below shows sample markdown, what it does, what it produces, a screenshot, and a live playground link.
Builder · Identity
Who you are on the floor
Front matter + office table. Slug, timezone, phone, address, public flag — the seed every other file inherits.
---
schema: heydental.office/v1
slug: lumen-south-lamar
timezone: America/Chicago
accent: "#f5842b"
status: draft
---
# Lumen Dental · South Lamar
Family practice on South Lamar. New patients welcome.
## office
| key | value |
| --- | --- |
| short | South Lamar |
| phone | (512) 555-0144 |
| address | 1206 S Lamar Blvd, Austin, TX 78704 |
| city | Austin, TX |
| inbox | front@lumendental.test |
| public | on |
What it produces
Office card in admin · multi-office switcher · public site inherit of name/phone · companion context.
Builder · Hours & holidays
One clock. Public site inherits it.
Weekly open/closed table plus holiday lines. Never duplicated on the patient site — site.md says hours inherit.
## hours
| day | open |
| --- | --- |
| mon | 09:00-18:00 |
| fri | 09:00-16:00 |
| sat | 10:00-14:00 |
| sun | closed |
## holidays
- 2026-11-26 · Thanksgiving · closed
- 2026-12-25 · Christmas Day · closed
What it produces
Hours admin · phone AI open/closed · public “Hours” block · scheduling agents that respect closed days.
Builder · Staff & teams
People and desks, not org-chart theater
Clinicians, front desk, billing — plus teams that swimlanes escalate to.
## staff
| name | role | desk | email | notes |
| --- | --- | --- | --- | --- |
| Alex Kim | owner | yes | alex@… | owner draw |
| Sam Ortiz | front-desk | yes | front@… | shared inbox |
| Dr. Priya Patel | clinician | no | priya@… | three offices |
## teams
| id | name | lead | members | desk |
| desk | Front desk | Sam Ortiz | Sam, Jordan | yes |
| billing | Billing | Jordan Kim | Jordan | no |
What it produces
Staff roster · Who am I? desk codes · swimlane escalation targets · doctor listings for the public site.
Builder · Services
What patients can book
Codes, duration, fee, bookable flag — feeds calendar, public services list, and auto-book policy.
## services
| code | name | duration | fee | book |
| --- | --- | --- | --- | --- |
| D0150 | New patient exam + x-rays | 60 | 198 | yes |
| D1110 | Hygiene — adult | 50 | 128 | yes |
| D0140 | Emergency visit | 30 | 95 | yes |
| WHITEN | Whitening consult | 20 | 0 | no |
What it produces
Services admin · Find care booking types · site “services inherit” · phone autobook allow-list.
Builder · Swimlanes + SLA
Workflow columns with teeth
Lanes, warn timers, escalate roles, team, and runbook — one table, one board.
## swimlanes
| lane | sla | warn | escalate | team | runbook |
| --- | --- | --- | --- | --- | --- |
| Patient intake | 2h | 30m | office-manager | desk | front-desk-open-close |
| Patient & insurance verification | 24h | 4h | billing | billing | insurance-verification |
What it produces
Swimlanes board · SLA pulses · ticket routing · runbook deep links on each column.
Builder · Agent playbook
Tell agents what “yes” means
Companion phrases and office automations — readable lines, not a hidden rules engine UI.
## agents
- @companion list-for-today → read reminders today
- @companion when "call my list" → read reminders today
- @office after no-show → queue sms rebook-soft
- @financial payroll → escalate owner_approve
What it produces
Owner companion intents · no-show SMS · finance approval gates — agents that already know your floor words.
Builder · Forms
Design any office form in markdown
Field types, required flags, binds to patient paths, optional insurance embeds. Canned: new-patient, insurance-card, HIPAA, medical history, hygiene check-in.
---
schema: heydental.form/v1
id: new-patient
---
# New patient intake
Tell us who you are. Required fields are marked.
## fields
| id | type | label | required | options | bind |
| first | text | First name | yes | | patient.first |
| last | text | Last name | yes | | patient.last |
| dob | date | Date of birth | yes | | patient.dob |
| phone | phone | Mobile | yes | | patient.phone |
| coverage | checkboxes | Coverage | no | ppo,hmo,medicaid,self-pay | patient.coverage |
## embed
- dental-eligibility
What it produces
Public intake at /o/{slug}/intake · admin Forms library · insurance widgets embedded where you said so.
Builder · Media
Assets with roles, not a folder dump
Logo, hero, welcome art — referenced as {{logo}} elsewhere. Other files never embed raw URLs.
---
schema: heydental.media/v1
office: lumen-south-lamar
---
# Media
## assets
| role | slug | alt |
| --- | --- | --- |
| logo | logo | Lumen mark |
| hero | exterior | South Lamar exterior |
| welcome-new | welcome-new | Welcome robot |
What it produces
Media library · site brand tokens · email and public hero slots resolved from roles.
Builder · Public site
Patient website from site.md
Brand, menu, and pages (home, intake, sign-in, book). Hours and services inherit from office.md — write once.
---
schema: heydental.site/v1
office: lumen-south-lamar
---
# Lumen Dental · South Lamar
## brand
| key | value |
| logo | {{logo}} |
| hero | {{exterior}} |
| accent | inherit |
## menu
| parent | label | href |
| | Home | / |
| Care | New patient | /intake |
| Care | Book | /book |
## pages
### home
title: Welcome
blocks: hero, blurb inherit, hours inherit, services inherit, cta Book /book
### intake
title: New patient
form: new-patient
login: no
### book
title: Book a chair
calendar: inherit
What it produces
Public office site · Find care practice page · SEO agents feed from the same pages · booking + intake routes.
Builder · Insurance center
Enable locked insurance rules — don’t reinvent eligibility
Offices pick Off / Page / Embed for each catalog id. You cannot change binds, verbs, or insurance paths — those stay in the HeyDental master. That’s the point: powerful insurance without a consultant rewriting 270/271.
---
schema: heydental.insurance-center/v1
office: lumen-south-lamar
catalog: heydental.stedi/v1
---
# Insurance center
Master rules are locked. This file only enables them.
## enabled
| id | place | form |
| --- | --- | --- |
| dental-eligibility | page | |
| insurance-discovery | embed | new-patient |
| claim-status | page | |
What it produces
Insurance desk in admin · eligibility page · discovery widget inside new-patient intake · claim status tools. 20+ check controls stay on the platform — you choose which ones light up.
Builder · Insurance master (locked)
HeyDental owns the catalog. Offices enable ids.
Reference grammar for eligibility, discovery, claim status, COB. Offices never edit insurance paths — they toggle place: page or embed.
---
schema: heydental.stedi/v1
id: dental-eligibility
---
# Check dental insurance
270/271 against the test insurance key. Service type 35.
## meta
| key | value |
| action | eligibility |
| serviceType | 35 |
## fields
| id | type | label | required | bind |
| payer | dropdown | Payer | yes | tradingPartnerServiceId |
| member_id | text | Member ID | yes | subscriber.memberId |
| dob | date | Date of birth | yes | subscriber.dateOfBirth |
What it produces
Locked widgets offices can enable. Same binds everywhere — fewer “why is eligibility broken?” tickets.
Builder · Runbooks & reminders
How the floor opens — and who gets nudged
Numbered runbooks hang off swimlanes. Reminder lines drive SMS/email before visits and after no-shows.
## runbooks
### front-desk-open-close
title: Front desk — open / close
1. Disarm alarm
2. Power on shared desk PC + Who am I?
3. Overnight voicemail → Intake lane
## reminders
- 48h · sms+email · friendly-confirm · on
- 2h · sms · short-nudge · on
- no-show · email · rebook-soft · on
What it produces
Runbooks library · reminder templates · companion “list for today” · no-show soft rebook.
Live experiment
Walk the admin without logging in
The playground is a canned Lumen Dental office. Explore freely. Saving is intentionally broken — this is the experiment area.
This is heydental admin experiment area.
No login. No edits. No saves. Banner stays on every screen so nobody mistakes it for production. When you’re ready for a real practice file, sign up and load your own markdown bundle.