AI App Planning: Proven Workflow to Keep Plans Coherent

Reproducible process using chat AI for ideation, local AI for surgical edits, and git to prevent context drift.

·Matija Žiberna·
AI App Planning: Proven Workflow to Keep Plans Coherent

📚 Get Practical Development Guides

Join developers getting comprehensive guides, code examples, optimization tips, and time-saving prompts to accelerate their development workflow.

No spam. Unsubscribe anytime.

I've been using ChatGPT, Claude, and other AI tools as my "technical co-founder" for planning larger applications. They're incredible for brainstorming architecture decisions, evaluating database choices, and working through tech stack tradeoffs. But I discovered a critical problem that was making the process frustrating and unreliable.

When I'd create an initial plan in a chat, everything would look great. Then I'd want to revisit one decision, like the database choice in step 4. I'd ask the AI what it thought about using a different option. We'd have a productive discussion about the tradeoffs. Then I'd ask for an updated plan incorporating our database conversation.

What came back was a mess. The AI would expand step 4 into three pages of database documentation while completely forgetting the nuance we'd established in steps 7 through 12. Even when I explicitly reminded it to keep everything else stable, the context would drift. The plan would lose coherence with each iteration.

After hitting this wall repeatedly, I developed a workflow that actually works. This guide shows you how to maintain stable, version-controlled technical plans while still leveraging AI for iterative refinement. By the end, you'll have a reproducible process that keeps your planning documents coherent through dozens of revisions.

The Core Problem: AI Tools Have No Version Control

The fundamental issue is that conversational AI has no concept of diffs or version control. When you're working in a chat interface, the AI is regenerating content from scratch each time, guided only by its degrading memory of previous messages.

Here's what happens in a typical planning session. You start with a 12-step implementation plan that the AI generates. It looks solid. Then you discuss databases extensively, maybe 10 messages back and forth. When you ask for an updated plan, the AI's "working memory" is saturated with database context. It over-weights that section, loses track of what was in the original plan, and produces something that's detailed in one area but vague or contradictory everywhere else.

This is completely different from how we write code. When you use Cursor or Windsurf or any code editor with git integration, you can see exactly what changed. The editor compares against your last commit and shows you a clean diff. The AI assistant makes surgical changes to specific lines while leaving everything else untouched.

Chat interfaces can't do this. You get walls of regenerated text with no visual indicator of what actually changed from version 1.0 to version 1.1. You're forced to manually diff the content in your head, which is both exhausting and error-prone.

The Solution: Separate Ideation from Editing

The workflow I developed treats AI chat tools and local AI differently based on what they're actually good at. Chat interfaces are excellent for ideation, critique, and exploring possibilities. Local AI tools running in your terminal are better for surgical edits to existing documents.

The key insight is to maintain a single source of truth on your local machine as a markdown file under git version control. You use chat AI for brainstorming and getting targeted suggestions. Then you apply those suggestions using local AI that treats the task as a precise find-and-replace operation. Git shows you exactly what changed, giving you the accountability that chat interfaces can't provide.

Here's the complete workflow in practice.

Step 1: Create Your Initial Plan in a Chat

Start with your preferred AI chat tool and get an initial plan generated. Be specific about what you're building. For example, I might say: "I'm building a SaaS application for restaurant reservation management. It needs real-time availability updates, payment processing, customer notifications, and an admin dashboard. Help me create a 12-step technical implementation plan covering architecture, database design, tech stack choices, and deployment strategy."

The AI will generate a comprehensive plan. Don't worry about it being perfect. You're using the chat interface for what it does best: exploring the problem space and generating initial structure.

Once you have something that looks reasonable as a starting point, copy the entire plan. Don't continue iterating in the chat yet.

Step 2: Save to Local Markdown with Git

Create a new directory for your project planning and initialize it as a git repository. Save the plan as a markdown file with versioning metadata.

# File: project-planning/setup.sh
mkdir restaurant-saas-plan
cd restaurant-saas-plan
git init
touch plan.md

In your markdown file, structure it with clear version metadata at the top:

# File: restaurant-saas-plan/plan.md
# Restaurant SaaS Implementation Plan

**Version**: 1.0  
**Last Updated**: 2024-12-11  
**Status**: Initial Draft

## Changelog
- v1.0 (2024-12-11): Initial plan created

## Step 1: Architecture Overview
[content from AI]

## Step 2: Database Design
[content from AI]

...

## Step 12: Deployment Strategy
[content from AI]

This markdown file is now your single source of truth. Commit it immediately.

git add plan.md
git commit -m "v1.0: Initial implementation plan"

You now have version control. Any changes from here will be trackable through git diffs.

Step 3: Get Targeted Amendments from Chat AI

Now you can iterate. Let's say you want to reconsider the database choice in step 2. Open a new chat (don't continue the original one, as that context is already stale) and paste in just the relevant section you want to improve.

In the chat, provide context: "I'm working on a restaurant SaaS implementation plan. Here's the current database design step. I'm concerned about scalability for real-time availability updates. What do you think about using PostgreSQL with LISTEN/NOTIFY instead of the polling approach suggested here?"

Have the discussion. Explore the tradeoffs. Once you've reached a conclusion, ask for something specific: "Based on our discussion, can you suggest precise amendments to the database design section? Format it as: SECTION, ACTION (replace/add/remove), and the specific text changes needed."

The key is asking for amendments, not asking it to regenerate the entire plan. You want surgical suggestions you can apply to your stable document.

Step 4: Apply Amendments with Local AI

This is where the workflow gets powerful. You'll use a local AI tool (like through a CLI or API) to apply the amendments without disturbing anything else in the document.

