Skip to content
oozmi

Analysts who ship, not just report

Wait for the data warehouse to refresh, file a JIRA for a new metric, watch the CFO ask a question the dashboard cannot answer — every analyst loses a day a week to lag and queues. oozmi queries the operational tables directly, composes dashboards in seconds, and lets you propose changes that ship through the same ratify-on-the-row loop the business runs on.

  1. 01 Query

    Query the operational row, not a stale extract.

    An analyst opens the query editor. Those tables ARE the operational tables the rest of the business writes to — orders, accounts, invoices, employees, time_entries, audit_events. No warehouse refresh window, no ETL lag, no semantic-layer translation. A query an analyst writes against orders today is the same query a CFO report runs at month-end. Row-level ACL is enforced in the database, so analysts see exactly what their role allows — same record, same scoping. SQL, GraphQL, or a visual query builder; pick your surface.

  2. No warehouse, no ETL

    Operational tables ARE the query surface. Analyst, dashboard, and CFO report all read the same row.

    Same row, same number

    A query an analyst writes today is the query an executive report runs at month-end. No semantic-layer translation drift.

    Database-level ACL

    Row + field-level ACL enforced in the database. Analysts see what their role allows — no separate BI permission tree.

    SQL · GraphQL · visual

    Pick your surface. SQL for power users, GraphQL for code, visual builder for everyone else.

    Query history audited

    Every analyst query writes a row — who, what, when. A DPO reads the same log finance audits.

  3. 02 Dashboards

    Compose a dashboard in seconds, not a sprint.

    An analyst opens the dashboard builder. Charts, tiles, and tables build from queries against operational rows — drag a query onto a canvas, pick a visualization, set a refresh trigger (on write, on demand, on schedule). A dashboard reads what the team wrote today; an executive opens it cold and numbers refresh in front of them. Permissions inherit from the underlying tables — if an analyst can see a row, a consumer sees it scoped the same way. No data-engineering sprint, no BI license stack on top.

  4. Drag, query, ship

    Build a chart from a saved query in seconds. Pick a viz, set a refresh, share with your team. No license stack.

    Refresh on write

    A dashboard tile can refresh on every relevant write — no cron schedule, no 4 AM batch.

    Permissions inherit

    If an analyst can read a row, a dashboard consumer reads it scoped the same way. ACL is the data layer.

    No data sprint

    A new metric is a new query, not a new pipeline. Analyst ships; engineering does not block.

  5. 03 Propose

    Propose a change, ship through the same loop.

    An analyst spots a pattern — accounts in Tier 2 that always pay early should move to T1. They propose the change in AI Builder: a structured diff that says which Account rows to update, which downstream side effects ripple (pricing-tier change, finance accrual delta), and where to ratify. A CRO reviews and ratifies. The platform commits in one transaction; audit_events records the analyst as actor and AI Builder as agent. If a proposal is wrong, the same path reverts it. Analysis becomes a closed loop, not a slide deck.

  6. Diff, not a deck

    Analysis ships as a structured proposal: which rows change, what side effects follow, who ratifies. Not a PowerPoint.

    AI assembles the proposal

    AI Builder takes an analyst question, queries the rows, drafts a proposal with citations to source data.

    Human ratifies

    A CRO, CFO, or DPO reviews and clicks ratify. The platform writes one transaction; agent_id is on every row.

    Revert is a click

    If a change was wrong, the same transactional path reverts it. Analysis becomes a safe-to-try loop.

Semantic layer Planned

Named metrics, certified joins, and shared dimensions on top of the same operational rows — so "revenue (net)" means one thing across every dashboard and every analyst question.

Today: direct table access with row-level ACL. Tomorrow: a metric layer with one definition of revenue, gross margin, OTIF, AR aging — written once, audited, queryable by name.

Production vs Pilot

Production today
  • Direct SQL access to operational tables (read-only, ACL-enforced)
  • GraphQL API with the same row + field-level scoping
  • Visual query builder for analysts who do not write SQL
  • Dashboard builder with on-write, on-demand, and scheduled refresh
  • AI Builder proposes structured-diff changes from analyst questions
  • Query history and dashboard-publish events in audit_events
In pilot
  • Semantic layer — named metrics, dimensions, certified joins
  • Anomaly detection on dashboard tiles (live alerts on KPI drift)
  • AI-assisted root-cause analysis from a single KPI tile
  • External data joins (bring-your-own-data lake against operational rows)
  • Notebooks against the same row + Python sidecar

Where it fits

Analysts read across AI Builder , Workflows , CRM , OMS , ERP , and Channels — the same row across every module that wrote it. No second copy, no reconciliation step.

Often read alongside: Executives , Finance & Compliance , and Operations .

Next step — 25 minutes

Bring one dashboard your data team won't build — we'll compose it live on your rows.

A metric your CFO keeps asking for but engineering can't prioritize; a cross-system join that takes a week to spec in a warehouse; a tile that breaks every time a source schema changes. Twenty-five minutes. We open the query editor against a sandbox of your data, compose a dashboard live, and show what changes when rows are queryable and the propose-ratify-ship loop is two clicks away.