top of page

Umami Builder — a Vibe Code Experiment Using the Umami Database

  • Writer: Joseph Chen
    Joseph Chen
  • Nov 5
  • 3 min read

Updated: Nov 11

ree

It may take up to a minute for the backend to wake up. Refresh if search doesn’t respond.

Why / What

I’ve always remembered the Fantasia scene where the apprentice’s broom begins hauling water on its own, fascinating at first, but quickly out of control.


That blend of curiosity and unease perfectly captures how I felt when I started this vibe-code experiment: excited to see what AI could build, yet cautious about how to ask the right questions and verify the results.



As a home cook and designer, I’ve known the Umami Information Center’s database for years. It’s comprehensive but reads like a research table, full of precise numbers that are difficult to interpret when thinking about ingredient pairing or flavor balance.


My idea was to transform their open data into a visual calculator that shows intensity and balance, allowing users to explore how amino acids and nucleotides interact in real time.


Planning the Build

Data Sources: 

Umami Information Center (Umami compounds), ChatGPT (TCM mapping)

Tech Stack: 

Next.js, TypeScript, Tailwind CSS, Django, PostgreSQL

Deploy: 

Render

AI Tools: 

Warp, Cursor, Codex, ChatGPT

Goal:

  1. Validate how AI coding workflows perform across the full design-to-deployment pipeline.

  2. Convert static umami data into an interactive tool that visualizes umami synergy and basic TCM balance in a clear, usable format.


Data / Method

The umami center dataset lists 20 amino acids and 3 nucleotides. But according to the EUC formula, only 2 amino acids and 3 nucleotides directly influence umami perception which are: AA (amino acids): Glu, Asp; Nuc (nucleotides) : IMP, GMP, AMP.


Each compound is weighted: Glu = 1.0, Asp = 0.077, IMP = 1.0, GMP = 2.3, AMP = 0.18. Weighted sums feed into the EUC formula using the synergy constant 1218 to estimate the Equivalent Umami Concentration (EUC), producing one comparable value for each ingredient or blend.


EUC = Σ(aᵢ·bᵢ) + 1218 × Σ(aᵢ·bᵢ) × Σ(aⱼ·bⱼ)


Where:

aᵢ = Amino acid concentration (Glu, Asp)

aⱼ = Nucleotide concentration (IMP, GMP, AMP)

bᵢ, bⱼ = Relative umami weights above


To make the results more intuitive, I defined a six intensity levels base on the theoretical human taste limit for Amino Acids (AA), Nucleotides (Nuc) and Synergy (EUC).

Level

AA mg/100g

Nuc mg/100g

EUC mg/100g

Description

0

0

0

0

No umami

1

≤ 10

≤ 5

≤ 100

Very Low

2

10–30

5–15

100–400

Low

3

30–80

15–40

400–1000

Moderate

4

80–150

40–80

1000–3000

High

5

150–300

80–150

3000–8000

Very High

6

> 300

> 150

> 8000

Exceptional

The interface also displays AA : Nuc balance, showing that flavor peaks near a 50 : 50 ratio.


ree

Early visualizations use simple bar charts, fully customized data visualizations generated by AI often defaulted to generic layouts, so this baseline kept iteration predictable.


Left: Original Umami Data Center table. Right: Redesigned view using color and charts to show umami intensity for easier ingredient pairing.
Left: Original Umami Data Center table. Right: Redesigned view using color and charts to show umami intensity for easier ingredient pairing.


How / Difficulty

Planning and Validation

  • Discussed feature feasibility with GPT to select formulas and define the MVP.

  • Learned to ask “What problems could appear?” instead of “Is this possible?” and validated progress through visible front-end results.


Stack Choice

  • Selected Django + PostgreSQL because I’d learned Django previously and wanted a scalable back end.

  • Chose popular frameworks with strong community support so AI tools could reference abundant open-source examples.


Data Mapping

  • The toughest task was aligning ingredient names, origins, and processing methods.

  • Kept the first release limited to the core Umami Center dataset, leaving cross-database mapping for later.


Typical Issues & Fixes

  • Unexpected Routing: Warp created a /composition route instead of updating the home page → added sitemap definitions to the PRD.

  • Prompt Precision: Structured, diagnostic phrasing outperformed polite requests.

  • Style Consistency: Without a style guide, visual drift appeared → future versions will use Figma variables and design tokens.

  • Visualization Limits: AI struggled with custom chart logic; started with simple bar charts for clarity.


Key Insight

Most “bugs” came from unclear definitions, not technical errors. Precise framing and explicit validation points consistently improved AI output.


Result and Learning

Working Outcome

  • Prototype runs smoothly with real-time synergy calculation and AA–Nuc balance visuals.

  • Converts dense scientific tables into an interactive, readable tool.

Main Lessons

  • Clear structure (PRD, sitemap, tests) keeps AI aligned and results verifiable.

  • AI works best as an assistant within defined boundaries.

  • Prompt clarity is a core skill; direct requests produce consistent data.

  • Design tokens and constraints are essential for visual coherence.

  • Tool specialization matters: Warp for deployment, Cursor/Codex for fixes, ChatGPT for planning and documentation.

Reflection

Vibe coding is about creating a system where AI can build with me, not for me. Speed is useful, but structure is what makes it trustworthy. Understanding and verification remain human tasks.


Future Development

  1. Add account authentication so users can save their ingredient combinations and compare results over time.

  2. Integrate USDA nutrient data, allergen information, and the NOVA food-processing levels to expand context and usability.

© 2025 by Joseph Chen.

bottom of page