Teaching AI to Build Projects

What’s in this guide?

Twelve steps for building a real project with AI. The process, the mistakes, and a final checklist for every work session.

Most people I meet open a chat, type “write me code that…”, and get back 80 lines that don’t run. Or that run, but don’t do what they asked for. They try to fix it with another line of request, they get another 80 lines that are further off, and eventually they close the chat and go back to working by hand.

It’s different for me. And not because I’m an experienced developer. I’m not. It’s different for me because I built a method. A method where the AI learns with me not just the code, but how I think about projects. How I define a problem. What I’m willing to have in the first version, and what I’m not.

In this guide I’ll walk you through that process. Including all the mistakes I made along the way. These aren’t generic examples. They’re real projects I built: a podcast that assembles 44 minutes of video from 2 different sources, a tool to categorize 1,200 bank transactions, and an HTML page that generates calendar links.

One thing worth saying up front: you’re going to fail along the way. One of my most meaningful mistakes was when I built the first episode of the podcast, discovered a one-second audio-video desync, tried 5 fixes that didn’t work, and almost gave up. That’s when I understood something that’s stuck with me ever since: when a fix doesn’t work, the reason usually isn’t that the fix is wrong. The reason is that you identified one problem, but there were three. I’ll get to it.

Chapters in this guide
  1. Why “write me code” doesn’t help
  2. A problem, not an idea
  3. The story before the tech
  4. The environment: your editor and how the AI talks to your files
  5. “Plan, don’t write code yet”: the first conversation
  6. The first version: only what’s essential
  7. Build piece by piece, not all at once
  8. Two separate conversations: planning and execution
  9. The moment that changes everything: 3 problems, one symptom
  10. When the AI says “yes” without actually doing it
  11. Fix, save, don’t repeat the same bug
  12. The final checklist for every work session
1
Why “write me code” doesn’t help

People open the chat and type “write me code that filters bank transactions by category.” They get back 80 lines of code that expect a data file in a specific format, with column names the AI made up, and categories the AI invented.

They run it. It falls over. Because their bank exports an Excel file in a different structure. Different column names. And categories are a personal thing, not a generic list.

So what do people do? They improve the request. They write “write me code that filters transactions from Bank X in Excel format.” They get the same code, slightly different. It still falls over. Because it doesn’t know that in one bank’s file the amount is in column D, and in another it’s in column B.

The principle: The problem isn’t the request. The problem is the AI knows nothing about your project. It hasn’t seen the file. It hasn’t seen your previous files. It guessed. Another line in the request won’t give it context. What will give it context is a process. An environment. A story.

2
A problem, not an idea

People come to me and say “I have an idea for an app.” Then they explain for an hour. At the end of the hour, I know the idea, but I don’t know the problem. And without a problem, there’s no project.

Idea: “A personal finance tool.”
Problem: “I have 1,223 rows from 4 different credit card providers for all of 2025. I’m wasting hours manually categorizing each row. I want a tool that pulls it all in automatically and helps me categorize.”

That’s not a different phrasing of the same thing. That’s different thinking. When the problem is defined that way, every structural decision becomes simple:

  • “Where do we store the data?” → In Google Sheets. Because I already work in it, and I can categorize manually from anywhere.
  • “Which programming language?” → Apps Script (a language that runs inside Google Sheets, no external server needed).
  • “How do we handle different column structures between providers?” → A separate code piece for each source.

If I’d started with the idea “a personal finance tool,” I would have built a full web app with a login screen, a database, a dashboard, and charts. Half a year of work. Working for 30 percent of what I actually needed.

What to do: Before you open the AI, write yourself one sentence: “My problem is that ___, and today I solve it by ___, and it hurts because ___.” If you can’t fill it in, you don’t have a project yet. You have an idea.

3
The story before the tech

Once you have the problem, there’s a temptation to jump straight in and ask the AI “what tool do you recommend?”. Don’t do that.

First tell it the story. How you solve this today, without AI. That story is the context that gets it to make the right decisions.

A real example: when I built a tool to generate calendar links (Google Calendar, Outlook, and a standard file for Apple and others) for events I send over WhatsApp, the story was:

“I run talks. I send the invite over WhatsApp with the details. People ask me for a link to add it to their calendar. I find myself building the link in Google Calendar manually, copying the address. I want to cut this down to a few clicks.”

