On this page
- What vibe coding development means
- What is good about AI-built prototypes
- What quick prototypes usually lack
- How we harden a prototype
- If you built the prototype yourself
- Finish it or rebuild it?
- How we use AI on our side
- What you get at the end
- What we will not promise
- Your data and your accounts
- Where to start
What vibe coding development means
Vibe coding is the practice of describing what you want to an AI tool and letting it write most of the code. It is a fast way to get from an idea to something on the screen, and it has changed who can make a working app. A founder, an operator or a marketer can now build a prototype over a weekend.
Our work sits on both sides of that. We build new apps using AI assistance, with a senior person reviewing every change. We also take prototypes that were built this way and finish them, so they can carry real customers, real payments and real data without falling over.
We build web applications. We do not build native iPhone or Android apps, and we do not promise that a prototype can be made production-ready without the work it needs.
What is good about AI-built prototypes
If you built a prototype with an AI tool, you have already done something useful. You turned an idea into a working screen, and you learned what the product should do by using it. That matters more than most people give it credit for.
A prototype also answers a question before any money goes into a big build. It shows that the idea is clear enough to try. The job now is to keep what works, fix what does not, and add the parts a real product needs.
What quick AI-built prototypes usually lack
Prototypes are built to show the idea. Production software has to survive contact with the world. The gaps are predictable, and they are the same in most quick builds.
Authentication and permissions
The login works for you, but there may be no proper rule for who can see or change what. A client might be able to open another client's records by changing a number in the address bar. Roles, sessions and password handling need to be designed on purpose, not assumed.
Security
Secrets such as access keys can end up in the code or in the browser. Forms may accept input that is never checked. Data may be readable by anyone with the right link. None of this shows up when you test the app yourself, which is why it is so common.
Tests
A prototype is tested by clicking through it once. A product needs tests for the flows that matter most: money, approvals, access and the data that other parts depend on. Without them, every change risks breaking something that used to work.
Error handling
When something goes wrong, a prototype often shows a blank screen or a raw error. Production software catches the failure, tells the user what to do next and records enough detail for someone to fix it. Users should never have to guess.
Backups
Prototypes often store everything in one place with no copy elsewhere. Deleting a record by mistake can mean it is gone. A production build needs backups that have been tested, so you know the restore works before you need it.
Hosting and deployment
The prototype may run on a free tier, on one person's account, or on a link that only works while a laptop is open. Production needs hosting that you control, a repeatable way to deploy changes and a clear record of which version is live.
How we harden a prototype for production
We start by understanding what the prototype does and which parts your business depends on. Then we work through the gaps in order of risk, not in the order they happen to appear in the code.
- Review: read the code and the data model, and map what each screen can reach.
- Access: set up logins, roles and permissions, and check every route a user could try.
- Secrets and inputs: move keys out of the code, and check and limit what each form accepts.
- Tests: cover the money, approval and access flows first, then the rest.
- Errors and logs: make failures clear to users and visible to us.
- Backups and hosting: set up hosting you control, tested backups and a repeatable deploy.
Each step is checked before the next one starts. The prototype stays usable during the work, and you see the changes as they land rather than at the end. Where the prototype is close to right, we keep it. Where a part is holding everything together badly, we rebuild that part and say so.
Before anything goes live, we run the app the way a real user would and check the flows against the scope. Nothing is marked finished because it looks right on screen.
Bring us the prototype and we will tell you what it needs
Book a discovery call. We will look at what you built, name the gaps that matter and suggest the honest next step.
If you built the prototype yourself
Plenty of founders and operators build their first version themselves, and then find the next step harder than the first. That is normal. The first build taught you the product. The next build needs someone to look after the parts you do not yet have time to learn.
You do not need to understand every line of code to work with us. It helps if you can show us the product, explain who uses it and tell us which parts you are most worried about. We take it from there, and we explain the decisions in plain language as we make them.
Finish the prototype, or rebuild it?
The honest answer depends on what we find. Some prototypes are sound underneath, with a few missing pieces. Others are tangled, with logic repeated across files and no clear structure. Both can be made production-ready, but the work looks very different.
- Harden
- Your working prototype
- Rebuild
- A written spec
- Keep as is
- The prototype as it is
- Harden
- Yes, where it is sound
- Rebuild
- Only what is carried over
- Keep as is
- Yes
- Harden
- Reviewed and fixed
- Rebuild
- Designed in from the start
- Keep as is
- Left as it is
- Harden
- Fixed one at a time, in order
- Rebuild
- Few, if the spec is good
- Keep as is
- Whatever nobody has found yet
- Harden
- The idea is right and the build is mostly sound
- Rebuild
- The structure is tangled or the spec has changed
- Keep as is
- It is a test with no real users
- Harden
- Fixed scope, quoted after discovery
- Rebuild
- Fixed scope, quoted after discovery
- Keep as is
- Hidden cost in every incident
Hardening is usually the right choice when the design and the data model are sound. Rebuilding is better when the structure is so tangled that every fix creates two new problems. Leaving it as it is only makes sense for a throwaway test with no real users, and even then it should be kept away from real customer data.
We say which route we recommend on the discovery call, and we explain the reasons. If the prototype is not worth finishing, we will tell you that too.
How we use AI on our side
We use AI tools in our own work because they speed up the parts that are repetitive, such as drafting tests, writing boilerplate and explaining an unfamiliar block of code. That speed is useful, and we do not hide it.
What the tools do not do is decide what ships. A senior person reads every change before it goes in, checks it against the scope, and owns the result. AI-written code that nobody has read is a common reason quick prototypes stall, so we do not build that way.
What you get at the end
The finished app is handed over in a state you can run without us. You get the code in a repository in your name, the hosting and database accounts held by you, and written notes on how the app is put together. Those notes cover where the data lives, who can access what and how to deploy a change.
- The code, in a repository you own, with a readme and setup steps.
- The hosting and database accounts, held in your name.
- A short record of the access rules and the decisions behind them.
- The backup and restore steps, and a check that they work.
What we will not promise
No one can promise that software is bug-free, and any honest builder will say the same. We do not promise that a hardened app will never have a fault. We promise a reviewed build, tested core flows, clear errors, working backups and a handover you can act on.
We also do not promise that every prototype is worth finishing. Some ideas are better tested again before any build, and we will say so. If an AI consulting review would help you decide what to build next, we can point you there.
Your data and your accounts
A prototype often holds real information from the first day it is shared, so the question of data comes early. We ask what the app stores, who can see it and where it sits today. We agree how that data moves during the hardening work, and we keep real records out of test environments wherever we can.
Access to any existing accounts is limited to what the work needs, and agreed on the discovery call. Our privacy policy sets out what we collect through this website and how we handle the details you send us.
Where to start
Start with a discovery call. Bring the prototype, a short description of who uses it and what worries you most. We will look at what it does, tell you which gaps matter for your situation and suggest the route that makes sense.
Pricing is quoted after that call, based on the work we agree. You can book a discovery call when you are ready, and if you want the bigger picture on automating the work around the app, the business process automation page covers that side.