Everything a small-to-mid Indian dental clinic actually needs.
No feature bloat, no imports from a Western dental EMR. Built by watching a real clinic run for a year.
Patients
- Register with a P-code (P0001, P0002…) — per-clinic sequence, not global.
- Contact, alternate phone, DOB, gender, blood group, address.
- Medical history, allergies, current medications — shown at the top of every chart.
- Search by name / phone / P-code.
- Full invoice history + clinical record linked from the profile.
Appointments
- Day board with time · patient · procedure · doctor · chair · status.
- Six statuses (requested → confirmed → checked in → completed / cancelled / no show) with a state-machine that only shows valid next transitions.
- Per-status count pills at the top of the board.
- Chair / doctor conflict detection at booking time (half-open intervals — back-to-back slots are allowed).
- Walk-in or existing-patient in one form.
- Date navigation with ← today → and a date picker.
Clinical records
- FDI odontogram (32 permanent + 20 primary teeth), colour-coded by condition. Click a tooth → set condition + optional note.
- Treatment plan items with tooth number + status + estimated cost. Feeds the billing "unbilled items" picker.
- Per-visit clinical notes: chief complaint, examination, diagnosis, treatment done, advice. SOAP-adjacent, deliberately not rigid.
- Prescriptions per visit: medicine + form (Tablet/Syrup/Injection/…) + dose + frequency (Indian style: 1-0-1, BD, TID, SOS, STAT) + duration + instructions.
- Void a note (admin) — hides from chart, kept for audit.
Billing (no GST — dental services are exempt)
- Draft invoice from a patient's completed treatment items.
- Add/remove line items, discount, issue (allocates INV-0001 per-tenant).
- Multi-split payments: Cash + UPI + Card + Insurance in one invoice.
- Insurance-tracked payments — insurance rows land as pending. They do NOT reduce Outstanding until the insurer settles, which the receptionist marks with one click.
- Status auto-derives: draft → issued → partially_paid → paid.
- Cancel invoice; delete payment; refund handling.
Medical-store inventory
- Item catalogue with unit + reorder level.
- Stock-in creates a batch (batch #, expiry, supplier).
- Stock-out is FEFO (first-expiry-first-out) across batches — the allocator is a pure, unit-tested function.
- Per-batch adjustment for shrinkage / miscount.
- Alerts: low-stock (on-hand ≤ reorder), expiring within 30 days, already expired.
- Full movement history per item — in / out / adjust with actor + reason.
WhatsApp (via Pulse)
- Booking confirmation on the appointment status = confirmed.
- Reminder 24 h before start.
- Invoice PDF over WhatsApp on issue.
- Unlimited messages — no per-message meter, no monthly cap.
- Uses your own WhatsApp Business number (Meta Embedded Signup during onboarding).
Staff + permissions
- Six roles: Platform Super Admin, Clinic Owner, Admin, Doctor, Receptionist, Staff.
- Role-assignment matrix enforced: owner → admin/doctor/reception/staff; admin → doctor/reception/staff.
- Deactivation revokes every active session immediately.
- Users can change their own password any time; other sessions get bounced.
Reports (coming soon)
- Date-range revenue collected, invoices issued, outstanding, new patients, appointments-by-status with no-show rate.
- Top procedures, low-stock count, recalls due (patients whose last visit was > 6 months ago).
- Multi-sheet xlsx export.
Ready to try it?
30 days, no credit card, set up in 5 minutes.
Start free trial