For product teams

Customer-facing analytics, governed.

Ship charts, usage meters and AI features inside your product. Tenant isolation is handled by the contract, not by every endpoint you write.

01What goes wrong

Every new chart is a small security project.

Tenant isolation, rebuilt per endpoint

Every customer-facing query needs a `WHERE tenant_id = …`. Forget once and the wrong customer sees the wrong data.

AI features without governance

A language model on top of raw SQL invents answers. The hallucinations land in your customer's dashboard.

Backend coordination for every chart

New in-product metric means a ticket to data engineering, a new endpoint, more access logic to maintain.

// what changes for your users

Customer A only ever sees Customer A's numbers. Always. The contract enforces it before the query runs.

Tenant context flows from your backend. Gaur enforces it before the query runs.
02How Gaur fits

One API key per consumer. One context per request.

Your data team publishes contracts. Your product team calls them. Tenant context flows from your trusted backend, never from the end user, and Gaur enforces it before the query runs.

03A day in the integrator workflow

From consumer to rendered chart.

Each consumer is a scoped slice of your contracts, with its own API key. Your backend talks to it on every request from your product.

request-lifecycle.dot
Customer A
Opens your dashboard
session: a-482
Your backend
Adds the request context
context: { tenant_id: "a-482" }
Contract
Resolves access rules first
rls: s.tenant_id = {{ tenant_id }}
Response
Only Customer A's rows
200 · scoped result
  1. 1Step 1

    Pick a consumer, get an API key

    A consumer exposes the subset of contracts your product needs. The Bearer key your backend uses scopes everything the consumer can do.

    Consumers · API keys

  2. 2Step 2

    Pass tenant context per request

    Your trusted backend attaches the context object Gaur expects (tenant, user, whatever the contract declares). End users never set it.

    request.tenant_id, request.user_id, …

  3. 3Step 3

    Render the response

    Read paginated rows back from the query API, or stream gaur_event chunks from the chat endpoint. Same contracts, three shapes of consumer.

    Query API · Chat · MCP

Ready when you are

You run your business.
We run your analytics.

Hop on a 30-minute call. We'll connect a sandbox to your warehouse and show you Gaur on your numbers.