Product Ingredient Analyzer

Applied AI

Cloudflare Workers, Gemini API, JavaScript

An app that takes a photo of an ingredient label and explains what each ingredient is and what it is for. One Cloudflare Worker serves the page, takes the upload, and calls the model. No accounts, nothing stored.

Problem

A vision model will explain a label it misread just as confidently as one it read right. With no reference source to check against, the app cannot tell the two apart, which limits what it should claim about anything health-related.

Approach

  1. The whole app is one Worker: the same handler serves the HTML, accepts the multipart upload, and calls the model. No build step, no bundle, no origin server, one deployment artifact.
  2. The client checks the upload is an image before anything goes to the model. Nothing is stored, and there is no account.

Results

  • One photo in, a readable brief out, with no account or install.

Limits

  • One vision model, no ingredient database behind it. The app cannot check whether an answer is right.

Context

page, upload, and model call
One Worker

Architecture

  1. Photo upload
  2. Type guard
  3. Vision model call
  4. Plain-language brief