Jeremy Nwachukwu // Field notes

What is "Model Smell"? How to Spot a Vibe-Coded Website

96 views July 9, 2026

Model Smell: How I Can Tell Something Was "Vibe Coded"

Recently I saw a website and said, "This definitely vibe coded." Someone asked me, "How did you know?" I said, "It has the model smell." Then the person asked, "What do you mean by model smell?" That's when I realized not everyone knows what model smell is, so let me explain. A model smell is a trait that, no matter what it shows up in, you can recognize the model behind it. It could be a specific model like GPT 5.4 using cards a lot, or a model family like Gemini having a playful design style. It could even come from the prompts or skills installed on someone's computer. But model smell mainly comes from two sources:

  • Training
  • Context

Training

How can training give a model a smell? Isn't it just training the model? Well, partly correct, but AI is not magic. It is really just an advanced version of GIGO Garbage In, Garbage Out. This means the training data is important because it influences the kind of output the model generates. For example, imagine you give an AI model 50 examples of Good UI that look like the Linear homepage and only 5 examples that look like the Apple homepage. When you ask that model to generate a Good UI, it will probably lean toward the Linear homepage. Why? Because that's what the model saw the most during training. The model weights are shifted toward the Linear examples because there were simply more of them. If that model keeps generating Linear-style homepages, people will start associating that look with the model. Eventually people begin saying it has a "smell" because that style keeps showing up. A good example is GPT 5.4 making a lot of card-based layouts. People even started calling it the House of Cards. Maybe card-heavy layouts appeared a lot in its training data, or maybe it came from something else, but people noticed the pattern. Reinforcement learning can also give a model a smell. Reinforcement learning teaches a model by rewarding good outputs and rejecting bad ones. If a particular design style keeps getting rewarded enough, the model weights become biased toward producing that style. It's basically the same issue as the Linear example earlier.

Context

Smells don't only come from training. They can also come from context. This includes prompts, skills, and to a lesser extent MCP. When you use ChatGPT, Codex, Claude, OpenCode, Antigravity, or other AI tools, there is usually both a regular prompt and a hidden system prompt. That system prompt can give the model a smell because everyone using that product is getting roughly the same instructions. Sometimes the way a model codes, writes, or even sounds isn't actually the underlying model it's the system prompt doing the work. Then we have skills. Remember when the frontend design skills became so popular? They developed their own smell. People noticed they made good-looking UIs, but they weren't particularly unique. A lot of websites built with those skills started looking very similar because they were all following the same design patterns.

Conclusion

So why do models have a smell? It can come from:

  • Training data
  • Reinforcement learning
  • The context you give the model Models are not deterministic, but if you give them similar situations, they'll often produce similar outputs. So how do you make a website not look vibe coded? Simple: give the model examples of what you actually want. You're basically shifting the model toward the style you're aiming for. A good source for inspiration is Mobbin (not sponsored). It has lots of examples of real applications and production-quality interfaces. Then use skills like Impeccable, develop your own design language for the product, and add your own taste. Change the colors, adjust the layouts, and build a pseudo design system that is uniquely yours instead of accepting the first thing the model gives you. You can read more of my blog posts on my website, or just click here: https://new-portfolio-ten-amber.vercel.app/blog If you want to reach out, I'll link my socials below:
  • X: @JemoLife0213 https://x.com/JemoLife0213
  • GitHub: Jemo69 https://github.com/Jemo69/
  • BlueSky: @jemolife https://bsky.app/profile/jemolife.bsky.social And remember, stay coding.

© 2026 Ifeanyichukwu Jeremy Nwachukwu // Tactical Terminal