Case study

Mandala Medicine & Wellness: a clinic site that knows what hurts

An integrative clinic on East Burnside, sixteen practitioners and eight services, moved off Wix onto its own engine in nine days. A guide that turns "migraines" into the right service and the right people, a chat that answers only from the clinic's own pages, and a dashboard where the clinic edits everything itself. Booking stays in Jane.

ClientMandala Medicine & Wellness · Portland, OR
Year2026
ScopeCustom CMS · Find Care guide · Grounded assistant · 16 practitioner profiles · Service pages · Domain migration · Search markup
Livemandalamed.com ↗
Mandala Medicine & Wellness: a clinic site that knows what hurts
9 dayskickoff to live
16practitioners, each with a profile
27conditions the Find Care guide understands
76old URLs redirected with one rule

Mandala Medicine & Wellness is an integrative clinic on East Burnside in Portland: acupuncture, massage, physical therapy, car accident care, naturopathic medicine, mental health counseling, microneedling and cupping, sixteen practitioners under one roof, 5.0 on Google from 160 reviews, and Willamette Week's Best Acupuncture and Bodywork for 2024. The old site lived on Wix at a longer domain, with about eighteen practitioner bios and five blog posts. Booking already ran through Jane and still does: the site never takes an appointment itself, it hands you to Jane at the right moment.

Kickoff was September 28. mandalamed.com went live on the evening of October 6, on the ninth day, and the old domain cut over on October 9 with a single Cloudflare rule that sends all 76 old paths to the same path on the new one. In between: a custom theme, 48 share cards, a schema graph, an llms.txt, and the two features the clinic had asked for without quite having words for them yet.

How does the Find Care guide work?

You type what hurts, in your own words. A "Find help" pill sits in the header (an icon alone under 600 pixels), and the hero carries an "I need help with ..." bar that cycles through back pain, migraines, a PIP question and a dozen more. Either one opens a panel headed "Find care at Mandala". Type "migraines" or "whiplash" or "collision" and the guide matches it against 27 conditions, each carrying its own search words and synonyms, then routes you to the service page that fits and the practitioners who treat it. Acupuncturists and massage therapists come back as alphabetical group cards, never ranked by keyword, because a clinic's website should not look like it is steering you toward one colleague over another.

Crisis words short-circuit the whole thing. "Chest pain after crash" does not return a practitioner; it returns "Call 911 first", with 988 beside it. The 27 conditions are a content type in the clinic's own dashboard, and the "What do you treat?" section on the home page draws from the same rows, so editing one place updates both.

What does the Mandala Guide answer from?

The clinic's own pages, and nothing else. The chat launcher opens a panel with three starter chips ("How do I book a first visit?", "Do you take my insurance?", "Which practitioners do acupuncture?"). The front end posts to the site's own /api/chat endpoint and gets one JSON reply back, no stream. Behind it sit 82 public knowledge chunks rebuilt from pages, practitioners, services, posts and FAQ by a sync script; a page that is not live drops out of the chat the next time it runs. An answer can carry practitioner tiles, headshot, credential and service on each, with "Book online" as the filled card that hands you to Jane.

Two filters run on every reply before it reaches the screen: em dashes are stripped, and pregnancy-safety wording is checked, because a wellness clinic cannot have a chat window improvising about cupping during pregnancy. The panel says so itself: "It cannot give medical advice." Staff get a second version, 73 chunks about the dashboard, that explains how it works and links the screen each answer is about.

What does the clinic edit itself?

Everything the public sees. Text, photos and lists edit in place on the live page, with drag to reorder. The rest lives in the dashboard:

  • A Draft, Schedule, Publish bar on eleven content types, so a page can be written on Tuesday and go live on Saturday morning.
  • Home-page practitioner order: random on each visit, a custom drag order, or A to Z.
  • Branded patient emails and an autoreply editor with a live preview and a test send.
  • An asset library with folders, drag upload, move and multi-select.
  • Newsletter signup with a popup, a weekly list email, and double opt-in.
  • An Instagram strip with its own admin controls, a GA4 analytics tab, and a consent bar.
  • A careers page carrying JobPosting markup, three open positions on launch day.

The conditions behind the Find Care guide are one more content type in the same list. Add a condition, give it its search words, and the guide knows it on the next visit.

Stack

