A complete data stack for under $50 a month
What a genuinely useful warehouse, pipeline and BI setup costs a 15-person company — with the actual line items, not a vendor estimate.
Every quote we review for a small business has the same shape: a warehouse with an annual commitment, an ingestion tool priced per row, and BI licences per seat. It lands somewhere between $800 and $3,500 a month. For a company of fifteen people moving a few hundred thousand rows, that is not infrastructure — it is a subscription to somebody else’s growth plan.
Here is what we actually deploy, and what it costs.
The line items
Warehouse — $0 to $25. For most small businesses, managed Postgres is the warehouse. It handles tens of millions of rows without complaint, everyone on your team already knows how to query it, and every tool on earth connects to it. If your analytical queries genuinely start to strain, DuckDB over Parquet in object storage handles a surprising amount before you need anything columnar and clustered.
Ingestion — $0. Scheduled extraction scripts, or self-hosted Airbyte if you have many sources with awkward APIs. The per-row pricing model only makes sense for vendors, and the connectors you need are almost always the well-maintained ones.
Transformation — $0. dbt Core is free and open source. dbt Cloud is the paid convenience layer; you do not need it to run models on a schedule.
Orchestration — $0 to $10. A GitHub Actions cron for a nightly batch. If your DAG genuinely grows complicated, a small Dagster or Airflow instance on a $10 container. Note the order: you graduate to the orchestrator when scheduling becomes hard, not before.
BI — $0. Self-hosted Metabase, or Looker Studio if your data is in BigQuery. Unlimited internal users, no per-seat pricing, dashboards good enough that nobody asks for anything else.
Object storage — a few dollars. Cloudflare R2 or Backblaze B2 for raw extracts and backups. Egress fees are where cloud storage bills actually come from, which is why R2’s zero-egress pricing matters more than the per-gigabyte rate.
That totals somewhere between $10 and $50 a month for a stack that will serve you until you are several times your current size.
What you give up
Being honest about the trade-off matters more than the savings.
You give up managed support — when a pipeline breaks at 2am, nobody is on call but you. You give up some polish; self-hosted Metabase is not as smooth as a modern commercial BI tool. You give up the ability to scale by upgrading a plan: at some point you will do a real migration, and it will take real weeks.
What you keep is the ability to make that decision when the data forces it, rather than at the start when a salesperson forces it.
When to spend the money instead
Do buy the managed option when the failure mode is genuinely expensive — if your pipeline feeds customer-facing billing, pay for something with an SLA. Do buy it when you have no engineering capacity at all and never will; unmanaged infrastructure with nobody to manage it is worse than an overpriced subscription. And do buy it when your data volume has actually arrived, not when it is projected in a deck.
The rule is not “always choose cheap”. It is: pay for scale when you have it, and not eighteen months early.