Copy the amendment suggestions from your chat. Then use your local AI to make the changes:

# File: restaurant-saas-plan/apply-amendment.sh
# Using a local AI CLI tool (example with Claude API or similar)

ai-edit plan.md --instruction "Update the database design section with these changes:
[paste amendment suggestions]

Requirements:
- Only modify the 'Step 2: Database Design' section
- Keep all other sections exactly as they are
- Bump version number from 1.0 to 1.1
- Add entry to changelog describing the database change
- Preserve all formatting and structure"

The local AI processes this as a surgical edit. It doesn't have the baggage of a long conversation history. It sees: "Here's a document, here's a precise instruction, make only these changes."

When it's done, immediately check the git diff:

git diff plan.md

You'll see exactly what changed. If the AI accidentally modified something outside the database section, you'll catch it instantly. This is the accountability that chat interfaces can't provide. You have a visual, line-by-line comparison of what actually changed versus what should have changed.

If it looks good, commit it:

git add plan.md
git commit -m "v1.1: Updated database design to use PostgreSQL LISTEN/NOTIFY for real-time updates"

Step 5: Audit the Updated Plan in a Fresh Chat

Now comes the iterative refinement loop. Copy your entire updated plan (v1.1) and paste it into a brand new chat with your AI tool of choice.

Ask for an audit: "Please review this implementation plan for a restaurant SaaS application. Look for inconsistencies, missing steps, questionable technical choices, or areas that need more detail. Focus on giving me actionable feedback."

The AI reviews the plan with fresh eyes. It's not biased by the extensive database discussion you had earlier. It sees the plan as a whole and might point out that step 8 about caching strategy doesn't account for the real-time requirements you've now introduced with LISTEN/NOTIFY.

This is another targeted issue you can address. You go back to step 3: discuss the caching concern in chat, get amendment suggestions, apply them locally with git verification, and commit the v1.2 update.

Step 6: Iterate Until the Plan is Solid

You repeat this cycle as many times as needed. Each iteration:

  1. Copy the current plan version into a new chat
  2. Ask for audit or discuss a specific concern
  3. Get targeted amendment suggestions
  4. Apply them locally using AI with surgical precision
  5. Verify with git diff
  6. Commit the new version

The plan stays coherent because you're never asking a chat AI to regenerate the entire thing while carrying conversation baggage. Each chat session starts fresh with the complete current state. The local AI applies changes mechanically without creative interpretation. Git catches any mistakes.

After several iterations, you'll have a battle-tested plan with a complete changelog showing how each decision evolved. You can see in your git history exactly when and why you switched from approach A to approach B.

Why This Works: Respecting AI's Limitations

This workflow succeeds because it respects what each tool is actually good at while working around their limitations.

Chat interfaces are excellent for ideation. They're designed for exploration and discussion. They can hold a nuanced conversation about tradeoffs and help you think through implications. But they're terrible at maintaining document state across multiple editing passes. Their context window fills up with conversation noise, and they start to lose track of what the document actually contains versus what's been discussed.

Local AI tools running single-shot commands are great for mechanical edits. You give them a complete document and a precise instruction, they make the change, and they're done. No conversation history to manage. No context drift. They treat it like a smart find-and-replace operation.

Git provides the accountability layer that AI can't. It shows you objective proof of what changed. If the AI hallucinated a modification you didn't ask for, you'll see it in the diff. If it missed something, you'll notice the absence in the comparison.

Together, these three components create a workflow that's greater than the sum of its parts. You get the creative brainstorming power of chat AI, the precision of local editing tools, and the safety net of version control.

The Meta-Lesson: AI as Co-Founder Requires Process

When you use AI as a "technical co-founder" for planning applications, you're essentially collaborating with a tool that has no memory between sessions and no concept of document state. It's brilliant for generating ideas but can't maintain coherence across iterative editing.

The solution isn't to avoid using AI for planning. The solution is to build a process that plays to its strengths while compensating for its weaknesses. You maintain the source of truth locally. You use chat AI for exploration and critique. You apply changes through tools that treat editing as a mechanical operation. You verify everything through git.

This same principle applies beyond planning documents. Any time you're using AI to help with complex, evolving content, whether it's technical specifications, API documentation, or architectural decision records, you need external version control. The AI itself can't provide it, so your workflow must.

The workflow I've shared here turns AI from a frustrating tool that constantly loses context into a reliable planning partner that helps you iteratively refine complex technical plans without sacrificing coherence. You get the brainstorming power of conversational AI with the stability of traditional version control.

You now have a reproducible process for maintaining stable technical plans through dozens of AI-assisted revisions. The next time you're architecting a complex application, you won't waste hours fighting with context collapse or trying to mentally diff regenerated walls of text. You'll have clean version history, surgical amendments, and git diffs showing exactly what changed and why.

Let me know in the comments if you have questions about implementing this workflow, and subscribe for more practical development guides.

Thanks, Matija

21

Frequently Asked Questions

Comments

Leave a Comment

Your email will not be published

10-2000 characters

• Comments are automatically approved and will appear immediately

• Your name and email will be saved for future comments

• Be respectful and constructive in your feedback

• No spam, self-promotion, or off-topic content

Matija Žiberna
Matija Žiberna
Full-stack developer, co-founder

I'm Matija Žiberna, a self-taught full-stack developer and co-founder passionate about building products, writing clean code, and figuring out how to turn ideas into businesses. I write about web development with Next.js, lessons from entrepreneurship, and the journey of learning by doing. My goal is to provide value through code—whether it's through tools, content, or real-world software.