From that story, the AI figured out:

  • This doesn’t need to be a cloud app with users and sign-up. I’m the only one who’ll use it.
  • It doesn’t need a database. One-off event, no history to store.
  • It needs to be quick to open, so a single HTML file I save on my desktop.
  • It should include a “copy text for WhatsApp” button, because that’s where the flow ends.

If I’d asked without the story, it would have suggested a full app with a cloud server. Three days of work. Instead of a half-hour HTML page.

Why this matters: Building software is 90 percent decisions about what not to build. Without the story, the AI goes to build everything. With the story, it cuts.

4
The environment: your editor and how the AI talks to your files

A technical chapter, but a critical one. Without the right environment, you’re copying code back and forth between the chat and your files by hand. Slow, error-prone, and the AI can’t see the rest of the code you already have.

My environment, and the environment of everyone I coach:

  • VS Code: the most popular code editor in the world. Free. Runs on Windows, Mac, Linux.
  • Claude Code: an extension for VS Code that lets the AI read and update your files directly. No copy-paste.
  • Plan Mode: a mode inside Claude Code that tells the AI “plan, don’t write code yet.” Activate with Shift+Tab twice. That’s the starting mode for every conversation I have.

With that environment, the conversation shifts. Instead of “write me code to categorize transactions,” I say “look at all the files in the FinanceTracker folder. Tell me what you see.” The AI reads. It says: “You have 6 code files, there’s an import from Bank X where the amount is in column D, there’s a manual categorization, there’s a dashboard that’s calculated from the categories.”

Now, when I ask for a new feature, it builds on my code. Not generic code.

The principle: Chat = guesses. Environment = context. The difference between the two is the difference between a project that works and a project that falls apart.

5
“Plan, don’t write code yet”: the first conversation

You’re in Plan Mode. The problem is defined. The story is told. Now the first question:

“Draw me up a plan for the project. Stages, files needed, folder structure. No code yet.”

The AI comes back with a plan. For example, for a podcast that assembles video from 2 cameras:

  1. A main file that orchestrates the whole build, with separate functions for transcription, segment detection, and stitching.
  2. A recordings folder with the Zoom files (one camera on the active speaker and one on both speakers together).
  3. A temp folder for prep files (so they don’t get recomputed every time).
  4. An output folder for each episode.
  5. Work order: prep files once, then build episode by episode, then final stitch.

You read the plan. You revise. “Wait, why not move the transcription to a separate file?” Or “the pre-computed files should be saved between runs, not just within a run.” You update the plan. Before there’s a single line of code.

In my podcast, the plan included 3 decisions that saved me days of work:

  • Prep the main-camera file at the right frame rate once and save it, instead of redoing that on every build.
  • Cut on whole frame numbers, not on fractional seconds. Tiny difference, but it stacks up with lots of cuts.
  • Refill gaps after filtering out short scenes.

Those three decisions prevented a desync (audio not lining up with video) that would have shown up anyway if I’d started coding right away. The hour I spent planning saved a week of debugging.

The principle: A plan is insurance. The time you invest in it will always be less than the time spent on bugs that came from code written without a plan.

Does this sound like where you are?
If you want someone to walk you through your first project with AI, fill out the short form →
Or book a 30-min call →
6
The first version: only what’s essential

The natural instinct in planning: “and of course there’ll also be PDF export, social sharing, recurring events, and…”. Stop.

Ask yourself: “What’s the one feature without which this project is worth nothing?” That’s the core. Everything else isn’t essential, and so we don’t build it now.

In my calendar-links tool, the core was:

  • A form for event details (title, date, time).
  • Output: a single Google Calendar link.

That’s it. Without it, it’s worthless. Everything else, later:

  • Outlook link? Later.
  • Yahoo link? Later.
  • Apple Calendar file? Later.
  • Copy-to-WhatsApp button? Later.

When I built just the core, I knew within 20 minutes that it worked. Then I added Outlook (10 minutes). Then the Apple Calendar file (15 minutes). Every extra feature was built on existing infrastructure. Quick to add.

If I’d asked for everything at once, the AI would have written 400 lines, and every bug would have meant searching through 400 lines.

Instruction for the AI: When you get to the moment of the first code, say: “The core is ____. Do not include any other feature. Everything else we’ll talk about later.” It’s not too nice. It’s clear.

7
Build piece by piece, not all at once