UlricCMS on PHP 8.3, hosted on Hostinger behind Cloudflare. The theme is a custom build on top of the lotus base theme, and the two share one set of settings, so a colour or a phone number changes in one place. Type: DM Sans for display, Alegreya Sans for body, Alegreya for ledes, Tenor Sans for small caps, Inter in the header. Colours: periwinkle, cream, gold and olive, with one house rule: white text on periwinkle, always. A weekly SEO loop runs. Booking is Jane, linked from every page.

Numbers

Nine days from kickoff to live, eleven to the launch-day cutover. Sixteen practitioners with profiles, eight services with their own pages, 27 conditions in the guide, 82 knowledge chunks behind the chat, 48 share cards, 76 redirects, thirteen blog posts, 137 reviews imported with eight in the carousel. None of these is an outcome. They are the inventory on launch day, and the clinic owns every item on it.

Mandala runs the same engine I build for clinics and therapists who would rather own their site than rent one.

The front door on a desktop and a phone: "A sanctuary for healing", the Book pill, and the bar that reads "I need help with back pain".
The front door on a desktop and a phone: "A sanctuary for healing", the Book pill, and the bar that reads "I need help with back pain".
What do you treat? Six groups, pain and injury through skin texture and scars, each a row of conditions you can tap.
What do you treat? Six groups, pain and injury through skin texture and scars, each a row of conditions you can tap.
"migraines" typed into Find care at Mandala: the matching condition, the services that fit, and the practitioners who treat it, A to Z.
"migraines" typed into Find care at Mandala: the matching condition, the services that fit, and the practitioners who treat it, A to Z.
The Mandala Guide answering "Which practitioners do acupuncture?": practitioner tiles with headshot and credential, and Book online as the filled card.
The Mandala Guide answering "Which practitioners do acupuncture?": practitioner tiles with headshot and credential, and Book online as the filled card.
Sixteen practitioners grouped by discipline: five acupuncturists, seven massage therapists, one physical therapist, two naturopathic doctors, one counselor.
Sixteen practitioners grouped by discipline: five acupuncturists, seven massage therapists, one physical therapist, two naturopathic doctors, one counselor.
The acupuncture page: what it treats, 75-minute first visits, and the line "Dry needling is acupuncture".
The acupuncture page: what it treats, 75-minute first visits, and the line "Dry needling is acupuncture".
Start Here: four steps from booking to the 24-hour cancellation policy, the intake form due 48 hours before the visit.
Start Here: four steps from booking to the 24-hour cancellation policy, the intake form due 48 hours before the visit.
Insurance by practitioner, current as of April 2026, with PIP after a crash and TriWest for veterans explained above the chart.
Insurance by practitioner, current as of April 2026, with PIP after a crash and TriWest for veterans explained above the chart.
Work at Mandala: three open positions, each marked up as a JobPosting so it shows where people search for jobs.
Work at Mandala: three open positions, each marked up as a JobPosting so it shows where people search for jobs.
What patients say: eight of the clinic's 160 Google reviews in a carousel, 5.0 overall, with a link to read the rest.
What patients say: eight of the clinic's 160 Google reviews in a carousel, 5.0 overall, with a link to read the rest.

Common questions

Does the site take bookings?

No, and that is deliberate. Mandala books through Jane, and every "Book" pill, the chat's "Book online" card and the Find Care guide's results hand you to Jane at the right moment. Appointments and patient records stay in the system built to hold them; the website never collects either.

Can the clinic change the site without a developer?

Yes. Text, photos and lists edit in place on the live page, and the dashboard holds the rest: practitioners, services, blog posts, the 27 conditions behind the Find Care guide, patient emails, the newsletter, and a Draft, Schedule, Publish bar on eleven content types. A second version of the Guide, written for staff, explains the dashboard and links the screen each answer is about.

Is the chat safe? What does it answer from?

It answers from 82 knowledge chunks rebuilt from the clinic's own live pages, practitioners, services, posts and FAQ, and from nothing else. A page that goes offline drops out of the chat on the next sync. Every reply is filtered for pregnancy-safety wording before it reaches the screen, the panel states that it cannot give medical advice, and a question carrying crisis words gets 911 and 988 back before anything else. Requests are throttled per IP.

What happened to the old site's links?

They all still work. The old domain cut over on October 9 with one Cloudflare rule that sends each of the 76 old paths to the same path on mandalamed.com, so a bookmark, a Google result or a referral from another clinic lands on the right page.

← All work