Insurance broker · Public · 2025–2026

AI over governed enterprise data

MCP servers and Databricks Genie spaces over governed data, with access enforced in Unity Catalog and spaces deployed and evaluated through CI/CD.

MCP · Claude · Databricks · Genie · Unity Catalog · CI/CD

Problem

Business users wanted natural-language access to governed data. A chatbot on top would have bypassed existing access groups, lineage and curated marts. Genie spaces also had no supported way to be source-controlled, and the space metadata was edited by hand in the UI by the product owner.

Work

  • Designed the Genie semantic layer: business metadata, join criteria and metric views, so queries resolve to the same definitions as dashboards.
  • Built Databricks-backed MCP servers for Claude, scoped to curated data.
  • Kept access control in Unity Catalog: Databricks group grants down to tables, with row-level security and column masking beneath them.
  • Built a CLI in one sprint, run from GitHub Actions, that source-controls Genie spaces. Instructions, join criteria, sample questions, filters and data values are defined in files and deployed to the space.
  • Deployed the metric views as Databricks Asset Bundle resources from GitHub Actions.
  • Rolled it out on two tracks. A human-maintained space served a pilot group; I mined their questions, agent outputs and logs and fed them to Claude to build better evaluation sets and instructions. Those went into a CLI-maintained space, auto-deployed to the pilot group and the remaining users. The original space was then retired and everyone moved to the source-controlled, CI/CD-deployed space. The product owner kept a space for sandboxing, maintained with engineering help, and the CLI switches between and deploys spaces.
  • Built a CI/CD evaluation harness on the Genie eval-run API. Golden SQL queries and questions with evaluation criteria run against each space.
  • Built a feedback loop: a separate pipeline uses an agent to cluster questions and aggregate thumbs-up and thumbs-down responses, and a dedicated chat channel receives traces.
  • Closed the loop on data defects: Genie diagnosed the defect behind a bad answer and wrote a handoff prompt, and Claude opened a PR against the pipeline that builds the affected curated table. When a fix needed a backfill, one was triggered; backfills were expensive, so they were avoided where possible.
  • Worked with business leaders on answer quality. For questions such as policies in force on a date versus over a period, I instructed the agent to reconcile across the time frame.

Request path

Request path for governed data access A user asks Claude a question. Claude calls an MCP server. The MCP server queries curated data in Databricks, where Unity Catalog group grants, row filters and column masks decide what the user can see. User Claude MCP server Unity Catalog group grants row filters, column masks
  • Access is enforced in Unity Catalog and does not depend on what the model was told. Databricks groups hold grants on catalogs, schemas and tables, with row-level security and column masking beneath them.
  • Row-level security limits each user to the rows they are entitled to see.

Result

  • Business users queried governed data through these endpoints, and the pilot group moved to the source-controlled space.
  • Latency was the main limitation, from the serverless SQL warehouse and the Genie API.
  • No ungoverned copy of the data was created.

← All work