A dental clinic,
run from one system.
A clinic in Yerevan runs two lines under one legal entity: dentistry and beauty. Both draw from one stock pool. We built one system for both: patient records, the calendar, lab orders, stock traced to the implant lot, doctor earnings, Telegram alerts for the owner and the public website in four languages.
Status: built, go-live pending · Stack: PocketBase · React · Astro · Telegram
Why a clinic is hard
Generic CRMs stop at the appointment.
Two businesses, one stock pool
Dentistry and beauty run under one legal entity and draw from the same stock. The owner still needs stock, revenue and debts per line.
Every implant traced
When an implant, abutment or filler goes into a patient, the clinic has to know the lot, brand and size, and find every patient who got a given lot.
Every doctor is paid differently
A share of paid revenue, a share per service category or a fixed amount per procedure, minus lab or materials cost. Each doctor has their own rule.
Patients in four languages
Armenian, Russian, English and French. Treatment plans, consents and review requests have to reach each patient in their own language.
What we built
From the chair to the stock room.
Patients and calendar
Patient records, visit history, a dental tooth chart and skin and laser records. Day and week calendar with drag-to-move and overlap warnings. Booking requests from the website turn into a patient and an appointment in one step.
Treatment plans and consents
Plans become PDF quotes in AMD with USD, EUR and RUB shown for reference, in the patient's language. Consents are signed on a tablet and stored as PDF.
Lab orders
Every lab order with teeth, shade, material, dates, cost and files, on a board with an overdue filter. A daily Telegram digest of late work, and a warning if a fitting is booked before the work is back.
Stock with lot tracking
Stock comes in by lot with expiry date and cost. Implants, abutments and fillers cannot be used without a lot. An implant passport PDF per patient and a “who received lot X” lookup. Low-stock and expiring lists.
Materials per worker
Materials are handed out to and returned by each worker. At month-end the system closes the month and flags anyone above the norm or the clinic average.
Doctor earnings
Pay rules per doctor, monthly statements as PDF or CSV, and a month close that freezes the numbers. Each doctor sees only their own statement.
Two lines, one stock pool
Every service and stock item is tagged dental, beauty or shared. One stock pool, with a filter on stock, reports, debts and patient balances per line.
Reviews and recalls
After a visit the patient gets a rating link in their language. Four or five stars lead to a Google or Yandex Maps review; one to three stars go to the clinic privately. Follow-up and recall lists for check-ups.
Roles and security
Five roles across 25 permission areas, with per-person overrides. Doctors see only their own patients. Two-step sign-in, sign-in alerts and an audit log.
Telegram for the owner
A morning brief at 09:00 and alerts for bookings, payments and lab delays. A control bot can lock the system down or invite staff, and asks for confirmation first.
Website in four languages
A fast static site in Armenian, Russian, English and French with online booking and a blog. The clinic edits it from the same admin, and it rebuilds itself after each edit.
Reports
Revenue by period, doctor, service, payment method and patient source. Debts, lab cost and stock value. CSV export for the accountant.
Next to the accountant
It does not replace the accounting. It feeds it.
Accounting software is good at tax and payroll. It is bad at which lot went into which patient, or what each doctor earned this month. The clinic system holds that, and exports money reports to CSV for the accountant. Where a client needs it, we build a direct sync to ArmSoft, HC or 1C.
The system is built and tested end to end on demo data. Moving the clinic onto it is the next step. See how we approach custom CRM and client portals and custom ERP for stock and operations.