The governing rule: every marketing source plus the patient outcomes from Dentally land in one model, served two ways, a live custom dashboard and a plain-English LLM interface, so the team sees paid, organic, web, and patient outcomes together and gets answers without exporting anything.
Two decisions shaped it. A custom dashboard rather than an off-the-shelf BI tool, because the group wanted a branded, purpose-built marketing view built around patient outcomes, not a generic chart gallery. And a governed LLM interface: it answers by querying the defined set of metrics in the model, not by writing raw SQL against raw tables, so a question asked in plain English always returns a number that matches the dashboard.
The privacy boundary is explicit: only marketing-relevant fields come from Dentally (bookings, treatment value, source), never clinical detail, and the LLM answers over the marketing model, not patient records.
What we deliberately did not do: no revenue feedback to the ad platforms (that is the attribution engine's job, a separate build), no clinical data in the dashboard or within the LLM's reach, and no raw text-to-SQL free-for-all.