AI Roadmap · Step 03

Using AI Tools Daily

← Back to upskilling path

9:07 on a Tuesday

Maya is a product engineer at a fifty-person company. She has Claude open in one tab, ChatGPT in another, and Copilot quietly suggesting things in her editor. She pays for two of the three. By any reasonable measure she has plenty of AI.

And yet, if you asked her at the end of the week whether AI made her faster, she'd hesitate. Some days it feels like a superpower. Other days she spends twenty minutes wrestling a chatbot into producing something she could have written herself in five.

That gap is the subject of this lesson. It isn't a model problem — the models are fine. It's that Maya, like most people, is using AI ad hoc: reaching for whatever tab is open, accepting whatever comes back, and never quite building a routine she can rely on.

Most people plateau not because the tools are weak, but because they never turn scattered use into a system.

So let's follow one ordinary workday. Five moments, five decisions. Click any stop below to see what Maya is up against — we'll unpack each one as the lesson goes.

09:10 Inbox: 28 unread
10:30 Spec for a new feature
13:00 Unfamiliar codebase
15:00 Pick a queue technology
16:45 Meeting notes → actions

Three tools, three shapes

The usual way to compare AI tools is a feature table — context window, price, benchmark scores. It's the wrong lens for daily work, because by the time you're deciding what to open, the differences that matter aren't about model quality at all.

The thing that actually decides which tool you should reach for is where the tool sits relative to your work.

ShapeWhat it means in practice
inlineLives inside your editor. Sees the current file, completes as you type. Narrow view, zero switching cost. Copilot and friends.
chatLives outside your work. You carry context to it by pasting. Wide view, high switching cost — best for thinking, not typing. Claude and ChatGPT in a browser.
agenticLives in the project. Can read files, edit them, run commands. Widest reach, needs the most oversight. Claude Code, Cursor's agent mode.

Once you see it this way, most "which tool is better" arguments dissolve. Asking a browser chat to refactor across twelve files is painful not because the model is weak, but because you'd have to paste twelve files in and copy twelve results back out. Asking an inline completer to help you choose a database is equally awkward — it only sees the file you're in.

Try it. Pick where your work lives and what you need, and see which shape fits.

Where does the work live?
What do you need?
Pick one from each row to get a recommendation.
📝 Note: These shapes matter more than brand names. Tools copy each other's features constantly — the browser chat you use today probably gained file uploads last year, and your editor probably grew an agent mode. Judge the shape in front of you, not the logo.

Where it plugs in

Here's the unglamorous truth about daily AI use: the tool you actually use is the one that's already open. Friction decides everything. If reaching for AI means finding a tab, logging in, and re-explaining your project, you'll skip it exactly when you're busiest — which is when it would have helped most.

So the setup goal isn't "install everything." It's to make sure that at any moment, help is at most one keystroke away, in whichever of the three shapes fits.

Tick these off as you go — the ones you've already got count.

✓ Inline completion in your editor The lowest-friction win there is. It pays for itself on boilerplate, repetitive edits and test scaffolding — the typing you'd rather not do.
✓ A chat panel inside the editor Lets you ask about the code you're looking at without copying it anywhere. The middle ground between inline and browser chat.
✓ A global hotkey for a chat window One shortcut, from any app, to a blank prompt. This is the single highest-leverage setup step for non-coding work — email, docs, half-formed thoughts.
✓ An agentic CLI in your project folder For work that spans files: renames, migrations, "find everywhere we do X." Covered properly in Step 06.
✓ A place to keep prompts you reuse A notes file, a snippet manager, anything. The prompts you write twice, you'll write twenty times — stop rewriting them from memory.
0 / 5 set up
💡 Tip: Give your project a context file — a short document describing what the project is, its conventions, and its gotchas. Most agentic tools read one automatically, and for chat tools you can paste it once at the start. It's the difference between an assistant who's read your onboarding docs and one who hasn't.

The loop that does the work

Back to Maya at 10:30, staring at an empty spec document. She types "write a spec for a notification preferences feature", gets 600 words of confident, generic prose, skims it, sighs, and closes the tab. Nothing about it is wrong. Nothing about it is hers.

This is the most common failure in daily AI use, and it has nothing to do with prompting technique. It's that she treated a first draft as a final answer.

The first output is not the deliverable. It's the raw material.

Everyone who gets consistently good results is running some version of the same four-stage loop — and crucially, going round it more than once.

