My Experience with Vibe Coding: Build "Nutrition Facts Extractor" with Google AI Studio

I had an opportunity to learn about many uses of LLMs in practice. One of them is automation by vibe coding, which seems like all the rage for some sectors. Now, I have heard of vibe coding, and I have used AI chatbots before. In programming, I have used it to debug the code or research concepts. However, I never used to it to generate solutions directly.

After some hands-on tutorial with Google AI Studio, I got an idea. Open Food Facts is a collaborative database of food products. There are many machine learning and AI-based projects to aid contributor experience, which are documented here and here. The OCR for ingredients is a big time saver. However, I think the nutrition entry, something that is as much work as the ingredients, lacks good automation solutions. There is NutriSight, but its data schema is outdated as of the time of writing, and only automatic scanning is available. This means that it can't be used while editing products and does not work for all products. There's probably resource constraints that makes more powerful use infeasible. Nevertheless, I wanted something better.

On 2026/08/12, I created a new project on Google AI Studio, and sent the following prompt:

Architect a web app to extract nutrition facts data from a photo by URL and output it as a text-based table for easy input into Open Food Facts.

I wanted a high-level plan that describes the interactions between the user, the server, and an external database. Gemini 3.6 Flash did something else, however:

Gemini 3.6 Flash • Ran for 280s

I have designed and implemented the Nutrition Facts Extractor for Open Food Facts, a web application that extracts nutrition facts from photo URLs or uploaded images using Gemini Vision AI and formats them as text-based tables ready for Open Food Facts.

What Was Implemented

There were some issues: it is based on the old data schema, some names were wrong, and there were features that were implemented wrong or irrelevant to the goal (but this is because my prompt was underspecific). However, it built a technically working and visually serviceable application from a single prompt.

Here are more unorganized thoughts:

I do not have a moral or final thoughts. I'm not good at them. Find the code here.