Vibe Code App With 3 Popular Chatbots. The Real Winner Is A Good Message

If you can type or speak, you probably can vibe code. That’s really easy. Simply submit your opinion to An AI chatbot of your choice in natural language, and it will start working. While all projects may not end up being precious or fully functional, the effort involved in creating a web application with chat is minimal.
I played around with vibe writing a bit, creating random projects here and there. I’ve tried it a lot for proof-of-concept or chatbot testing purposes, but rarely do I try to make something useful or functional until I see myself using it every day. Then I started looking for an e-reader and left frustrated that most of them are incredibly “dumb”, especially Kindles. More on that later.
Out of inspiration (but mostly out of disdain for Amazon), it made me try to fix the codes, but with a twist. I wanted to see if I could put together a working e-reading code that had all the features I wanted. Knowing that even if I can fix this thing, I probably won’t use this every day, but I wanted to add some flair.
The question became what should an AI chatbot be used for. I didn’t bother trying to choose. I used Gemini, Claude and ChatGPT to do what I wanted and see if anyone produced better results.
Information
Comparing chatbots is hard to do, especially if you’re trying to simulate the same conversation or vibe coding project. believe me, I tried. I wanted to make sure that all the tools I tested used the same information, but first, I wanted to adjust that information to get the best results, so I came up with a strategy to get me there.
First, I built the entire project at its basic level with Gemini. Once I liked where the project was (a successful and functional proof of concept), I asked it to generate information so I could add it to any other chatbot. Gemini generated the information, I saved it as a file, and uploaded it to Claude. I went through this process again, letting Claude catch and fix things I hadn’t thought of when I was building the project with Gemini. Once that process was complete, I asked it to create another message for me to add to ChatGPT.
The idea was to have all three chatbots have some input into the actual design of the project, and then the final information. Once the prompt was created, I uploaded it to all three chatbots in a separate chat to see how they worked consistently.
Project: Tome Reader
This project was born out of my frustration with Amazon Kindle devices. Anyone who likes to read and listen to their books can do so with real-time highlighting on an iOS or Android app, but after all this time — almost 20 years — you can’t do this on Kindle. In fact, it wasn’t long ago that users gained the ability to access real-time text highlighting through the playback of reading aids, which are very close to the functionality of the app. From now on, you can only read or listen to an audiobook on Kindle, not both, which is funny, and the idea that Amazon owns all my books. I thought I could just shake up the solution. I call it Tome Reader.
I wanted to create a dedicated e-reader web app that will read your books aloud (with real-time text highlighting, of course) whether the text is pasted or your PDF or EPUB file is uploaded. In addition to reading the text aloud, the web application will create background music depending on the content of the text in a subset of categories (neutral, gothic horror, sci-fi, nature, fantasy, underwater, western, mystery), and generate additional sound and visual effects when certain first words are spoken in real time. Every project is created with a single HTML file to run within the browser without additional dependencies.
Building with chatbots: The first round
Gemini
Gemini does all the features I wanted in Tomb Reader with ease.
Gemini allowed me to find out how far I could stretch the functionality of this web app, and as a result most of its functionality comes from Google’s chatbot. It allowed me to quickly iron out small glitches at first, which prevented TTS voices from loading. Instead, it created a splash screen that would force the words to load after clicking the “open” screen in the app. Without this kind of information, the project would never get off the ground.
Gradually, the project’s performance began to grow. Because the live sounds of some lyrics can be distracting, I made sure to add an option to turn off those sounds and background music. After I got the foundation of the app, I asked Gemini to create information that I could share with other chatbots so I could build it elsewhere if I wanted to, and that’s what it did.
Claude
Claude’s project gave me great success in some areas and many problems in others, but it is my favorite of the three pilot projects.
Claude has made amazing progress on the basic work of starting words in this project. Claude expanded vocabulary and expanded perception when the initial word was spoken aloud. That said, Claude made a phone call that I didn’t ask for, even though it made perfect sense.
At first, I thought that this project was not working because when I went to test its functionality, just the first word would create the desired result in a series of about 10. It took some time for Claude to finally reveal that he decided to only allow the audio and visual effects to trigger once per sentence so as not to “spam” the user. This made a lot of sense, but the project was more of a proof-of-concept than a practical reader, and Gemini and ChatGPT produced sound results for all keywords, which was an expected feat.
All that said, there was no specific order within the information for the number of times the audio and visual effects were played. While it wasn’t what I was looking for, I appreciated the thoughtfulness of the user experience to make such a call. Then after all those fixes were coded, Claude then updated the information, and I took it to ChatGPT.
ChatGPT
ChatGPT failed to create additional features when I asked it to sometimes, but I was still able to recreate the project just fine when I gave it a final update.
When I created the update with Claude, there wasn’t much I could think of when uploading it to ChatGPT. Fortunately, OpenAI’s chatbot created the project easily, despite being slow to generate code. One task I’ve asked ChatGPT to add to the project — building a dedicated background music volume slider to be completely turned off if someone just wants a dedicated reading experience ie — has consistently failed. Finally, I went back to Claude to request this functionality and recreate the information.
Round 2: Re-creating the same project
Apart from using Gemini 3 Pro initially to create the project and the free versions of ChatGPT and Claude, all three created the project, but without problems. I had spent most of my time inside Claude refining the project, and was responsible for making the final version. So it was very surprising to find that when you load that notification in a new thread, the project won’t load past the first “getting started” page. Despite having absolutely no problems with the previous iteration, it took 11 (yes, really) more full rebuilds to figure out what was going on.
Re-creating the project with both Gemini and ChatGPT worked flawlessly. All functions, basic and advanced, work as they should, including file loading, test highlighting, text-to-speech output, and both audio and visual when startup words are spoken aloud. Going back to the models, I saw very little difference in performance or performance when I gave the same information to each chatbot.
Chatbot inconsistency
Finding a file to check was always easy with Claude. Not only did it provide a preview of the project so you didn’t need to download the HTML file at all, but if you wanted to (which I usually did for testing), it was made available for direct download. This option was sometimes offered through ChatGPT, while other times I could copy the HTML and save it myself.
Despite having a few faults and doubts all about Gemini, it always required you to take the long route and do it this way. All that aside, the fact that ChatGPT sometimes only offered to let me download a file as HTML directly was odd and a little frustrating.
Winner: It’s up to him
Determining the winner of this type of test is tricky, as all chatbots have their pros and cons. In a sense, everyone wins. Each was able to create a working version of the project at some point, but it usually took repeated attempts.
Ultimately, the winner is the user. It goes to show that, regardless of the model being used, a solid set of instructions can take you far. I could not tell the difference in functionality or performance between the application created by Gemini 3 Pro compared to the free versions of ChatGPT or Claude.
This is actually the exact opposite of what I found when I had the same conversation with both the Gemini pro and free models. Although that was for another day, another project, and another model, will show that solid information can get you far in the world of vibe coding.