Even after you’ve cut down to the core, there’s a temptation to ask for the whole core in one shot. “Write me the entire main file that builds the episode.” You’ll get 500 lines. You’ll run it. It’ll fall over in 3 different places. You’ll try to fix. The AI will update the whole file. A line that worked will stop working. A fix of a fix of a fix.

Instead, build in pieces.

Example from my podcast: one episode is 44 minutes of video. Building the episode takes 25 minutes. If I’d built the whole episode on every change, a day would have meant 4 to 5 attempts. Instead, I split it into pieces:

  • Piece 1: 13.3 minutes (opening content).
  • Piece 2: 2.7 minutes (after a freeze on the Zoom call).
  • Piece 2b: 6 minutes (using only the “both speakers” camera, because the active-speaker camera dropped out).
  • Piece 3: 24.7 minutes (through to the end).

Each piece was built separately. A change in piece 2 meant rebuilding 2 minutes only. Once everything was approved, a final stitch combined the four into the full episode.

In code too: “Let’s start with the transcription function. Just that. We’ll try it on one file. If it works, we’ll continue.”

The principle: Small pieces = fast fix cycles = fewer bugs tangled up in each other. When something breaks, you know exactly where. When everything works, you know exactly why.

8
Two separate conversations: planning and execution

This is probably the lesson that took me the longest to internalize. And I still catch myself forgetting it sometimes.

One conversation = one chat thread with the AI. Within a single conversation, the AI has memory of what you talked about. The longer the conversation, the more that memory gets overloaded, and the AI starts forgetting constraints you set at the beginning.

My method:

  • Conversation 1, planning. In Plan Mode. Discuss the problem, the story, the core, the project structure. At the end, I have a written and approved plan.
  • Conversation 2, execution. A brand new conversation (start from scratch). Paste in the approved plan. The AI starts writing code with a clean head, full focus on writing code only.

Why does this matter? Because in a long conversation, the AI starts to drift. It remembers the discussion about the core, but also the 10 features you dropped, and also the doubt you had about which tool to pick. In conversation 2, it doesn’t have any of that history. Just the final conclusions.

Also: every time you move to a significant new section of the project, start a new conversation. With a summary of where you are.

The non-negotiable rule: At the end of a planning conversation, always tell the AI “prepare a summary of the decisions made, in a format I can paste into a new conversation.” You get a clean document. Open a new conversation. Paste. Continue from scratch.

9
The moment that changes everything: 3 problems, one symptom

I’ll tell you about my moment. Because it’ll happen to you too, in a different form but from the same pattern. And it helps to know what to look for.

I built episode 1 of my podcast. 44 minutes of video, switching between two cameras, with captions. After hours of work, the run finished. I watched. The audio was about a second ahead of the video. Looked terrible.

I tried a fix. I shifted the audio back one second. Ran. Worse.

Reverted. Tried another. I updated the sync offset between the files. Ran. In sync at the start, then a sharp jump at 10:30, and from there a completely different misalignment.

That’s when I stopped. Because I understood something: if a logical fix doesn’t fix it, you might have identified one problem while there are actually three hiding inside each other.

I sat down to diagnose. Not to fix. Just to diagnose. And I found three separate problems, each contributing to the desync for a different reason:

  1. Frame rate conversion during the build. One camera shot at 30 frames per second, the other at 25. The on-the-fly conversion introduced a tiny inaccuracy. The fix: prep the file once in advance at the correct frame rate, and use it from then on.
  2. Cutting on fractional seconds instead of whole frame numbers. Every cut missed by about one frame. Across 40 to 80 cuts per episode, the error added up. The fix: cut on whole frame numbers only.
  3. Gaps that opened after filtering short scenes. The code filters out scenes shorter than 1.5 seconds. But when a scene is removed, a gap opens in the video timeline. The audio doesn’t jump with the gap. From that point on, a permanent desync through the end. The fix: refill all gaps after filtering.

I fixed each problem separately. Together, the desync vanished.

The rule that was born that day and hasn’t changed since: If a fix didn’t work, don’t jump to another fix. Diagnose again. Ask the AI: “Wait, what if there’s more than one problem here? Help me map out 3 possible causes that could each contribute to the symptom.” Often the symptom is a combination.

Stuck on a bug you’ve already tried 5 different fixes for?
That’s exactly what I’m talking about. If you want to walk through it together, fill out the short form →
Or book a 30-min call →
10
When the AI says “yes” without actually doing it

