
databricks-solutions/genie-ontology-readiness
Developer toolsA self-contained Databricks App that helps a customer . Deploy it into a workspace and it will:
Overview
A self-contained Databricks App that helps a customer . Deploy it into a workspace and it will: - the live environment and score maturity across the readiness pillars Genie Ontology depends on (Unity Catalog, metadata, relationships, metrics / metric views, Genie Agents, domains, adoption). - each capability from a and a standpoint, with accurate GA / preview status. - best practices for both technical enablement and business adoption. - a tailored, sequenced enablement + adoption plan and answer questions via an AI assistant — powered by the customer's . The assessment is and degrades gracefully when a signal isn't available. Genie Ontology is the learned enterprise context layer (gated preview) built on the customer's governed UC Business Semantics foundation (largely GA). Preparing for it = maturing that foundation. See CLAUDE.md for the product framing and full deploy steps. The app has three tabs. Each walkthrough below is a short, sped-up screen capture.
README
Genie Ontology Readiness
A self-contained Databricks App that helps a customer prepare for Genie Ontology. Deploy it into a workspace and it will:
- Assess the live environment and score maturity across the readiness pillars Genie Ontology depends on (Unity Catalog, metadata, relationships, metrics / metric views, Genie Agents, domains, adoption).
- Explain each capability from a technical and a business standpoint, with accurate GA / preview status.
- Recommend best practices for both technical enablement and business adoption.
- Generate a tailored, sequenced enablement + adoption plan and answer questions via an AI assistant — powered by the customer’s own Foundation Model API.
The assessment is read-only and degrades gracefully when a signal isn’t available.
Genie Ontology is the learned enterprise context layer (gated preview) built on the customer’s governed UC Business Semantics foundation (largely GA). Preparing for it = maturing that foundation. See
CLAUDE.mdfor the product framing and full deploy steps.
Walkthrough
The app has three tabs. Each walkthrough below is a short, sped-up screen capture.
Assess — the 7-pillar readiness scorecard
Run a read-only assessment that scores your workspace across seven pillars, rolls up to a 0–100 readiness score and maturity stage, and expands each pillar to its signals and gaps.
Plan — a tailored action plan
Generate a prioritized, tactical action plan from a saved assessment — grounded in your real scores and gaps and powered by your workspace’s own Foundation Model API.
Learn — enablement and accelerators
Explore each capability from a technical and a business angle, with best practices, downloadable guides, and the public Databricks accelerators that raise each pillar’s score.
Quick start
Get the code. For a stable build, clone the latest tagged
release
— this is the recommended source for customer deployments. For a staging build
with the newest, unreleased changes, clone main directly.
# Stable — latest release (recommended)
tag=$(gh release view --repo databricks-solutions/genie-ontology-readiness --json tagName -q .tagName)
git clone --branch "$tag" https://github.com/databricks-solutions/genie-ontology-readiness.git
# (no gh? browse the Releases page above and: git clone --branch )
# Staging — latest main (newest, unreleased)
git clone https://github.com/databricks-solutions/genie-ontology-readiness.git
Then build and deploy:
cd app/frontend && npm install && npm run build && cd ../..
databricks bundle deploy -t dev --profile --var="warehouse_id="
DATABRICKS_PROFILE= TARGET=dev WAREHOUSE_ID= python3 scripts/post_deploy.py
The -t selects the environment and fixes the app name (dev, the
default → genie-ontology-readiness-dev, stg → …-stg, prod → the bare
genie-ontology-readiness). There is no --var app_name — the name is pinned
per target so a deploy can never rename or delete another environment’s app. Keep
TARGET in step 2 matching the -t in step 1. For a production install, use
-t prod (with TARGET=prod) to get the unsuffixed genie-ontology-readiness.
See CLAUDE.md for prerequisites, the service-principal grants the assessment needs, local development, optional Lakebase history, and branding.
Install from a notebook (no local tooling)
If you’d rather not install Node.js or the Databricks CLI, install the app from a notebook inside the workspace:
- In the workspace, Create → Git folder and paste this repo’s URL (pick the latest release tag as the branch for a stable build).
- Open
notebooks/install.pyfrom the Git folder and attach it to Serverless compute. - Set the widgets (
warehouse_iddefaults to the first warehouse you can see; setlakebase_instance_nameto an existing Lakebase instance for per-user history) and click Run all.
The notebook creates or reuses the app, applies the same service-principal grants as
setup_app_permissions.py, renders app.yml, and deploys. The frontend is built by the
Databricks Apps runtime during deployment, so nothing is built on your machine. The
staged source lives in /Workspace/Users//.genie-ontology-readiness/.
The app name is a widget (default genie-ontology-readiness), so use a different name
than any app you manage with bundle deploy to keep the two flows separate.
Run the assessment without the app (Genie Code skill)
If your workspace can’t install Databricks Apps (security review, deployment, or
service-principal constraints), use the standalone skill in
skills/genie-ontology-readiness/ instead. The
Genie Code agent runs the same read-only information_schema and system-table SQL as
the app, using your own Unity Catalog permissions. It produces the same seven-pillar
scorecard, maturity level, readiness stage, and prioritized gaps, with no app, app
service principal, or Lakebase.
- Publish the skill folder (
SKILL.md+references/) as a Unity Catalog skill in a catalog/schema you own, or copy it into your workspace skills folder. - In Genie Code, ask “Assess this workspace’s Genie Ontology readiness” (or invoke
genie-ontology-readiness). - You need
USE CATALOG+SELECTon the catalogs to assess.SELECTonsystem.information_schema,system.access.audit,system.query.history, andsystem.access.table_lineagemakes the result richer. A pillar whose reads are denied is reported as unavailable; it doesn’t fail the run.
The skill transcribes the app’s scoring (app/server/pillars.py,
app/server/assessment/). Scoring changes must update both together.
Permissions required
The app reads only metadata (information_schema, tags) and system tables
(system.access.*, system.query.*) — never your actual table data. Every signal
defaults to on-behalf-of-user (OBO) with an automatic SP fallback:
- Interactive — a person viewing the app. With on-behalf-of-user (OBO) authorization enabled, every signal runs as the viewing user (their own Unity Catalog + system-table grants), so the assessment reflects exactly what you can see. If a given read fails because you lack a grant the app SP holds (system tables are the common case), that read falls back to the app SP rather than dropping the signal.
- Scheduled / unattended — snapshot history or any background run with no user present (also local dev). With no forwarded token every read runs as the app service principal (SP), so the SP must hold the grants below.
A few reads are always the SP (they can’t run OBO): the Genie REST API (not
covered by the sql user scope) and Lakebase credential minting.
Who needs what
| Assessment area | Reads from | Grant needed (held by the viewer under OBO, or by the SP when unattended) |
|---|---|---|
| Run any query | SQL warehouse | CAN USE on the warehouse |
| UC Foundation · Metadata · Relationships · Metrics · Domains (tags) | catalog / system.information_schema |
BROWSE on each assessed catalog (metadata-only, least privilege) — or USE CATALOG+USE SCHEMA+SELECT |
| “Not in Unity Catalog” coverage | hive_metastore.information_schema |
read on hive_metastore (if legacy access is enabled) |
| Genie Agents (count + activity) | system.access.audit (aibiGenie events) |
USE+SELECT on system.access |
| Adoption & Activity | system.access.audit, system.query.history |
USE+SELECT on system.access and system.query |
| Top‑10 most‑accessed + certified | system.access.table_lineage + information_schema.table_tags |
USE+SELECT on system.access + catalog metadata |
| Plan / Assistant (LLM) | Foundation Model API | model serving / FMAPI enabled for the workspace |
[!NOTE] SP fallback. Under OBO each signal is attempted as the viewer first. If that read fails — most commonly because the viewer lacks a grant the app SP holds (system tables such as
system.access/system.query) — the app transparently retries the same read as the service principal instead of dropping the signal. This means a signal can appear in the assessment even when the viewer can’t read it directly, provided the SP is granted. If neither the viewer nor the SP holds the grant, the signal degrades to “not available.” The fallback is per-read and lives inapp/server/sql_client.py(execute_sql); the SP-only reads that never attempt OBO (Genie REST, Lakebase) are opted out withforce_sp=True.SP-only mode. To disable OBO entirely at deploy time, set the
FORCE_SP=trueenv (inapp.yml, orexport FORCE_SP=truebeforepost_deploy.py). Every read then runs as the app SP regardless of any forwarded viewer token — useful when you want consistent, workspace-wide system-table signals (e.g. Adoption) that don’t vary by who’s viewing. The SP must hold the grants below. Default isfalse.
scripts/setup_app_permissions.py (run by post_deploy.py) applies the SP grants; see
CLAUDE.md for the exact statements and the OBO details.
Stack
FastAPI + React/Vite + Tailwind, deployed as a Databricks App via Databricks Asset Bundles.
License
Provided under the Databricks License — see LICENSE.md and
NOTICE.md. Third-party dependencies are subject to their own licenses,
declared in the respective package manifests.
Support
This project is a Databricks Field Engineering solutions example, published as a demonstration accelerator. It is not an official Databricks product and is not covered by any Databricks Support agreement, SLA, or warranty.
- Provided AS-IS, with no warranties or conditions of any kind. There are no SLAs and no commitment to maintenance, bug fixes, or future updates.
- Community / field-maintained on a best-effort basis by the owner below — not staffed by Databricks Support or Engineering.
- Not a substitute for official guidance. Validate GA / preview status against the official Databricks documentation before making decisions.
- To report a security issue, see
SECURITY.md.
For questions or issues, open an issue on this repository or contact the maintainer:
Allan Cao ([email protected]). See NOTICE.md for the full
disclaimer.
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add databricks-solutions/genie-ontology-readiness