How to build
How to build an internal tool or dashboard without code
Internal tools are the work that never reaches the top of an engineering backlog, because each one is individually small and collectively enormous. The operations team wants an admin panel; finance wants a tracker; someone is running payroll out of a spreadsheet with four tabs of formulas nobody dares touch. These are all the same shape of problem, and that shape is now describable rather than buildable.
What you’re building
An internal tool is any small app your team uses to get work done that you would never sell: an admin panel, a request queue, an approvals flow, an inventory tracker, a reporting dashboard. Built here it has a real database, real screens, and a URL behind sign-in.
Who this is a good fit for
- Operations and finance teams whose requests sit permanently below the product roadmap
- Anyone maintaining a spreadsheet that has quietly become load-bearing
- Engineers who could build it but have better things to do with a week
How to build it
Step 1
Describe the tool and who uses it
Say what the tool is for, who touches it, and what they do to a record. "Who touches it" matters more than people expect — a request queue where anyone can approve is a different app from one where only a manager can, and that distinction is easier to state now than to retrofit.
Ops Consoleops-consoleDescribe it
Build an internal request tracker for our ops team. Anyone can submit a request with a title, category, urgency and description. Ops staff can assign it, change status (New → In progress → Blocked → Done) and leave comments. Managers can see a dashboard of open requests by category and age.Build itStep 2
Connect where the work already happens
Internal tools die when they become a second place to check. Connecting Slack means new requests announce themselves in the channel people already watch; connecting Sheets means the finance export they rely on keeps working. The tool joins the existing workflow rather than competing with it.
Ops Consoleops-consoleConnect
Slackpost to #ops-requestsConnectedGoogle Sheetsread + writeConnectedLinearcreate issuesConnectedStep 3
Watch it build the screens and the permissions
It generates the submission form, the queue view, the detail screen with comments, and the manager dashboard — plus the role logic that decides who sees which. Permissions are built in from the description rather than bolted on, which is the part hand-rolled internal tools usually skip and regret.
Ops ConsoleCreated tables: requests, comments, usersRoles: submitter, ops, managerGenerated submit form + queue + detail viewDashboard: open requests by category and ageSlack: new request → #ops-requestsStep 4
Ship it to the team and iterate on real use
Publish, send the link, and let people use it badly for a week. What comes back — a missing field, a status nobody uses, a filter everyone wants — is the real spec, and each of those is one sentence to fix. This loop is the entire reason building it yourself is now reasonable.
ops.trysomething.siteOpen
24
Blocked
3
Avg age
2.4d
-0.6d
Laptop replacement — ITIn progressVendor invoice query — FinanceBlockedAccess to staging — ITNew
What it does once it’s running
- Forms, queues, detail views and dashboards generated from one description
- Role-based permissions — who can submit, who can action, who can only watch
- Notifications into Slack or email so the tool reaches people where they are
- Reads and writes the Sheets and trackers your team already depends on
- A URL behind sign-in, no deployment step to think about
Tools it connects to
What it won’t do
- Built for internal use behind sign-in — not for a public, unauthenticated product surface
- Very large datasets (millions of rows) want a real warehouse behind them rather than this as the store
- Complex approval chains with legal sign-off requirements usually need review before they go live
Start from a template instead
Each of these opens with the prompt already written. Edit it before you build.
Common questions
- What counts as an internal tool?
- Anything your team uses to get work done that you would never sell: admin panels, request queues, trackers, approval flows, reporting dashboards, small CRUD apps over a dataset. If it currently lives in a spreadsheet with too many tabs, it is probably this.
- Can I control who can do what?
- Yes. Describe the roles when you describe the tool — who submits, who actions, who only watches — and the permissions are built in rather than added later. You can change them afterwards by asking.
- Does it replace Retool or Airtable?
- It overlaps. The practical difference is that you describe the tool instead of assembling it from components or configuring a base, and you get a real app with its own database rather than a layer over one. For simple tracked lists Airtable is often enough; this starts paying off when the logic gets specific to how you work.
- What if we already have the data somewhere?
- Connect it. Sheets, Airtable, Notion and the rest can be read and written directly, so the tool can sit on top of the data you already maintain instead of asking people to move it.
Related use case
AI agent for operations & project automationCreate, sweep, and sync tasks across chat, issue trackers, and code automatically.
Build it in the next ten minutes
Start with a sentence. Leave with a working app on its own URL.