QueryPanel vs Luzmo

Self-service embedded analytics with built-in AI and product-facing customization.

Luzmo positions itself as an embedded analytics platform purpose-built for product teams. The current product story leans on self-service analytics, built-in AI, native-feeling components, multi-tenancy, and a fast path to launch for teams that want a managed analytics surface rather than owning every piece of the workflow in code.

Comparison at a glance

This table summarizes typical positioning. Every vendor changes over time—validate details against current documentation and your security review.

DimensionLuzmoQueryPanel
In-app experience for end usersLuzmo emphasizes a native-feeling embedded product experience with self-service analytics, AI, branded dashboards, and multi-tenant access.First-class `@querypanel/react-sdk` components—`QuerypanelEmbedded` for a full dashboard, or `QueryPanelProvider` with `QueryInput` / `QueryResult` for a bespoke flow. They render in your React tree like any other product screen (layout, router, modals, tokens)—not a separate iframe "mini app" on another origin. Mint short-lived JWTs on your server; never ship your workspace private key to the browser.
Primary product shapeManaged embedded analytics suite with builder workflows, AI features, and configurable customer-facing reporting.Headful React workspace plus headless Node `ask()` calls for teams that want customer questions, SQL, and charts in one product loop.
Trainable knowledge & steeringDefinitions, dashboard behavior, and AI configuration live primarily inside the vendor platform and its query engine.Gold SQL queries (curated examples the model prioritizes), database annotations (business context on tables/columns, re-embedded with schema), glossary (domain terms and definitions), and tenant-level definitions (isolation field, enforcement, and per-tenant sync context so every ask() is grounded in the right customer slice—not a one-size global prompt).
Natural language workflowLuzmo promotes built-in AI and natural-language answers grounded in its own query engine and embedded product workflows.Natural language to SQL and chart generation are first-class API and embedded SDK workflows you can validate in your own backend path.
Developer ownershipLower front-end assembly work when the vendor-managed analytics surface already matches the product direction you want.More code-adjacent control: React components in your app, Node SDK in your API routes, and SQL execution in your environment.
Multi-tenant SaaS fitLuzmo markets multi-tenancy, row-level security, and branded embedded analytics directly to product teams.Tenant id and isolation metadata travel with the embedded JWT and generation request so customer questions stay scoped from the start.
Best first winLaunch branded dashboards, AI chat, and self-service analytics with a vendor-managed implementation path.Ship a tenant-scoped AI analytics route where customers ask questions and receive SQL-backed charts inside your React product shell.
Trainable knowledge base

Four layers your team—and your tenants—can train for better answers

Natural language is only as good as the context the model sees. QueryPanel's knowledge system lets you steer retrieval and SQL with curated examples, business meaning on the schema, shared glossary terms, and tenant-aware definitions—so customer-facing analytics matches how your product actually defines revenue, usage, and risk.

01

Gold queries

Save vetted SQL for recurring questions. Gold examples are retrieved with schema context and treated as the strongest pattern signal when they match the end user's intent—so joins, filters, and metrics follow what your team already proved in production.

02

Database annotations

Attach free-text business meaning to tables and columns. Annotations are merged into embedded schema chunks (“Business Context”) so search and generation see how revenue, activation, or ARR are really defined in your warehouse—not only raw column names.

03

Glossary

Define terms customers actually say (“active seat”, “net MRR”, “expansion”). Glossary entries are embedded alongside schema so the model resolves ambiguous language the way your finance and product teams mean it.

04

Tenant-level definitions

Per-tenant isolation settings and tenant-scoped schema sync mean each customer’s ask() carries the right tenant id and rules—so retrieval and generated SQL respect dynamic per-tenant shape, not a single global tenant-agnostic prompt.

Manage gold SQL and glossary from the dashboard knowledge base; annotations attach business context to schema objects; tenant isolation and sync keep per-customer context aligned. See documentation for SDK routes and ingestion APIs.

When Luzmo is the better fit

Honest tradeoffs help your team pick faster—and match how buyers actually decide.

  • You want a packaged embedded analytics suite with builder workflows, branded dashboards, and a vendor-managed path to self-service analytics.
  • You want AI and dashboard-building features bundled into the platform instead of assembling the workflow across multiple tools.
  • Your team prefers product configuration and platform features over owning the full SQL-generation and validation loop in application code.

When QueryPanel is the better fit

Especially strong for B2B SaaS shipping customer-facing analytics on Postgres and similar databases.

  • You want a trainable knowledge system—gold queries, DB annotations, glossary, and tenant-aware definitions—so NL→SQL and charts reflect your business, not generic schema-only guesses.
  • You want the customer UI to live directly in your React app via `@querypanel/react-sdk`, while your backend signs JWTs and your infrastructure executes SQL.
  • You want natural-language questions to flow into tenant-aware SQL generation and charts inside your product routes, not only inside a managed analytics suite.
  • You prefer a smaller developer-owned surface: React SDK in the frontend, Node SDK in API routes, existing auth model, and query execution that stays with your drivers.
  • You want a headful React workspace first, then a headless zero-trust path when you need fully custom product flows.

Keep comparing the implementation details

Vendor fit depends on more than a feature matrix. These guides cover the security, embedding, and buying choices that usually decide a SaaS analytics rollout.

Ship the customer UI with React—not an iframe

Most teams lead with @querypanel/react-sdk: drop QuerypanelEmbedded on a normal product route, or compose QueryPanelProvider with QueryInput / QueryResult. It behaves like any other React subtree—your app shell, router, modals, and design tokens—not a separate cross-origin iframe "mini app" with its own layout chrome.

The browser talks to the QueryPanel API with a JWT you mint on your server (RS256). Never ship your workspace private key to the client.

React — QuerypanelEmbedded (tsx)
import { QuerypanelEmbedded } from "@querypanel/react-sdk";

// Render like any other page — not an iframe. Mint tenantJwt (RS256) on your server
// with @querypanel/node-sdk; pass only the JWT to the client.
export function CustomerAnalytics({ tenantJwt }: { tenantJwt: string }) {
  return (
    <QuerypanelEmbedded
      dashboardId="your-dashboard-id"
      apiBaseUrl="https://api.querypanel.io"
      jwt={tenantJwt}
      allowCustomization
    />
  );
}

Headless Node SDK (optional, for your API)

Use @querypanel/node-sdk on your backend to attach database clients, sync schema, sign JWTs for the React embed, and call ask() from API routes when you want a fully custom pipeline. SQL still runs with your drivers. Full quickstart in documentation.

Node — QueryPanelSdkAPI (typescript)
import { QueryPanelSdkAPI } from "@querypanel/node-sdk";

const qp = new QueryPanelSdkAPI(
  process.env.QUERYPANEL_URL!,
  process.env.PRIVATE_KEY!,
  process.env.QUERYPANEL_WORKSPACE_ID!,
);

// After attachPostgres / syncSchema — tenant comes from your auth layer
const result = await qp.ask("Revenue by country last quarter?", {
  tenantId: org.id,
  database: "analytics",
});

// result.sql, result.params, result.rows, result.chart — you execute SQL with your driver

Still evaluating Luzmo and QueryPanel?

Start on the free tier, embed one dashboard, and compare implementation time against your current shortlist.