Skip to content

Buy, Don't Build

The single biggest time sink for someone shipping with AI isn't writing the feature that makes their project special — it's rebuilding the plumbing every project needs. Auth. Payments. Image hosting. Email. An affiliate program. Scaling.

All of it is a solved problem. Someone runs it as a service, on a free tier, with better security and uptime than you'll manage alone. So the rule is simple:

Use what already exists. Build it yourself only when you've actually hit a wall the service can't clear — never before.

Your time is the scarce resource. Spend it on the one thing that's actually your idea, and rent everything else. A weekend spent self-hosting images is a weekend you didn't spend on the product.

So most of the work becomes glue — wiring these services together — and that's exactly where your effort should go. "Buy or glue, don't build" is the same rule said another way: reach for a service first, connect a few of them second, and write something from scratch only when neither will do.

The jobs to rent

Read the Universal Toolbelt first — some of these (auth, hosting, error monitoring) already live there. This page is the wider list of "don't build this" jobs you'll hit as your project grows.

JobUse this insteadWhy you don't build itLink
Auth & loginsClerkSessions, social login, and password resets are a security minefield — one mistake leaks accounts.Clerk docs
Payments & subscriptionsStripe (Lemon Squeezy / Polar to handle sales tax for you)Handling cards yourself means PCI compliance; a merchant-of-record also files your taxes.Stripe docs
Image & file uploadsUploadThing (Cloudinary when you need resizing/transforms)Hosting, CDN delivery, and resizing images yourself burns storage, bandwidth, and a weekend.UploadThing docs
Affiliate / referral programRewardful (or Tolt)Tracking referrals and paying out commissions is a whole accounting system — plug one into Stripe instead.Rewardful
Transactional emailResendRunning a mail server means fighting spam filters forever; deliverability is someone's full-time job.Resend docs
Scaling & serversServerless / backend-as-a-service (Cloudflare Workers, Supabase)Let the platform add capacity on demand instead of provisioning, load-balancing, and babysitting servers.Cloudflare Workers docs
Background jobs & cronInngestA queue and scheduler are infrastructure to operate and debug; rent the reliability.Inngest docs
Full-text searchAlgolia (or Typesense Cloud)Building relevant, typo-tolerant, fast search is a research field, not a feature.Algolia docs
Product analyticsPostHogEvents, funnels, and session replay on a free tier beat a console.log you grep by hand.PostHog docs
Content / blog (CMS)SanityDon't hand-edit content in code and redeploy — give yourself (or a client) an editor.Sanity docs

When it's actually time to build

"Don't build it yet" isn't "never build it." Outsource by default, then bring a job in-house only when you can point to a concrete wall — not a hunch:

  • The cost stops making sense. The service is now more expensive at your scale than running it yourself would be, and you've done the math (including your own time).
  • It can't do the one thing you need. You've hit a hard limit of the product, not just a setting you haven't found. Check the docs and support first.
  • It is your product. If the thing you'd be renting is the actual core of what makes your project special, that's the one place to build deeply.

Until one of those is true, the answer is the same: there's probably a service for that. Reach for it.