Abstract amber glass software interface visual.
Back to blog
Coding7 min read

My AI workflow that actually works

How I switched between Codex and Gemini (and free web versions) without losing all my progress. The real story isn't about the AI — it's about building a system that survives tool-switching.

By Suryansh Kushwaha /

AIWorkflowIndie HackingSystem Design
On this page

In my last post I casually mentioned something that probably deserved its own deep dive. I said I switched between Codex, Gemini, and the free web versions without losing momentum. A bunch of you asked how the hell I actually did that, so here we go.

Here's the thing that kept nagging at me: free tiers always run out. Always. Codex credits get smoked, Gemini credits hit the wall, and suddenly you're staring at a blank chat with zero context about what you were even building. Most people just lose steam right there.

But I didn't. Not once.

That wasn't luck. That was a system. And I'm going to show you exactly what I did.

The Free AI Problem

Free AI is actually pretty generous right now. You can get real work done. But there's always a catch — an expiration date. When your credits run dry you have two options:

  1. Pay up (which defeats the whole "I'm building this for almost nothing" vibe)
  2. Switch to another free tool and pray you remember what the hell you were doing

I refused to do either.

Instead I built a tiny system so that any new AI — even on a completely fresh chat — could catch up in two minutes and pick up right where I left off.

That system is just two files: AGENTS.md and NOTES.md.

AGENTS.md: The Instruction Manual for Any AI

AGENTS.md isn't part of the actual project. It's instructions for the AI. It tells whatever model I'm using how I want it to behave, what rules to follow, and how to keep documentation alive.

Whenever I started a new session, I just dropped @AGENTS.md and the AI immediately knew the drill.

Here's what mine looked like:

AGENTS.md
<!-- BEGIN:nextjs-agent-rules -->
 
# This is NOT the Next.js you know
 
This version has breaking changes — APIs, conventions, and file structure may
all differ from your training data. Read the relevant guide in
`node_modules/next/dist/docs/` before writing any code. Heed deprecation
notices.
 
<!-- END:nextjs-agent-rules -->
 
<!-- BEGIN:styling-agent-rules -->
 
Use Tailwind CSS v4 only; read https://tailwindcss.com/docs/upgrade-guide before
writing styling code and do not use deprecated v3 directives. 
Always use `app/global.css` as the single source of truth for Tailwind setup, 
global styling, theme variables, spacing scale, sizing scale, and brand tokens. 
Only use multiples of 4 for all spacing, sizing, padding, margin, gap, width, 
height, radius, positioning, and layout values. Never use arbitrary values or
non-4-based sizing except for focus ring which is fine. 
Always write code mobile first, then enhance for larger screens with responsive 
breakpoints. 
Always make code accessible: use semantic HTML, correct labels, sufficient 
contrast, keyboard support, focus states, ARIA only when needed, and do not 
rely on color alone. 
Only use branding colors already defined in `app/global.css`; never invent, 
guess, approximate, or add new colors, Tailwind defaults, arbitrary values, 
gradients, or inline color styles. If a needed color or token is missing 
from `app/global.css`, stop generation and tell the user what is needed, why 
existing tokens do not work, and that they must approve/add the token before 
continuing. 
Never use emojis as icons. Use `react-icons` for all icons.
 
<!-- END:styling-agent-rules -->
 
<!-- START:notetaking-agent-rules  -->
 
Maintain a root-level `NOTES.md` file that crisply records implemented
behaviors, completed features, and important project context, so future readers
understand what the project does and how it has evolved.
 
<!-- END:notetaking-agent-rules -->
 
<!-- BEGIN:creation-agent-rules -->
 
Always first look at `NOTES.md` file for components which can be used. If not
present, then first create a new components then use it in the design.
 
<!-- END:creation-agent-rules -->

Simple. But it worked every single time.

NOTES.md: My Context Survival File

NOTES.md is the real MVP. It's not a todo list or a changelog. It's a living, crisp summary of what actually exists in the project right now.

Mine looked something like this:

NOTES.md
 
## Design System
- Global styling in `app/globals.css` with Tailwind CSS v4
- Primary brand color is Digital Amber (#FFBF5E)
- Only one project radius: `--radius-lg`
- Utility classes: `section-gap`, `hero-screen`, `glass-card`, `glow-primary`
 
## Components
- `components/site-header.tsx` — fixed floating header
- `components/ui/button.tsx`, `card.tsx`, `accordion.tsx` etc.
 
## Contact Flow
- Form with two inquiry types (hire + studio)
 
## Payments
- Supabase for order tracking
- Multiple payment providers with geographic routing

Any AI that read this file instantly knew the current state of the project. No long explanations needed.

How I Used It

This is the part I actually did — not the cleaned-up version.

Building phase:

I'd sit down with whichever AI had credits (Codex or Gemini) and first discuss what I should build next and how many sections the page needed. Then I'd go section by section, step by step. Once a chunk was finished, due to my @AGENTS.md instructions, it would automatically update NOTES.md with what was just built.

Auditing phase:

After finishing, I copied the new section added to NOTES.md and pasted it into a free web version (chatgpt.com free tier or Gemini web). I asked it to write me a strong audit prompt for that specific part.

Then I opened a fresh new session in Codex or Gemini, pasted the audit prompt, tagged @AGENTS.md, and let it tear the code apart. After that I went and fixed whatever it found.

If I still had decent credits, I sometimes generated the audit prompt in the same session and moved it to a new one so the model didn't get confused by too much old context.

Why Switching Tools Worked

I used Codex and Gemini almost equally. They gave me pretty much the same quality and both understood AGENTS.md perfectly. I just used whichever one still had credits left. When both were running low, I only used the free web versions to generate audit prompts — never for actual building.

The tool didn't matter. The system did.

The Design Extremes Problem

One annoying thing I kept running into is that the AIs love working in extremes.

Sometimes while I was building a section, the AI would go full extreme on its own. I’d ask for some cards or a bit of visual separation and it would turn the entire page into nothing but cards. Then if I told it “okay, tone it down, not everything should be a card,” it would immediately swing the other way and remove all cards completely. No in-between. Just extremes.

It was the same during audits too.

You end up spending extra time and prompts just pulling the AI back to something balanced instead of it giving you reasonable output from the start.

But on the flip side, it forced me to be way more deliberate. I had to consciously decide what I actually wanted instead of just accepting whatever it spit out.

Would love to hear if you have any solutions to this!

What I Learned

The biggest lesson wasn't that free AI is enough (though it is). The real bottleneck isn't compute — it's context.

If the AI doesn't know what you've already built and decided, you're starting over every time you switch tools or start a new session. AGENTS.md + NOTES.md made my context portable. I could jump between models, take breaks, or come back days later and everything still made sense.

The Meta-Lesson

If you're building with free AI, you will hit limits. That's just how it is. But hitting limits doesn't have to mean stopping or losing progress.

Create your own AGENTS.md. Keep a clean NOTES.md. Document your work in small, finished chunks. Then you can switch tools without guilt or chaos.

Five days. Multiple AIs. Zero context-rebuild pain.

That wasn't luck. That was a system that actually worked.


If you're building anything with free AI right now, steal this.

Make your own AGENTS.md and NOTES.md. It's stupidly simple but it changes everything.

The tools are already there. The real superpower is making your context survive when the credits run out.