LAB 06 · BUILD● READY
Ship an internal tool
OUTCOME / A DEPLOYED INTERNAL APP
- STACK
- Codex · GitHub
- LEVEL
- Intermediate
- TIME
- 90 minutes
PULLS OFF THE SHELFThe command line Projects & folders
What you’ll walk away with: a small working app that kills one recurring chore — built on fake data, tested by trying to break it, deployed at a URL your team can use — without a ticket, a backlog, or a meeting about the roadmap. Plus the one line internal tools must never cross carelessly: when real data enters.
You need: the same toolchain as Launch a website from one conversation — Claude Code installed, free GitHub and Vercel accounts — and about 90 minutes. If you shipped that lab, this is the same toolchain pointed inward; if not, its setup applies here too.
● VIDEO WALKTHROUGH
Watch, follow, or move the work to your desktop.
Play the full walkthrough here, pause at each handoff, then continue into Step 1 below.
Step 1 — Name the chore, not the app
Don’t start with “I want an app.” Start with the ritual: the numbers you copy between spreadsheets every Friday, the status report you assemble from four places, the list you check by hand. The test: it recurs at least weekly, it follows rules you could explain to a new hire, and it annoys you. Then:
Here is a chore I do repeatedly, start to finish: [describe every click and copy-paste]. Ask me questions until you fully understand it. Then propose the SMALLEST possible tool that eliminates it — three features maximum. What would version one refuse to do?
“Smallest” is load-bearing. The version waiting in a backlog has twenty features; the version that ships today needs three.
Step 2 — Spec it into a folder
Make a fresh folder for the project — this is
a folder as a project: the spec, the
data, and the journal all live where any future window can find them.
Have the chat write plan.md into your notes, then save it there: the
chore, the three features, what goes in, what comes out, and what version
one refuses to do.
Step 3 — Fake data first
Before anything gets built:
Generate a realistic fake dataset matching the real one I’ll eventually use: same columns, same messiness — [describe the shape: names, dates, amounts, the weird edge cases yours has]. Save it as sample-data.csv.
The rule, stated plainly: no real customer, financial, or personal data enters this project until the tool is finished and access is sorted. Fake data is freedom — you can test hard, share the URL, and break things in public, because there is nothing in it to protect.
Step 4 — Give it hands
Open a terminal in the folder and start Claude Code:
Read plan.md and sample-data.csv. Build this tool as a simple web app. Set up a git repository, commit as you go, and show me how to run it locally.
You don’t need to read the code — the command line is the same window with hands, and the repo is your undo button. When something’s wrong, describe it, don’t debug it: “the totals are wrong when a row has no date” is a perfect instruction.
Step 5 — Inspect like your most careless coworker
This is the INSPECT step of the method, and it’s where internal tools are won. Use the tool the way the least careful person on your team will: empty input. The wrong file. A huge file. Clicking submit twice. A phone screen. Every flub you find, describe it and rerun — you’re not reading code, you’re breaking the tool while breaking it is free.
Step 6 — Ship it, and draw the line
Create a private GitHub repository, push the project, and deploy it to Vercel. Give me the live URL.
Send the URL to one teammate with the fake data still in it. Then draw the line, in writing — have it add this to the repo’s README:
⚠️ Running on SAMPLE DATA. Before any real data enters this tool, it needs real access control. That is a separate piece of work, and it happens first.
A deployed URL is reachable by anyone who has it. With fake data, that’s fine — that’s why Step 3 exists. The day the tool earns real data is the day you stop and add a lock first; future-you will thank the README for refusing to let the shortcut happen.
From here it’s the living loop: a teammate asks for a change, you open the folder, start a fresh session, describe it, commit, deploy. The backlog never finds out.
Check your understanding: why does fake data come before the first line of code — and where exactly is the line before real data goes in?
Use this process for other small tools. Chore smallest tool fake data break it ship behind the line. That’s the report generator, the form filler, the list checker, the little dashboard — every “someone should really build us a…” your team has said out loud.