We usually write about AI agents and automation here. But sometimes I want to share my personal experience with AI. This is one of the first such posts.
There's a certain irony here: my website looked exactly like a typical AI-generated site. You know the style — clean, tidy, empty. A hero section with a gradient, three cards with icons, a CTA button centered below. As if the same prompt was run a thousand times and produced a thousand identical results.
That's exactly what bothered me. The site was generated by a neural network — and you could feel it at first glance. No character, no personality. Just another website on the internet.
So I decided to do a redesign. I sat down to work on it over the weekend — and spent nearly the whole day on it. About 12 hours. It was one of those days when you open your laptop in the morning and close it when it's already dark outside. And yes, I did it all with AI again. But this time, differently.
Step 1. References first, prompts second
I didn't jump straight into the chat with my task. Instead, I opened Dribbble and Behance and spent a few hours browsing designs I found visually appealing. This was an important step: I didn't have a clear brief — just a feeling that I wanted something different.
Once I had a set of references, I uploaded them to ChatGPT and asked it to generate a website concept based on them. Not a copy — just a concept: color palette, structure, overall mood.
ChatGPT delivered. The concept wasn't perfect, but it felt alive.
Step 2. Codex writes the markup — and problems begin immediately
I uploaded the concept image to Codex and asked it to build the layout in plain HTML. The first attempt was rough. The second was a bit better, but I still wasn't happy with the design.
So I changed my approach: I'd find specific elements I wanted — like a nice footer or an unusual navigation menu — take a screenshot, and ask for something similar.
That's when the real problems started.
The model kept copying things exactly — right down to the text from the reference. I asked for a style, but got a copy. I tweaked the prompt, added clarifications — but the result still didn't fit the site's overall look. It felt like Codex wasn't seeing the site itself, only reading the code — without understanding what it looked like in a browser.
This was the most frustrating part. A lot of time went into finding references, and then into fitting each element into a consistent style. After several iterations I wanted to give up — and it's in those moments that you realize 12 hours at a laptop on the weekend isn't heroism, it's just stubbornness.
Later I figured out why this was happening. Codex Web literally cannot see the result of its own work — it doesn't take a screenshot after making changes and doesn't compare it against what it should look like. It only works with code. This isn't a metaphor — users in open GitHub issues write about exactly this: Codex returns pages with errors without noticing, because it never looks at the visual output.
The ideal workflow would look like this: AI modifies code → takes its own screenshot → compares it to the reference → fixes it. This is possible if you integrate browser tools like Playwright. But it requires extra setup, and most people don't even know that's an option. I didn't — and I spent far more time on manual iterations than I needed to.

Step 3. The code grew bloated — so I asked to clean it up
After all those edits I had a working design. But the code had turned into a swamp: ~1000 lines, messy structure, chaotic styles.
Here I did something non-obvious — instead of asking the AI to add new features, I asked it to rewrite the code more cleanly using the BEM methodology. The result: the code shrank to 500 lines. Much easier to read.
Why didn't I just rewrite it in Next.js from the start? Because this is a live production site. Rewriting a working project from scratch is risky. Old styles would clash with new ones, something would inevitably break. The "clean first, migrate later" approach turned out to be the right call.
Step 4. Cursor handled the rest
I loaded the clean code into Cursor and asked it to apply the new design to the homepage. It delivered — not perfectly, I had to fix a few things, but it worked.
Things got easier after that. Cursor understood how the homepage looked, and when working on other pages it stayed consistent with that style. Not without flaws — I still had to rewrite things here and there. But it was much faster than starting every page from scratch.
The result
The site got better. Not perfect — but definitely not like a thousand other sites generated in 5 minutes. One weekend, 12 hours, tons of iterations — and a result I'm not ashamed of. I'll continue next weekend: there's still work to do on the site.
If I were doing this again, here's what I'd change:
- More time on references upfront. The clearer your vision of what you want, the fewer iterations later.
- Don't give AI screenshots of competitors without a clear constraint. It will literally copy the text. Always specify: "style only, not content."
- Clean the code first, then scale. Dirty code + new edits = chaos. I learned this a bit later than I should have.
- Cursor works better when it has a reference. Bring one page to its final state first — the rest will go faster.
- If you want fewer iterations — integrate browser tools. Playwright MCP or similar tools let the AI see the visual result of its work, not just read the code. That changes everything.
This isn't a success story of "I ran a prompt and got a perfect website." It's a story about how AI is a good tool — but it still requires taste, patience, and several dozen iterations.
