New teams get free Claude credits for their trial. Learn more

You don't need a data warehouse for analytics

May 18, 2026•6 min read•Vivek Sah

Hi, this is Vivek, building Contextflo. I share practical notes on getting answers from your data, a couple of times a month.

You don't need a data warehouse for analytics

Most teams' data lives in four or five places at once: a Postgres database running the app, Stripe for payments, Amplitude or Mixpanel for product events, HubSpot or Salesforce for CRM. None of them talk to each other, and the usual advice is to copy all of it into a warehouse before you can ask a single question across them. You can query them where they already live instead.

You don't need a data warehouse for analytics

Until recently the only way to query across those sources was the modern data stack: replicate everything into a warehouse, transform it with dbt, layer a BI tool on top. That is $3,000–10,000 a month in tooling and weeks of engineering before anyone can ask a question.

That is changing. MCP connectors now exist for most major data sources, so Claude can talk to Postgres, Amplitude, Stripe and others with no warehouse in between.

Example: Postgres and Amplitude in Claude

Say your user data and orders live in Postgres, and product analytics live in Amplitude. You want to ask things like:

What's the 30-day retention for users who came from the Google Ads campaign vs organic?

Show me revenue per user segment, broken down by their most-used feature.

Both span two systems: revenue in Postgres, behaviour in Amplitude. With MCP connectors you can wire both into Claude:

// claude_desktop_config.json
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://read_user:pass@host:5432/mydb"
      ]
    },
    "amplitude": {
      "url": "https://mcp.amplitude.com/mcp"
    }
  }
}

Which Postgres MCP server you pick matters more than this snippet suggests. They differ on whether read-only is actually enforced. We compared the current options in Best Postgres MCP servers; check that before pointing one at production.

Most major SaaS tools now offer remote MCP servers. You authenticate over OAuth and Claude queries their data directly. Ask about retention, it pulls from Amplitude. Ask about revenue, it queries Postgres. Ask something crossing both and it combines them.

No warehouse, no ETL pipeline, no dbt models.

Where this breaks down

This works well for a technical founder exploring their own data. Scale it to a team and the cracks show:

  • Everyone manages their own config. Each person sets up their own MCP servers with their own credentials. Your marketing lead is not editing JSON config files.
  • No shared context. Claude sees usr_acct_v2 and btn_clk_checkout_v3. Without descriptions it guesses, and different people get different guesses.
  • No metric consistency. When the CEO asks for MRR and the head of sales asks the same thing, they should get the same number. With raw connectors, Claude writes different SQL each time.
  • Credentials everywhere. API keys and database passwords in config files on every laptop. No central access control, no way to revoke when someone leaves.
  • No audit trail. No visibility into what is being asked, what answers came back, or whether the SQL was right.
  • Cross-source joins are fragile. Claude can query Postgres and Amplitude separately, but stitching results together in context works for simple cases and breaks on complex ones.

The second and third points are the ones that bite quietly. A broken config announces itself. Two people getting different MRR does not, until it surfaces in a meeting.

What Contextflo does differently

Contextflo provides managed connectors for the major sources: Postgres, BigQuery, Snowflake, ClickHouse, Redshift, Databricks, Amplitude and more. That list mixes production databases and warehouses on purpose. It works whether or not you run a warehouse, so you can start on the Postgres you already have and get governed answers without a migration first. Instead of each person wiring up their own servers, you connect once and the whole team gets access through Claude.

DIY MCP connectorsContextflo
Each person configures their ownConnect once, everyone gets access
Raw schema, no descriptionsGenerated context for every table
Credentials on every laptopCentralised credentials, per-user ACL
No metric definitionsShared metric definitions
No query auditFull query audit log
No access controlGovernance out of the box

The connectors are managed, so authentication, schema syncing and context generation are handled. When your Postgres schema changes or Amplitude adds events, the context updates.

When you actually need a warehouse

Invest in one when:

  • You need complex transformations that take minutes to run
  • You are joining ten or more sources with complex relationships
  • You need historical snapshots and slowly-changing dimensions
  • You have a data team who can maintain the pipeline

That third one is the one people skip and later regret. Querying live sources always shows you the present. If you need to know what a customer's plan was in March, and the source row has since been overwritten, no amount of connecting will recover it. A warehouse is partly a query engine and partly a memory, and only the query half is easy to replace.

If your data lives in a Postgres database and a handful of SaaS tools, connecting them directly with proper context and governance gets you governed answers this week instead of after a warehouse migration.

And when you do add a warehouse, the same context layer works. Just add the connection.

Here is a more in-depth look at Contextflo and how it works.

What is Contextflo?

Contextflo is a governed context layer between your data and the AI your team already uses. Connect your warehouse once, and your team asks questions in their own Claude or ChatGPT. The model writes and runs the SQL; Contextflo supplies the definitions, the per-user access control, and the audit that make the answers trustworthy. Your data never moves, and you do not need a data team.

How it works

1
Connect your data
Point Contextflo at your warehouse or database, or upload a CSV. It reaches multiple sources at once, so a single question can span all of them.
2
Generate context automatically
Connect your code repo, Notion docs, or a data dictionary, and Contextflo annotates each table in your data source where it can. You review and correct them. That becomes the foundational context layer: your AI agent does not just see tables, it sees the context around them.
3
Define metrics and save golden queries
Pin the verified SQL behind a metric once. Every question then resolves against the same definitions, so the number is consistent no matter who asks or how they phrase it.
A short walkthrough on a BigQuery warehouse.

Your team queries in their own Claude or ChatGPT over MCP, so you bring any agent rather than a locked-in bot, and every answer comes back with the SQL shown and access enforced per user.