🎯 Frame goal, audience, constraints
→
✍️ Draft let it go first, fast
→
🔍 Critique make it grade its own work
→
♻️ Revise fix only what's weak
↺ until it's actually good

The stage almost everyone skips is Critique — and it's the one that changes the output most. You can ask the model to evaluate what it just produced, and it will find real problems, because judging text against criteria is an easier task than generating it perfectly the first time.

09:10 — the inbox

Maya's 28 unread aren't a writing problem, they're a triage problem. The wrong move is asking AI to draft 28 replies. The right move is asking it to tell her which ones actually need her.

Paste a batch of subject lines and senders — no message bodies needed.
Here are the subject lines and senders from my unread email. Sort them into: (1) needs a decision from me, (2) needs a short reply, (3) FYI only, (4) ignorable. For anything in group 1, add one line on what the decision actually is. Don't draft any replies yet.

Note the last line. Without it you get 28 drafts you didn't ask for and have to read anyway. Telling the model what not to do is doing real work here — the technique from Step 02, applied to a Tuesday.

10:30 — the spec document

This is where the loop earns its keep. Three prompts, not one.

1 — Frame & draft. Give it the things only you know.
I'm writing an internal spec for notification preferences in our B2B dashboard. Context: ~4,000 business users, most are admins managing teams. Our current setting is a single on/off toggle and support gets complaints about noise. Draft a spec with: problem statement, goals, non-goals, proposed behaviour, and open questions. Keep it under 700 words. Write for engineers and one PM, not executives.
2 — Critique. The stage that most people skip.
Now critique that spec as if you were the most sceptical engineer on the team. Specifically: - Which requirements are ambiguous enough to be built two different ways? - What edge cases are missing? - What did you assume that I never told you? List the problems. Don't rewrite it yet.
3 — Revise. Selectively, under your judgement.
Good catches on points 2, 4 and 5 — fix those. Ignore point 3; per-device preferences are explicitly out of scope, so add that to non-goals instead.

That third prompt is what makes the document Maya's rather than the model's. She's the one deciding which criticisms are real. The AI widened the option space; the judgement stayed with her.

16:45 — meeting notes

Messy notes into action items is close to the perfect AI task: tedious, structured, and you can instantly tell when it's wrong because you were in the room.

Works with raw, half-typed notes. Don't tidy them first — that's the job.
Turn these raw meeting notes into: 1. A 3-bullet summary of what was decided 2. Action items as "- [ ] Owner: task (by when)" 3. A list of anything raised but NOT resolved If an owner or deadline was never stated, write "unassigned" rather than guessing. Flag anything I've recorded ambiguously. Notes: [paste]
💡 Tip: "Write 'unassigned' rather than guessing" is a pattern worth stealing everywhere. Models fill gaps by default — that's what next-token prediction does. Explicitly giving it a way to say "not stated" turns invented detail into a visible blank you can go fill in.

Trust, but verify — and know which

"Always check AI output" is advice everyone repeats and nobody follows, because it's unaffordable. If verifying costs as much as doing the work yourself, the tool is pointless, and after a week of dutiful checking most people quietly stop.

The workable version is to spend verification where being wrong is expensive. Ask two questions: would I notice if this were wrong? and what does it cost me if I don't?

TierWhen it applies
ship itReversible, low stakes, and you'd spot a problem immediately. Tone rewrites, brainstorms, naming, first drafts only you will read.
spot-checkYou'd probably catch an error, but it would cost you something. Summaries of documents you know, routine code with test coverage, formatting jobs.
verify allYou would not reliably notice, and it matters. Facts, figures, citations, API behaviour, security-sensitive code, anything customer-facing or heading to production.

The dangerous zone is that third row, because fluent writing feels verified. A confident sentence and a correct sentence are produced by the same mechanism, and they read identically.

Four situations. Which tier?

