Blog

Notes from the studio.

How we design, build and ship — the decisions, the trade-offs and the things we’d do differently.

Why we build realtime-first on Convex

Live data used to be a premium feature. Here’s how a reactive backend changed what we promise clients — and what it costs.

Read article

Designing in shipping resolution

Low-fidelity wireframes hide the hard decisions. We skip straight to production-grade prototypes. Here’s why it’s faster.

Read article

Agents that close the loop: lessons from 60% auto-resolution

What it took to move an AI support suite from demo to resolving the majority of tickets on its own.

Read article

Six stages, one team: how we run an engagement

From consulting to support — what happens at each stage, and why nothing gets thrown over a wall.

Read article

Transparent billing, or how to stop arguing about hours

Every engagement ships with a live workspace. Clients see tasks, time and spend as it happens.

Read article

QA is a product feature

Exploratory testing, e2e suites and regression budgets — breaking things before your users do.

Read article

Prototype before you commit

How an in-browser React prototyping studio lets founders see an idea move before production code exists.

Read article

RAG that cites its sources

Retrieval is easy to demo and hard to trust. Here’s how we make enterprise search answers verifiable.

Read article

Offline-first mobile apps for field teams

Drivers and technicians don’t get to choose their signal. Here’s how we design sync that never loses work.

Read article

The discovery sprint: two weeks that save six months

Why we start almost every engagement with research and a clickable prototype instead of a backlog.

Read article

Design systems for small teams

You don’t need a dedicated team to have a design system. You need a few tokens, a few components and discipline.

Read article

Double-entry ledgers for product teams

If your product moves money, you need a ledger. Here’s a practical introduction without the accounting degree.

Read article

Type safety from database to button

End-to-end types catch a whole class of bugs before they exist. Here’s our stack and why it pays off.

Read article

Evals are the new unit tests

Shipping LLM features without evaluation is shipping blind. How we build eval sets that actually catch regressions.

Read article

Why we stay for the first ten releases

Launch is where the real work starts. What we learned from staying with products long after go-live.

Read article

Accessibility is a quality bar, not a checklist

Keyboard paths, contrast and screen readers — how we bake accessibility into every sprint instead of auditing at the end.

Read article

Observability for small products

You don’t need a platform team to know when things break. A lean setup for logs, metrics and alerts.

Read article

Working across time zones without losing a day

Clients in 11 countries taught us how to run async-first projects that still feel fast.

Read article

Cutting LLM costs by 70% without losing quality

Caching, routing and smaller models — practical ways to make AI features affordable at scale.

Read article

Motion with a purpose

Animation should explain, not decorate. Our rules for motion that makes interfaces easier to understand.

Read article

Estimate your project

Five quick questions → a plan for your product.

01 / 05What are you building?