FOR ENGINEERING & DATA TEAMS
So you want to build a data tool for your team.
You could build the semantic layer, the permissions model, the audit trail, and the query infrastructure yourself. Or you could use the one we already built.
Someone in your org has asked for a Slack bot that answers data questions, an internal dashboard with live numbers, an ops tool that surfaces the right metrics for each team, or an AI-powered feature that gives customers visibility into their own data. These requests are reasonable. The infrastructure underneath them is not a weekend project.
The demo works quickly. The semantic layer, permission model, audit trail, and connector maintenance are what take the rest of the year — if you build them yourself.
[ What you're actually signing up for ]
The honest build estimate
The MVP takes a sprint. The infrastructure takes a year.
Connecting an AI to your database takes an afternoon. Getting a confident answer back to a simple question feels like a win. Then you try it in production — real questions, real users, multiple data sources — and you start finding out what you actually have to build.
The list below isn't specific to AI. Every internal data tool hits these problems. AI just surfaces them faster, because users trust a natural-language answer more than they trust a dashboard, which means the stakes of a wrong answer are higher.
building an internal data tool — what the project actually looks like
# Week 1 — The exciting part
✓ Connected to Postgres — the LLM can query the database
✓ "What's our MRR?" returns a number — looks great in the demo
✓ Slack bot prototype works for three test questions
# Week 3 — Real users, real questions
⚠ "Revenue" means different things in Salesforce vs. warehouse vs. dbt
⚠ Sales rep and CFO getting different answers to the same question
⚠ Large result sets crashing the query — context window overflows
⚠ Someone asked something they shouldn't — permissions not enforced
# Month 2 — The actual build begins
✗ Build semantic layer — encode every metric definition
✗ Build unified permission model — enforce at query time
✗ Build out-of-band result delivery — keep large results out of context
✗ Build schema caching — stop re-discovering on every request
# Month 4 — It works. Then something changes.
✗ Salesforce added a new object — schema cache stale, answers break silently
✗ New data source to integrate — start the connector build again
✗ Compliance asks for an audit trail — nothing is logged
✗ New team wants access — permission model doesn't generalize
# This is ongoing maintenance, not a one-time build.
What you're building
Build time
Ongoing cost
Semantic layer — metric definitions, business logic encoding
6–10 weeks
Permanent maintenance
Query result handling — pagination, large-dataset delivery
3–4 weeks
Per new data source
Unified permission model — enforced at query time, not UI
4–6 weeks
Every permission change
Schema caching — stop rediscovering on every request
2–3 weeks
Schema drift monitoring
Audit logging — who asked what, when, from where
2–3 weeks
Storage and query costs
Integration connectors (per SaaS tool or database)
1–2 weeks each
API changes, schema updates
Total — realistic first-pass
6–12 months
1–2 eng ongoing
Independent benchmarks put MCP-heavy architectures at 4–32× cost versus governed alternatives depending on query complexity. Schema overhead alone — before a single row of business data moves — costs approximately $5,100/month at 1,000 requests/day. At scale, one real-world analysis documented $81,000/month in overhead for MCP-heavy architectures.
[ The specific problems you hit ]
Not edge cases — structural problems
These aren't bugs in your implementation. They're the problems every team hits.
Whether you're building a Slack bot, an internal dashboard, or an AI-powered feature, the problems below are the ones that turn a three-week project into a six-month one. They're not unique to your stack.
-
✗
No shared definition of anything. Revenue is calculated differently in Salesforce, in your warehouse, and in your finance team's spreadsheets. Your tool will encounter all three. Without a semantic layer that encodes the canonical definition, users will get different answers depending on which source was queried. They won't know why. They'll stop trusting the tool.
-
✗
Permissions that don't generalize. Every data source has its own access model. Enforcing "this user can see this data, but not that data" across Salesforce, your warehouse, and your product database requires a unified permission layer — one that applies at query time, not just at the UI level. Without it, you either over-restrict (everyone sees the same thing) or under-restrict (someone sees something they shouldn't).
-
✗
Results that don't scale. Returning query results directly into an LLM's context window works for a handful of rows. A real business question — pipeline by region and segment, cohort retention, year-over-year comparison — returns thousands. The context fills, accuracy degrades, and sessions break. With 7 connected sources, over 67,000 tokens are consumed by tool definitions before any query runs. LLM accuracy on raw schemas without a semantic layer sits around 40%.
-
✗
Schema rediscovery on every request. Without persistent schema context, your tool has to re-learn the structure of your data on every query — table names, column meanings, relationships between sources. There is no accumulated institutional knowledge. The tenth time someone asks about churn, the tool knows as little about your churn definition as the first.
-
✗
No audit trail. When a business decision gets made based on a number your tool returned, someone will eventually ask where that number came from. If you haven't built logging from day one — what was queried, against which sources, with what result — you can't answer that question. Compliance, debugging, and user trust all depend on it.
-
✗
Connector maintenance is a full-time job. Salesforce changes its API. HubSpot adds a new object. Stripe renames a field. Each change breaks your connector until you fix it. Multiply this by every data source you've integrated, and you have a permanent maintenance surface your team owns forever.
[ What Supper gives you instead ]
The infrastructure, already built
Supper is the data layer your tool queries. You build the experience on top.
Supper sits between your data sources and whatever you're building — a Slack bot, an internal tool, an AI-powered feature, an agent, a dashboard. It pre-compiles your semantic context, enforces your metric definitions, applies unified permissions across every source, and returns verified answers through a standard interface.
Your tool doesn't connect to your Postgres database, your Salesforce instance, and your warehouse separately, with bespoke logic for each. It calls Supper. You own the product experience. We own the plumbing.
Without Supper — your tool manages every connection itself
What you're building
Slack bot
Internal dashboard
Ops tool
AI feature
→
Direct to sources — bespoke per connector
Salesforce API
Postgres
Snowflake
HubSpot API
Your tool handles semantic context, permissions, schema discovery, result pagination, and audit logging — separately, for each source, maintained by your team.
With Supper — one governed data layer, any interface on top
What you're building
Slack bot
Internal dashboard
Ops tool
AI feature
Agent
→
Supper
API · MCP
→
Your sources
Salesforce
Snowflake
Postgres
Stripe
+ more
Semantic model pre-compiled and cached. Unified permissions enforced at query time. Results paginated out of band. Full audit trail across every source and every caller.
The API
Four tools. Call them from anything — a Slack bot, an internal app, an agent, or a script.
Supper exposes four MCP tools: ask a question and get a verified answer, check the status of a query in flight, retrieve structured row data out of band, and pull semantic model metadata without running a query. OAuth authentication. Every call scoped to the requesting user or service account's permissions automatically. No custom SDK. No vendor lock-in.
Full parameter reference in the API docs →
[ What you don't have to build ]
-
✓
Semantic layer. Your data team works with our Forward Deployed Analysts to define your metrics and business logic in Supper. It stays current as your business changes. Your engineers don't maintain it. "Revenue" means the same thing everywhere, for every user, every time.
-
✓
Schema caching. Supper pre-compiles your semantic context into a compressed, cacheable form. Your tool doesn't rediscover the schema on every request. The context window goes to the query, not to setup.
-
✓
Result pagination and delivery. Large results don't flood the LLM context. get_answer_rows retrieves structured data separately, paginated, on demand — suitable for rendering in a UI, processing in a script, or passing downstream.
-
✓
Unified permission model. Supper enforces your access controls at query time across all connected sources. One permission model for every caller — Slack bot, internal tool, scheduled job, AI agent. Row-level, column-level, and data residency rules applied in one place, not bespoke per connector.
-
✓
Integration connectors. We build and maintain connectors to every data source. API changes, schema updates, new fields — caught and resolved before they reach your tool. You don't own that maintenance surface.
-
✓
Audit logging. Every query logged — who called it, which sources it touched, what logic was applied, what it returned. One audit trail across every caller and source, queryable, exportable, compliant out of the box.
[ What teams build on top of Supper ]
Slack / Teams bot
Anyone in the company can ask a data question, get a verified answer.
Your go-to-market team asks revenue questions in Slack. Your ops lead asks about headcount. Your CFO asks about burn. The bot calls supper:ask, gets a verified answer using your actual metric definitions, posts it back. Each response scoped to what that user is permitted to see — automatically.
Internal analytics tool
A custom ops or finance tool that your team actually trusts.
You're building an internal tool for a specific team — CS, finance, RevOps — and it needs live data surfaced in a way that's tailored to how that team works. Supper handles the data layer: connections, definitions, permissions, caching. You build the UI and the workflow logic on top.
Customer-facing analytics
Give your customers visibility into their own data inside your product.
Your product team wants to ship an analytics feature — a "how am I doing?" view for customers, or a usage report inside your app. Supper provides the governed data layer, scoped to each customer's data and enforced at query time. You ship the feature without building the security model from scratch.
Scheduled reporting
Automated reports that use your actual business definitions, every time.
Your weekly pipeline report, monthly finance summary, or board metrics run on a schedule via Supper's workflow engine. The same semantic model, the same definitions, the same permissions — whether a human asked five minutes ago or a scheduler ran at 6am.
AI agents
An agent that queries your data the right way, not just the convenient way.
When your outreach agent, forecast agent, or ops automation needs business data, it calls Supper via MCP. Verified definitions, unified permissions, full audit trail. Same as every other caller. Agents are one use case — not a special case.
Build the experience. Skip the plumbing.
Connect your sources, review the semantic model with our team, and start building on top of verified data. Most teams are querying live data within a day.
MCP v1 compliant
OAuth auth
Out-of-band result delivery
Semantic model pre-compiled and cached
SOC 2 Type II
Full audit trail