Over three weeks I went through the web presence of 91 dental practices across Romania, one at a time. Ten of them had a website with nothing wrong with it.
I was writing outreach messages to dental clinics and refused to send the same paragraph ninety-one times. So before each message I opened the account, found the website, and looked for one true thing to say about it.
Halfway through it stopped being outreach. The same defects kept appearing, in the same order, in practices that had nothing else in common. A clinic in a village near Cluj and a six-chair clinic in Bucharest were failing in the same way.
For every practice I opened the Instagram profile, followed the link in bio if there was one, searched the practice name on Google, and opened the website. Then I checked five things a patient would check: can I find what it costs, can I find where you are, can I reach you, does the site work, and does anything on it suggest you are still open.
Sample: 91 practices, Instagram-sourced, spread across roughly 40 towns from Bucharest to villages under 3,000 people. Not a random sample — these were accounts I could find, which biases the set towards practices with some digital presence. The real numbers are likely worse.
| State of the web presence | Practices |
|---|---|
| No website — Instagram or Facebook only | 46 |
| Website exists but is dead, offline, expired or hacked | 8 |
| Website works, but has defects | 27 |
| Website works, no defect found | 10 |
The interesting half is the 37 practices that did get a website built and paid for it. Someone sold them a solution. Here is what they got:
| Defect, among the 37 sites that load | Share |
|---|---|
| No prices anywhere on the site | 35% |
| Broken links, dead buttons, empty menu items | 30% |
| Content lives on Instagram, not on the site | 24% |
| Template placeholder data never replaced | 16% |
| Site is a single page with anchors instead of pages | 14% |
| Visibly out of date — old copyright, expired popups | 14% |
| Address or phone contradicts another source | 8% |
The first thing a patient wants to know is what it costs, and the fear of not affording it is the reason many never call. Thirteen of the 37 working sites had no prices at all, including sites with twelve well-written service pages.
xraydentalcraiova.ro — the price table lists every service at 100 RON. It is the template's demo table, never filled in. Further down there is a second, real price list that contradicts the first. The same implant appears at 500 lei in one place and 5,000 in another.
hopedent.ro — had a price page. It now returns 404. The one page that closed the decision was removed in a restructure.
A clinic in Cluj — publishes its full price list, as images, inside an Instagram highlight. Google cannot read text in images. The answer exists in the one place it cannot be found.
Six of 37 sites still carried the template's own fake data, live, on the contact page. Nobody involved read the page after launch.
contact@mysite.com and 123-456-7890 in a footer. (+01) 789 987 645 as a clinic's phone number. tel:+40XXXXXXXXX behind a call button. A contact page rendering the literal string [recaptcha] where the form should be. A map widget showing a grey box labelled Placeholder.
Practices move. Google, directories and the footer of an old site do not move with them. A patient who trusts the first result drives to the wrong street, and does not call to ask why.
One clinic's footer gave a street it left years ago, an email that was not theirs, and social links pointing at an empty Facebook page. Another appears in Google under a town 40 km from where it actually operates, because the company was registered at the owner's home address.
Several practices name their Instagram account after their domain, then get the domain subtly wrong — or never buy it.
One account is called totoescudental.ro. The real domain is totoescu-dental.ro, with a hyphen. Anyone who reads the handle and types it lands nowhere.
Another had paid for the domain but never connected it: visitors got Wix's "This domain isn't connected to a site." A third pointed at a Vercel project that had been paused. A fourth had casino spam injected into its source.
The saddest group. Practices posting consistently for years, into a channel that cannot be searched, with no link out of it.
227 posts, 174 followers. 142 posts, 48 followers. 155 posts and a bio containing only a street address — no phone, no link, no sentence about what they do. One account had 2,252 posts and a website that no longer loads.
The obvious reading is that 91 practices each need a website. I think that is the wrong conclusion, and it is the one the market has been acting on for a decade — which is how we got 37 sites with the same six defects.
These practices do not have different problems. They have one problem, ninety-one times: a patient in pain cannot find out what it costs, where you are, and whether you can see them this week. Everything else on those sites is decoration around a question that never gets answered.
A problem that repeats identically is not a design job. It is a systems job — one flow, one set of components, configured per practice.
That is what parts 2 and 3 are about: the booking flow a patient actually needs, and the component system underneath it.