Situation 1 of 4
You ask for five alternative names for an internal dashboard, to take to the team.
Ship it. Nothing here can be wrong in a way that hurts — they're options, not claims, and a human picks one. Spending verification effort on a brainstorm is exactly the misallocation that makes people abandon checking altogether.
Situation 2 of 4
It writes a function using a library method you haven't used before. Your test suite covers this path.
Spot-check — and specifically, check that the method exists and does what the code assumes. Invented-but-plausible API methods are a classic failure, and your tests only catch it if they actually exercise that branch. Read the library's docs for that one call; that's the whole check.
Situation 3 of 4
It summarises a 40-page vendor contract and tells you the notice period is 60 days. You're about to email the vendor.
Verify all. You haven't read the contract, so you cannot notice an error — and the consequence is contractual. Go find the clause. A good habit for this class of task: ask for the exact quoted sentence and its page number alongside every claim, which turns verification into a thirty-second lookup instead of a re-read.
Situation 4 of 4
It rewrites your rambling Slack message to your team to be clearer and shorter.
Ship it — you wrote the original, so you're the expert on whether the meaning survived, and you'll know in one read. The only thing worth watching: rewrites sometimes sharpen tone past where you meant it. Read it once as your reader, not as its author.

How to push back

When something looks off, "that's wrong, try again" is the weakest possible response — you've given it nothing to work with. These four questions do far more:

Keep these somewhere you can reach them. They work on almost any output.
"What did you assume that I didn't tell you?" → surfaces invented requirements before they become bugs "Which parts of this are you least confident about?" → a surprisingly honest map of where to look first "Give me the strongest argument against this approach." → breaks agreeable-by-default answers "For each claim, quote the exact source line." → makes unsupported statements impossible to hide

The paste test

At 13:00 Maya hits an unfamiliar service and wants to paste a stack trace into a chat window. It's a reasonable instinct. The trace also contains a database connection string.

You need a check that takes one second, because a rule that takes longer than the paste itself won't survive contact with a deadline. Here's the one:

If this text showed up in a screenshot on a public forum tomorrow, what happens?

That question resolves most cases instantly. Where it doesn't, the engineering detail matters:

That last point is the practical one. The goal isn't to use AI less; it's to strip what doesn't affect the answer.

Run the test. For each item — safe as-is, sanitise first, or never?

A snippet from a public library's documentation you're struggling to understand.
Safe as-is. It's already public. Nothing you paste here can leak anything that isn't on the internet already.
A stack trace from your staging server that includes DATABASE_URL=postgres://svc:9f2x…@db.internal.
Sanitise first. The trace is genuinely useful for debugging; the credential contributes nothing to the diagnosis. Replace it with a placeholder and paste the rest. If you'd already pasted it as-is, rotate that password.
A customer's support email, including their full name, address and order history, that you want summarised.
Sanitise first — assuming your organisation permits it at all. Strip name, address and anything identifying; the summary you want almost never depends on who the person is. If your company processes personal data under an agreement that doesn't cover this tool, it's a "never" regardless of how careful you are.
Your team's .env file, because something in the config is misspelled and you can't spot it.
Never — at least not as a file. A .env is nothing but secrets. If you want help with the shape of the config, paste the keys with every value replaced by x. That's a different artefact, and it's the one that actually answers your question.
A function you wrote, from a repository that's open source and already on GitHub.
Safe as-is. Public is public. Worth noticing how much of "is this safe?" collapses into the simpler question of whether the text is already out in the world.
The unreleased pricing strategy for next quarter, to sanity-check your reasoning.
Sanitise first. The strategic reasoning is the part you want checked, and reasoning survives abstraction: swap real numbers for representative ones and describe the market generically. You'll get the same critique. On a consumer tier with training enabled, treat the specifics as "never".
Answer the six above to see how you did.

Maya's Tuesday, rerun

Same day, same tools, different system. The inbox got triaged instead of drafted. The spec went round the loop three times and came out sounding like her. The unfamiliar codebase got explored with a tool that could actually see it. The queue decision got argued against before it got made. The meeting notes took ninety seconds. The connection string never left her laptop.

None of that required a better model. It required knowing which shape to reach for, refusing to accept first drafts, spending verification where it counts, and having one fast rule about what to paste.

The whole lesson, in five lines
  1. Match the shape to the work. Inline for typing, chat for thinking, agentic for changing many things at once.
  2. Remove the friction. The tool you use is the one already open — one keystroke, always.
  3. Never ship draft one. Frame → Draft → Critique → Revise, and make it critique its own work.
  4. Verify by blast radius. Would you notice if it were wrong, and what does it cost if you don't?
  5. Apply the paste test. Public forum tomorrow — what happens? Sanitise rather than abstain.

Up to now you've been using tools other people built. Next you'll build with the models directly — which is where you stop being limited by what a product happens to expose.

Up next

Building with AI APIs →

API keys, your first call, streaming, and managing cost — connecting AI to your own projects.

Start lesson →