I wrote a rather long article, but I'm sure you'll find it useful.
I’m pretty sure at least a few people reading this have tried selling websites before, and maybe some of you are still doing it. I think instead of messaging a business saying “I can build you a website,” it makes a lot more sense to prepare the website first and show it in the first message. The problem is, you never know who is actually going to buy the website and who isn’t, so building a separate website for every business manually takes way too much time and money.
That’s why I wanted to automate the whole thing. The system will find businesses on Instagram through Apify, filter out the ones that already have websites, create a separate folder for each business and build a different website for each one. After that it will also prepare a personalized Instagram message and leave it as a draft, so the only thing left for us to do is check the website, check the message and press Send.
Apify already gives $5 of free credit on a free account, so at least in the beginning the business finding side can be done almost for free. The system will also save good designs, components and sections it finds on GitHub or creates itself into its own archive, so the more websites it makes, the bigger its own design library becomes and eventually it may not even need GitHub that much anymore.
I thought some people might want a clearer and more detailed explanation of the project, so I wrote a longer explanation and gave it to ChatGPT and asked it to rewrite it in the way I normally talk. I’m leaving the full version below.
At first I wanted the whole system to run completely with a local AI model. My PC has an RTX 4060 8GB, an i5-12400F and 16GB RAM. I was running Qwen3.5-9B-Instruct-GGUF Q4_K_M, and at around 12k context, if I remember correctly, GPU usage was somewhere around 86-88%.
The model worked, but it wasn’t really good enough for the kind of code editing, debugging and adapting external components into existing projects that I wanted it to do. And with only 8GB VRAM I can’t comfortably run much larger models either, so I decided I don’t want the whole system to depend on a local model.
So now I’m going to build it around API models instead. I don’t want to depend on just one model, so I’ll add both free and paid API models and switch between them depending on the task.
Simple things like small code edits, component changes and lighter tasks can go through the free model. If there’s something harder like fixing a complicated bug, modifying a large repo or understanding multiple files at the same time, I can switch to a paid model.
One of the models I’m especially planning to use is DeepSeek V4 Flash 0731. It looks really good for coding, reasoning and agent-style tasks, and there is also a free version of it on OpenRouter.
The performance is also pretty interesting. In Artificial Analysis comparisons, DeepSeek V4 Flash 0731 at Max Effort and GPT-5.6 Luna xhigh get around the same Intelligence Index score. Obviously that doesn’t mean both models are exactly identical in every task, but it shows that DeepSeek can get into roughly the same performance range while being much, much cheaper.
The price difference is the part that matters a lot for a system like this because the model will constantly be reading code, project files and error messages.
If you don’t want to use a paid API at all, there’s another nice option. OpenRouter has a free version of DeepSeek V4 Flash 0731. On a normal free OpenRouter account you get around 50 free API requests per day, and honestly even that is enough to build the system and test a couple of websites.
But if you add $10 or more in credit to your OpenRouter account, the daily free model limit goes from 50 requests to 1,000 requests per day.
That $10 doesn’t disappear as some kind of subscription fee either, it stays in your OpenRouter balance and you can use it later on paid models whenever you want.
So if you don’t want to use paid APIs, you can start with the free 50 requests per day. If you want to use the system more seriously, adding $10 gives you up to 1,000 free model requests per day, which should be enough to run and test the system for a long time and even start using it for actual website sales.
And if the free model gets stuck on a difficult problem, you still have that $10 sitting in your account and you can send a few requests to a stronger paid model.
I’m going to use the AI models directly inside VS Code as well. For that I’ll install the Continue extension and connect OpenRouter models through it.
That way I don’t have to constantly open different AI websites, copy code, paste it back into VS Code and repeat the same thing. The model can work directly inside the project, see the files and I can switch between different models without leaving VS Code.
If your computer is powerful enough to run local models, you can also install Continue and connect your local AI through Ollama.
I used local models from the terminal before, but using them through Continue is much more practical than using the terminal directly. You can work with the files inside the project, select context more easily and switch between models without making everything unnecessarily complicated.
For finding businesses I’m going to use Apify.
The idea is that I shouldn’t have to manually search Instagram for barbers, restaurants, beauty salons and other businesses one by one. The scraper should do that part itself.
For example, if I search for barbers in Bursa, the Instagram scraper can find the accounts and then pull things like their bio, category, contact information, external links and whether they already have a website.
Once the system has that data, businesses that already have proper websites get filtered out immediately. There’s no reason to waste AI requests creating a new website for a business that already has one.
So only businesses without websites move into the website generation queue.
Apify gives new accounts around $5 in free credit. The exact amount of businesses you can scan depends on which Actor you use and its pricing, but the free credit is already enough to test the system on hundreds of businesses.
And just because the system finds 500 or 900 businesses doesn’t mean it’s going to build 500 or 900 websites.
First it filters out accounts that already have websites, then accounts that aren’t really businesses or don’t have enough useful information, and only the businesses that actually make sense go into the website generation process.
That way both scraper credits and AI requests aren’t wasted.
Another important part is that I’m not going to ask the AI to build every website completely from scratch.
I think doing that would just waste tokens, use more API requests and create more opportunities for the model to make mistakes.
Instead I’ll give the system access to good open-source GitHub website repos, hero sections, navbars, footers, galleries, contact forms, service sections, testimonial sections, animations and other reusable components.
For example, maybe there’s a really nice restaurant website on GitHub but the business the scraper found is a barber.
Instead of rebuilding the entire website from zero, the AI can take that existing project and adapt it.
It can turn the menu section into services, change the reservation section into appointments, remove restaurant-related parts, change the colors, replace the text and images and fill the website with the actual business information collected from Instagram.
It can also combine components from different repos.
Maybe one project has a really good hero section but a bad services section. The system could take the hero from one project and the services section from another.
This is where the AI becomes much more useful.
Let’s say we add an external component and it throws an import error. The model can fix it. If a dependency is missing, it can install it. If Tailwind or CSS conflicts with the existing project, it can adjust it. If the component was written for a different project structure, it can adapt it to ours.
If the mobile version breaks, it can fix the responsive layout. If the build fails, it can read the terminal error and try to solve the actual problem.
So instead of using AI as something that writes the whole website from scratch, I want to use it more like a developer that understands existing code, edits it, combines different pieces and fixes problems when they appear.
That should reduce the workload on the model quite a lot.
The system will also have its own archive folder.
Whenever it finds a good component, section or design on GitHub, or whenever it creates something useful for one of the websites, it can save that piece into the archive.
For example, if it uses a really good hero section on one website, it can save it.
Then when it builds the next website, it checks its own archive first. If it already has a suitable design, there’s no reason to search GitHub again.
So GitHub will be important at the beginning, but after the system creates 20, 50 or 100 websites, it will have built its own component and design library anyway.
Long term, I think this could actually become one of the most useful parts of the whole system because instead of depending on random GitHub repos forever, it starts building websites using components that it already knows work.
After the scraper finds suitable businesses, the system will create a separate folder for every business inside the main project directory.
If it finds 20 suitable businesses, there will be 20 different folders and every website will be independent.
The business information collected from Instagram, the template or components used for the website and the website files themselves can all stay inside that folder.
So even if the system generates multiple websites in a few hours or overnight, everything stays organized and I can open any business project later without mixing them up.
Once the website is finished, the system will also prepare the message that will be sent to the business.
But it won’t just copy and paste the exact same “Hi, I made you a website” message to everyone.
The message will be personalized based on the business name, industry and the website that was prepared for them.
On Instagram, I don’t want the AI to automatically send the first message by itself.
The system will open the business DM, prepare the message and leave it there as a draft.
The only thing I’ll have to do is look at the website, read the message and press Send if everything looks good.
I think that’s better anyway because I don’t want the system automatically sending hundreds of bad or spammy messages.
If the AI creates a broken website or writes something stupid, I’ll see it before the business does and the final decision still stays with me.
Normally I would have to manually search Instagram for businesses, check whether they already have websites, inspect their profile, collect their information, build a demo website, design it, write a message and then contact them.
With this system, most of that work becomes automated.
And for anyone trying to sell websites, I think there’s a big difference between sending a first message saying “we can build you a website” and sending them a link to a website that already has their business name, services and information on it.
The problem is that you don’t know who is going to buy, so manually doing that for every lead doesn’t really make sense.
Once the process is automated, it becomes a completely different situation.
Right now I’m dealing with my university assignments, and I already know that if I open this project again I’m going to lose all my focus and spend the whole day on it 😀 so I’m going to leave it alone for a few days.
I don’t have classes on Wednesday and I don’t really study much during weekdays anyway, so that day I’m going to rebuild the scraper side, GitHub archive, API models and website generation system and bring everything up to date.
I’ll post the updated working version here as well. Then we’ll be able to see how good the system actually is at creating designs and adapting ready-made code templates.
And if you want, you can use the same system yourself and turn it into a way of making money by selling websites.
If the system made you curious and you want more information about it, or if you have any questions, you can reply below this post.
And if you don’t want to wait until Wednesday, you can also use ChatGPT for help and ideas and start building a similar system yourself.