We don't pick tools by category. We pick the smallest stack that supports a 4-person operator pod shipping revenue in 90 days. This document is the 2026 default stack. The numbers under each section are the all-in monthly run rate at typical engagement scale (50–300 paying customers, 5K–50K monthly active users, ~$25K–$200K MRR).
Stack churn is the silent killer of velocity. Every tool swap costs 3–5 weeks of operator focus, even when the new tool is 'objectively better.' Our rule: a tool only gets replaced when (a) it's the active bottleneck for the next $50K MRR or (b) compliance forces it. We refuse stack changes for ergonomic reasons. We've held the same Postgres setup since 2022 — and we'll continue to until it becomes the bottleneck. It hasn't yet.
// noteIf your stack reads like a SaaS expo floor — 18 tools, 6 of them overlapping — you're not deploying revenue infrastructure. You're collecting subscriptions. The stack below is everything we run for a typical $200K MRR venture. All-in: ~$2,400/month.
Tier 1 — Data + Revenue Ledger
// Monthly run rate
Across 4 components, all production-grade
~$120/mo
Postgres (Supabase)
Single source of truth for leads, opportunities, accounts, agent actions, revenue events. We've evaluated Planetscale, Neon, RDS, and self-hosted at every engagement renewal since 2023. Supabase still wins on velocity + cost. Postgres-native is non-negotiable — we will not deploy MongoDB or any document store for transactional data, full stop.
Why Postgres specifically: every analyst on the bench can read SQL. Every framework we use has a Postgres driver. Every BI tool integrates natively. The cost of a non-Postgres choice is paid every time a new operator joins or a new tool gets integrated. The math never favors the alternative.
dbt + a Tiny Attribution Model
We run a minimal dbt project — usually 8–15 models. The attribution model itself is under 200 lines of SQL. It joins UTM data, first-touch signals, and assisted touchpoints into a single `revenue_attribution` table. Reviewed weekly. Tuned monthly. No black-box vendors involved.
PostHog (Product Analytics)
Self-hosted on the same Supabase instance where possible (free tier covers most engagements until ~$100K MRR). For larger engagements we move to PostHog Cloud. We don't use Mixpanel, Amplitude, or Heap — PostHog covers 90% of the use case at 5% of the cost.
Stripe (Billing + Revenue Source of Truth)
Stripe is the revenue source of truth. The Postgres ledger reconciles to Stripe weekly. Any discrepancy is investigated within 48 hours — we've found revenue leaks worth $4K–$18K MRR three times in the last year just from this reconciliation discipline.
Tier 2 — Lead Engine
// Monthly run rate
Across content infra + outbound stack + paid (when applicable)
~$480/mo
Programmatic SEO (Next.js + Structured Data)
For the long tail. We ship between 30 and 300 vertical pages depending on the engagement. Built in Next.js (App Router), generated from a structured-data source, indexed via sitemap + Search Console submission on day 1.
The win condition is not 'rank on Google.' The win condition is 'become the canonical answer to N specific questions in your vertical.' That's a different game. Most agencies pitching programmatic SEO are playing the wrong game — they optimize for volume of pages, not for canonical authority on specific queries.
Outbound (Only When the Math Works)
Outbound is the second channel, not the first. We only deploy it when the ICP is enterprise + the average cycle is >$25K ACV. Below that threshold, the unit economics never clear. Our outbound stack: Clay for enrichment, Smartlead for sequencing, Apollo for the data layer.
Paid (Last Resort, Not First)
We refuse to lead with paid for any venture under $500K ARR. The math is simple: at sub-$500K ARR, every paid dollar is opportunity cost against owned channels. Above $500K, we'll deploy paid as a third channel — Google Ads first, LinkedIn second, Meta third (and only for very specific D2C-adjacent verticals).
Tier 3 — Agent Stack
// Monthly run rate
Claude + OpenAI + Vapi (if voice) + n8n hosted
~$650/mo
Claude Sonnet 4.6 — Reasoning + Writing
Default model for everything that requires reasoning, structured output, or natural writing. We benchmark every quarter against GPT and Gemini equivalents. Claude wins on instruction following, refusal calibration, and steerability — which translates to fewer rebuild cycles per agent.
OpenAI Embeddings + Classification
We use OpenAI for embeddings (text-embedding-3-large) and cheap classification tasks (gpt-4.1-mini for sub-50ms decisions). Multi-model is a pragmatic choice — each model wins on different cost/latency profiles.
Voice — Vapi or ElevenLabs (Depending on Use Case)
Vapi for outbound calling agents (real-time STT + TTS, sub-300ms latency end-to-end). ElevenLabs for any pre-recorded voice content (greetings, IVR menus, notifications). We don't deploy voice agents for any vertical with regulatory voice-disclosure requirements (healthcare, finance in certain jurisdictions) without a 4-week compliance pre-phase.
n8n — Orchestration
We orchestrate with n8n before we orchestrate with code. The threshold for moving to code is around 5K agent actions per day or any workflow that requires sub-100ms decisioning. Below that, n8n's visual workflow editor is faster to debug and iterate than any code-first alternative.
Tier 4 — Churn + Expansion
// Monthly run rate
Pylon (or similar) + our agent infra
~$280/mo
Churn.Guard — Deployed at 20 Paying Customers
Custom agent we built (see the engineering playbook). Watches three signals: usage decay, conversation sentiment, stakeholder departure. Detects at-risk accounts in ~3 days vs the 21-day industry average. Costs almost nothing to run because the rules are deterministic — we only invoke Claude for the conversation sentiment classifier.
Expansion.Engine — Usage-Triggered Upgrade Prompts
When a customer crosses 80% of their tier's usage threshold, expansion.engine fires a contextual upgrade prompt. Not a generic 'upgrade now' banner — a specific 'you're at 18 of 20 seats; here's what the next tier unlocks' message timed to their actual workflow.
Tier 5 — Communication + Support
// Monthly run rate
Pylon + Slack Connect + Loom
~$220/mo
Pylon for shared inbox + customer Slack channels. Slack Connect for direct customer relationships (we've migrated 100% of customer-facing communication off email for >$2K MRR accounts — the relationship quality and response time are both dramatically better). Loom for async product reviews — every product update over 5 minutes gets a Loom from the principal operator.
What's Not In The Stack
These are tools we explicitly chose not to deploy, and the reasoning behind each. The 'no' list is more interesting than the 'yes' list.
- ▸Salesforce / HubSpot CRM — Too heavy for a 90-day deployment. We use a custom Postgres-backed CRM that ships in 2 days. For engagements that need a 'real' CRM, we deploy Attio (lightweight, modern, fast).
- ▸Marketo / Pardot — Overkill for sub-$500K ARR. Customer.io covers 95% of the use case at 10% of the cost. We don't even default to Customer.io — we usually run lifecycle emails directly from our own infra via Resend + Postgres state.
- ▸Segment / RudderStack — We log events directly to Postgres. Segment makes sense above ~$5M ARR. Below that, it's $400/mo of vendor lock-in for a wrapper around `INSERT INTO events`.
- ▸Looker / Tableau — We run weekly reports as SQL → markdown → Notion. BI tools are necessary above ~$10M ARR. Below that, they're a tax on velocity.
- ▸Generic 'AI sales assistant' tools — Every category leader is selling a wrapper around the same 3 LLMs. We build the wrapper ourselves, calibrated to the specific venture. Always cheaper, always faster to debug, always more accurate.
When the Stack Will Change
Here's our short list of what we're watching, and the specific threshold that would trigger a swap.
- ▸If Supabase pricing changes meaningfully on the >$50/mo tier, we'd re-evaluate Neon for self-managed setups
- ▸If an open-source equivalent of Vapi reaches feature parity and <300ms latency, we'd consider it for cost reasons at scale
- ▸If Claude pricing on Sonnet shifts significantly, we'd re-test the multi-model routing layer (currently 95% Claude / 5% OpenAI)
- ▸If PostHog adds a feature parity gap with Amplitude on session replay, we'd review (currently good enough; the gap matters at $50M+ ARR scale)
// noteThe most valuable thing in this document is the 'No' list. Anyone can pick tools to add. Picking what to remove — and committing to not revisiting it without data — is what produces velocity over 12 months.
Run This Stack On Your Venture?
Book a 30-min call. We'll review your current stack against this one, identify which components are likely net-negative for your venture, and tell you what we'd swap in week 1.
