If you’ve spent any time with an LLM lately, you will likely have experienced that annoyance where you realise the “magical” tool you were promised is actually just a very fast generator of generic shit. You ask for a website, and it hands you a dark-purple, lucide icon, cookie cutter crap that says: “AI made this.”
Most people stop there and blame the model or worse, deploy it and pat themselves on the back. But the truth is simpler: AI doesn’t create original content. You do.
I recently rebuilt my consultancy site, using the new Gemini 3 Pro with Deep Think model. Watching the “thought signatures” unfold along teh screen as the model reasoned through my architecture was fascinating and you can learn a lot from it, but it’s clear in showing me that it’s just the last part of a much longer process that’s needed and is often missed.
If you skip the context, you’re not building, you’re just guessing and you’re going to go nowhere really fast.
This is a comprehensive builder’s guide to guiding Large Language Models. It’s about chucking away the idea of the “vibe coding” hype and learning how to use context windows, persona reviews, and technical specification docs to get an LLM to do what you meant, not just what you said.
Let’s get into the meat of it.
Some additional background: I don't get AI to write my posts, I write them all myself. I love writing as an outlet, so whilst I do like getting ai to do boring shit, I do like to write my own posts, including with em-dashes!
If you’ve used any kind of LLM (Large Language Model, such as Gemini, Chat GPT, Claude, etc) or “AI” tool before, you’ll have used context even if you don’t know what it is in relation to an LLM. Context is simply providing details to a prompt that guides the model in producing an output that you need. Quite often I hear that people complain about these tools saying it didn’t do what I wanted. And this is remarkable, because they are the very people giving the LLM the instructions on what to produce. The problem isn’t that people aren’t getting the right result, that’s the effect. The problem is that they are not providing the model with enough context to do it’s job.
Imagine you are running a startup. It’s just you, and you are non-technical. If you hire a developer who doesn’t think for themselves, then anything you ask them to do will be a best guess attempt at making what you want. Even for developers who do think for themselves, unless there’s a very active conversation between you and them, it’s highly unlikely you’re going to get what you want in one go.
What happens in established businesses with a team of people such as a product manager, a team of developers, perhaps a designer and others, is that they will get together, once the product manager comes to them and says, “Ok team, we need to build this thing”. For the sake of example, let’s say we need to build a new website landing page. Which by the way, I did recently and I will highlight my process on this shortly.
Now if you said to your team that you needed a new landing website for your company and your company makes tennis courts (I don’t know it was the first thing that popped into my head), your team of develoeprs, designers, and so on will use the knowlege they have of the world and of tennis courts to make a website. This might work, but it probably won’t.
This is where you need to provide context.
Now we have our task, of creating a new website for a company that makes and sells tennis courts. The AI has likely been trained on information about tennis courts so it will happily oblige and create something that might be a green or blue background on the website, maybe white text which would resemble the lines on the court. Some copy about tennis courts and a ball maybe for an icon or something.
But this is almost certainly going to be a crap output.
Now imagine again you’re sitting with your team, we’re going to break down the problem this time. We might have a meeting to discuss colour palettes with the designer and one of the developers, perhaps another meeting with the developers to discuss the layout and what the website needs to do. Is it just showing text? Is there a contact form, etc.
This process is exactly what you should do with your LLM.
Provide the initial scope and tell it you want to iterate on the scope, flesh out the requirements and discuss the website in more detail. Perhaps you want to talk about font’s and colours to start with. Then move onto functional requirements, and non-functional requirements.
When you’ve been working with the LLM on your project for a bit, you will have a large conversation history. In many models, this conversation is called the “context window”. Gemini is well regarded for having a large context window of 1 million tokens, but even then, like all LLMs they suffer from a “lost in the middle” or “context rot” problem where the model might remember the beginning prompt, and what your most recent few discussions were but conversation items from 15-20 prompts ago might be getting lost.
This is why it’s really beneficial to break between conversations and keep them highly focused, and specialised on particular topics. At the end of a conversation, I would recommend asking for a sythensised output in the form of a specification document that can ben used as an artifact for other conversations.
Let me give you an example. Back to our tennis court producing company. Suppose you provided the initial scope and then broke down the work into specific parts. And now you’ve picked up one of those parts and we’re discussing with the LLM the specific designs of the page.
Here’s how the conversation might start:
System instruction: You are an expert web designer specialising in the manufacturing industry and are tasked with helping a company iterate on and come up with a design documement for a new website they are building
Prompt: I am creating a new website for my company which sells and manufactures tennis courts. I would like to discuss designs and colour schemes for my website. Please help me iterate on this task by asking me questions to fulfill this task and then at the end produce a document I can provide to my development team to help them implement.
Now I just made this prompt up in about 15 seconds, but you get the idea about how it might work for your use case. You could go further and make the instructions more clear or guide the model around the output that you need.
After a series of questions the model may ask you, it will also get you to think about what your needs are and perhaps elicit questions from you that you hadn’t thought of. Once you’re done, get the output and end the conversation.
So far we’ve talked about providing context and guiding the model on an output. This is great and all, but we’re not done. If you think about how long it took before LLMs existed (as they do today) to create a new website compared to now, we’re absolutely miles ahead in terms of speed. But getting a good response is still not simple. Especially getting one you’re happy with.
I work with a lot of clients and speak to a lot of folks who have attempted to use AI, but too often they just say “Make me a website” which if you said that to a developer would indeed get you a website, but it wouldn’t get you the one you wanted.
Like any other process, it’s vital to spend the time with the tools to get good feedback from them and do several rounds of revisions before even beginning to start the work. LLMs/AI tools amplify the capability and willingness of the human using them. If someone approaches their work lazily and wants the LLM to “do the work for me” then the output is going to be what you expect. Like anything else in life, if one puts effort into something the output is orders of magnitude better.
Onward.
If you’ve been iterating on the designs, technical specifications, and had the back and forth with the LLMs you’ve likely got yourself a nice handly little set of docs which outline what your website is going to look like as well as it’s requirements. Hopefully you’ve got a handful of conversations with the LLM about each one, remembering, context windows and focused conversations.
Now you can start to build... or can you?
This next optional step can save you a lot of time in the longer run, but depending on the complexity of your project, may not be really necessary
Ask the LLM to review it’s own work. Start a new conversation thread (remembering context window), and provide the document to the LLM when you ask your question. Just ask it to review it’s own work.
You’ll be surprised at what it finds. If you ask it to be hyper-critical about the document you’ll realise how much was missed in the first round of iteration to produce that artifact. For fun, sometimes I ask it to take on the role of different persona’s in the review - just to see what it produces in response!
For example:
“You are an experienced designer, please review the design document for this website and critique the output”
“You are a homeowner looking to purchase a tennis court for your home, please review the design document for this website and critique the output”
“You are the CEO of a building company looking to bring on a partner for producing tennis courts for new homes and community tennis courts, please review....”
“You are a senior software engineer, please review the designs for this website and comment on the technical feasibility....”
You get the idea!
The responses from the model of these different personas will help you refine the idea in your mind to produce a better document.
Once you’re happy with all your documents, it’s time to build.
Ironically, this is actually the part that will likely be the quickest, depending of course on the complexity as well as how many rounds of revisions and refinements you’ve gone through.
I cannot stress enough how important it is to leave new projects such as this one as long as possible in the planning, discovery and interation phase with the LLMs. The output you get from these stages is really all the meat in the project, the actual build is more the dessert stage of the meal, but also the most fun (tastiest?).
Using the list of deliverables from the requirements you’ve elicited from your discussions, start a conversation with an agent, remembering to provide the overall instruction as well as the design doc, and requirements doc as background context.
With those, the output of the model is going to be efficient, quicker and will likely use a much smaller token context, thereby reducing your spend to the LLM service. The trade off is your time, initially anyway. Over time you’ll get what you wanted faster, with less back and forth, and you’ll actually save time. In fact, I guarantee it.
Recently one of Google’s new models “Gemini 3 Pro with Deep Think” was released, and I had the opportunity to try it out. I recently made a website for my own business, an independent consultancy specialising in Google Cloud, strategic AI adoption, technical leadership and software engineering. I hadn’t really needed a website, but thought it was good to have some kind of online web presence.
Months ago, when I originally made it, it was a, shall we say, half-arsed effort from me because I didn’t really need it, but was good to have something. As my business has been growing, I wanted to create a bit of an identity, and I wanted to connect my name to a design and theme. The first iteration of this was a “very obvious” AI made website. It had the hallmarks of a cookie-cutter website made with AI. The deep, dark-purple background, the standard icon set and a few colours and white text. A techy theme sure, but with the rise of “AI” and LLM vibe coding it’s become extremely obvious, and once you recognise it, you’ll start noticing it everywhere. Sorry if I am the one to highlight this to you.
Anyway, I decided I wanted something new so I fired up the deep think model which was also my first crack at using it, and asked the model to review my existing website and come up with some designs. One tip I learned from a Googler about a year ago, was to get the model to ask clarifying questions, one at a time. This single piece of advice has really helped me a lot in my use of LLMs to get them to produce better and better output.
The deep think model produced a lot interesting thought. Side note: you can see the “thoughts” that the model goes through when it is producing it’s response. Quite often it’s fascinating the thought process it goes through, and I’ve learned a lot from watching it work. Especially in code, the alternatives it considers before settling on the output has been interesting to me.
It asked a few useful questions, from things like colour schemes, themes, vibe, how to present my ideas and company to the world. It thought about my credentials, stlyes, mobile formatting, and stuck to my requests of a single static html page. I, of course had to massage the copy quite a lot as I personally think of a lot of what you see written on the internet these days is not from a person, but rather AI. Sadly.
The questions it asked made me think further about how I wanted to present myself and my company. It made me realise some things were not as important as I originally thought they were and other things were of more importance. I set the goals of the product to present me and the tones, styles, and design options it presented were very hit and miss. It took me a while to refine my decisions and preferences. Even after I thought I had settled on something, I ended up changing it a bit and pulling in bits and pieces from other options as well as suggesting a few of my own.
In the end, re-writing the website, with the new design, copy, imagery and look & feel took me about a day’s worth of effort. Except I didn’t write any of the code, I just wrote the text (copy) and provided some images of myself and the Google Developer Expert badge. If you’re interested you can check out the site here: https://codebrew.au
Context, context, context.
If you take away anything from this post it’s this: Large Language Models (LLMs) like ChatGPT, Gemini, Claude and so on are incapable of creating original content. YOU, the human are the one creating the new content. Guiding the machine to provide the output you want.
LLMs can only produce an output based on the training data they have. They can’t produce something new. If you get into any kind of software development with and LLM you’ll learn about things like temperature, and controlling the next likely token based on probably and range. This is the key here. You the human, are controlling how they respond based on your needs. The originality is coming from you. “New” is just something you have asked for which is can synthesise based on it’s training.
If I ask for a website, it knows it knows that the first few tokens in the reponse are going to be:
<!DOCTYPE html>
<html lang="en">
<head>
....
</head>
</html>
It knows this because it’s been trained on it. Millions of websites maybe. Or technical specifications of the HTML standard. It knows how to start a HTML page. Once it has those first few tokens, it can then predict the next likely token, it’s not creaitng new things, it’s using it’s training set and controls (temperature, P score, etc) to base it’s next few tokens from what it already knows. If you’re a developer or have worked with HTML before even you can likely tell that the next few tokens the model will output are highly likely to be <meta charset=""> etc.
If you provide the context, keep the conversations short, sharp and focused you’re going to have a much better time than if you just smashing keys into a conversation and hoping for the best. A builder of a house isn’t going to start laying concrete and bricks without a plan and detailed design document right?
No posts

Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.