The case for boring stack choices
Why "boring" tech is usually the right choice for client work, and when it's worth being adventurous.
Our default stack for new client work has been TypeScript + Next.js + Postgres for years. We pick it not because it's exciting but because it's boring, well-documented, and easy to hire for.
Adventurous tech choices have a cost. New frameworks have small communities; new databases have edge cases that bite you on Sunday at 2am; new languages mean a smaller pool of engineers to maintain the code in 18 months.
We're adventurous in the AI layer (we use whatever model fits), the deployment layer (whatever runs on AWS easily), and the integration layer (whatever your stack speaks). Everything else stays boring on purpose.
Keep reading
More from the blog.
How we ship LLM features without breaking prod
Evals, traffic shadowing, and the boring deploy gates that keep our agents trustworthy.
Mar 21, 2026 · 11 min read
Designing AI agents that escalate well
The hardest part of an autonomous agent is teaching it when not to be autonomous.
Mar 08, 2026 · 9 min read
Why we still write CRMs from scratch in 2026
Salesforce and HubSpot are great. Sometimes a custom Laravel CRM is still the right answer.
Feb 26, 2026 · 7 min read
Get started
Want this in your inbox?
We email occasionally — when there's something genuinely useful to share. No spam.