Journal — July 30, 2026 · 5 min read

Retool for Internal Tools — What Building for a Dozen Clients Taught Me

Two years of shipping Retool apps for client after client — where it genuinely beats writing a custom app, where it quietly falls apart, and how to decide before you commit.

At Toolpioneers I spent a long stretch building internal tools in Retool for client after client — ops dashboards, admin panels, approval flows, support consoles, the software companies run on but never show anyone. Different industries, different data, same shape of problem.

That volume taught me something a single project wouldn't have: Retool is excellent at a narrower set of things than its marketing suggests, and the projects that went badly went badly for the same reason every time.

Here's the honest version.

What Retool is actually good at

Putting a UI on a database, fast. This is the core use case and it's genuinely unbeatable. Point it at Postgres, drag a table onto a canvas, wire a query, add a form. What takes a week in Next.js — schema, API route, auth, table component, pagination, form validation — takes an afternoon.

For internal tools, that speed difference is the entire argument. Nobody is going to fund four weeks of engineering so the ops team can stop editing rows in a SQL client. They will fund two days.

Connecting things that don't want to connect. A tool that reads from Postgres, writes to a Stripe endpoint, pushes a Slack notification and logs to a Google Sheet is an irritating afternoon in Retool and a genuinely annoying week in custom code — mostly spent on credentials, SDKs and error handling you'll never look at again.

Access control you don't have to build. Permission groups, SSO, audit logs, and who-can-see-which-app come with the platform. Building that properly is weeks of work, and it's the part clients assume is free right up until you quote it.

Work nobody wants to maintain. A lot of internal tooling has a two-year shelf life. Building a bespoke app for something that gets replaced when the process changes is a bad trade. Retool is the right amount of investment for software with an expiry date.

Where it bites

Every one of these cost a client real time.

Version control is not what you're used to. Retool has its own source control integration, but the mental model is not "my code is in git and git is the truth." Reviewing a diff is not like reading a pull request. If you have engineers who expect branch-and-review, set expectations early or you'll be relitigating it every sprint.

Big datasets hurt. Pulling a large result set into a table component and filtering client-side works beautifully in the demo with 200 rows, and falls over at 200,000. The fix is always the same — push filtering, sorting and pagination into SQL and return a page at a time — but people build the demo version first and only find out when real data arrives.

Custom components are a cliff, not a slope. Everything is fast until you need one interaction the platform doesn't have. Then you're writing a custom component, wiring it into Retool's model, and debugging inside an iframe. The productivity curve doesn't degrade gracefully — it drops.

Complex state gets ugly. Retool is at its best when apps are mostly stateless: load, display, act, reload. Multi-step wizards with interdependent state are possible and they are not pleasant. When I see a spec with a five-step flow and conditional branching, that's my signal to push back.

Pricing scales with seats. For a small ops team it's trivially cheap next to engineering hours. For a tool that eventually needs to reach hundreds of people, run the numbers before you build — the calculus that made Retool obvious at ten users can invert at three hundred.

You're renting the platform. Self-hosting exists and helps, but your apps are still Retool apps. Migrating off means rebuilding. Worth accepting deliberately rather than discovering later.

The question that predicts the outcome

After enough of these, I stopped asking about features and started asking one thing:

Who uses this, and is it internal?

If the answer is "twenty people in ops, internally" — Retool, almost every time. Speed wins, the constraints don't bind, and nobody cares that the buttons look like everyone else's buttons.

If the answer involves customers, or public sign-up, or "eventually we'd want to sell this" — build it properly. Not because Retool can't render it, but because you'll hit branding, performance and pricing walls simultaneously, and you'll hit them after you've committed.

The projects that went wrong were all the same story: a tool that started internal and quietly grew a customer-facing requirement halfway through. That's not a Retool failure. It's a scoping failure that Retool makes expensive.

How I'd advise a client today

Use Retool when it's internal, the users are countable, the value is in the data rather than the interface, and the thing may not exist in two years.

Build custom when customers touch it, the UI is the product, you need real version control and a test suite, or the seat count is heading somewhere expensive.

Do both, deliberately. The best setup I've seen: customer-facing product in Next.js, internal admin in Retool. Each tool doing what it's good at, and nobody pretending one should be the other.

The part I didn't expect

The hardest thing about client Retool work was never technical. It was that "low-code" makes people think "no expertise required," so the work gets scoped like it's trivial.

It isn't. The database design still matters. The query performance still matters. The permissions model still matters. Retool removes the UI plumbing — which is real and valuable — and leaves every hard decision exactly where it was.

The clients who got the most out of it were the ones who understood they were buying speed on the boring parts, not a way to skip the thinking.

If you're weighing this for your own team, the internal tools work I do covers both sides — Retool where it fits, custom where it doesn't, and an honest answer about which one you're actually looking at.