This is the most important chapter in the guide. If you miss it, none of the rest will help.

The AI will tell you “fixed” without fixing. “Added the function” without adding. “This should work now” without checking. If you don’t know how to spot it, you’ll get deliverables that don’t exist, and you won’t understand why the project is stuck.

A story that happened to me recently: I asked the AI “fix the bug in my main file, it crashes on line 245.” It answered: “Fixed. Added handling for the edge case of an empty piece. The code should run without errors now.”

I ran it. Same error. “What exactly did you fix?” I asked. “I added a null check before reading the frame.” I asked: “Open the file and show me the new line.” It said: “One moment. I’m checking. Indeed, the change wasn’t applied to the file.”

It described a fix. It didn’t make one.

Five reasons this happens:

  • Path of least resistance. When a task is complex, there’s a pull to say “done” and move on.
  • No verification step. If you didn’t ask to see it, it won’t offer.
  • Describing is easier than doing. Writing the code is real work. Describing the code is seconds.
  • Forgetting what you defined. In long conversations, it loses the thread.
  • Synthetic optimism. A pull to sound helpful even when it didn’t succeed.

Five questions to catch it fast:

  1. “Open the file and show me the section you updated.”
  2. “Run the code and show me the full output.”
  3. “What didn’t you check? What did you say ‘yes’ to without actually doing?”
  4. “If I opened the file right now, what new lines would I see?”
  5. “Stop. Open the file first, then tell me again what changed.”
You are the critic. The AI won’t stop itself. It’ll submit an output and wait for approval. You have to verify. Every time. “You said you fixed it. Show me where.” No trust. Only evidence.

11
Fix, save, don’t repeat the same bug

You fixed a complex problem. Hours of diagnosing. You understood the cause. The code works. Half the work is still ahead of you.

If you didn’t document the lesson, the problem will come back. In the next project. Or in the next episode of the same project. Or with the AI in a new conversation, because it doesn’t remember the fix.

For me, after solving the 3 desync problems in episode 1 of the podcast, I created a file called:

SYNC_LESSONS.md

In it I documented, in a structured format:

  • The three problems that caused the desync (each one separately).
  • The symptom of each (how to recognize it).
  • The fix for each (with the exact code).
  • A diagnosis table: “Desync across the whole episode?” → sync configuration is wrong. “In sync up to a point and then a jump?” → gap created after filtering scenes.

In episode 2 of the podcast, the first thing I did in a new conversation with the AI was: “Before we start, read this file. It documents problems we’ve already solved. Don’t repeat them.”

Episode 2, no desync. Not even a second. Because the AI knew from the start how to avoid those traps.

How to do this in every project:

  • At the end of every big bug you fixed, tell the AI: “Add this lesson to the project’s lessons file. Format: problem, symptom, cause, fix.”
  • At the start of every new conversation: “Read the lessons file before we start.”
  • If the AI repeats a bug you already documented, it means it didn’t read. Tell it to read.
The principle: Every bug you fixed and didn’t document = a bug that will come back. The AI’s memory is gone, but files remain. Those files are the project’s memory.

The final checklist for every work session

This checklist is the summary of the whole guide. Before starting a build or fix session, walk through it. If something isn’t in place, stop and sort it out.

Before you start a project

  • Have I defined a problem, not an idea, and can I write one sentence summarizing it?
  • Did I tell the AI the story of how I solve it today?
  • Did I pick one core, the single feature without which the project is worth nothing?
  • Is the AI in Plan Mode (Shift+Tab twice)?

During development

  • Did I get a written plan before there was any code?
  • Did I open a new conversation for execution, separate from the planning one?
  • Am I building piece by piece, not all at once?
  • Am I checking each piece before moving to the next?

When something isn’t working

  • Did I diagnose before I fixed?
  • Did I consider that more than one problem might be contributing to the symptom?
  • If a fix didn’t work, did I not jump to another fix and go back to diagnosis?

After every fix or addition

  • Did I verify the change was actually applied (not just “the AI said fixed”)?
  • Did I open the file and see the change?
  • Did I run the code and see the output?
  • Did I document the lesson in the project’s lessons file?
Want a plan built around your business, for free?
Fill out this short form and I’ll send you exactly how to build the AI agent team for your business. Fill out the form →
Prefer to talk directly? Book a 30-min call →
Scroll to Top