All work

Edible
Factor

A consumer dining app, a restaurant operating system, and an AI menu engine. One Go backend, idea to deploy, live in Bengaluru.

Role
Founder, design + build
Years
2025 to now
Stack
Next.js, Cloudflare, Go, Gemini
Live
app.ediblefactor.com ↗
Edible Factor insights: weekly calorie and spend trends, rendered in the new paper-white theme.
Edible Factor / insights, paper-white theme

01The problem

Diners track calories or budget. Never both. Operators fly blind on what their menu actually does.

Eating out in Bengaluru means juggling two numbers at once, what a meal costs your body and what it costs your wallet, and no app holds both. On the other side of the table, restaurants run on instinct: no real read on which dishes are healthy, profitable, or even ordered.

Edible Factor closes both gaps from one stack: a diner-facing app that tracks budget and calories together, and an operator OS that turns a menu into something measurable.

02The fleet

Three surfaces,
one backend.

A Edible FactorConsumer app The diner app. Real-time macro and budget tracking, an AI sommelier, menu scanning, and a paper-white light mode. Next.js 15 on a Cloudflare Worker via OpenNext.
B PlateOperator OS The restaurant operating system: menu intelligence, claim-to-onboard, CSV import, and operator analytics. The other side of the same data.
C ScouterAI menu engine The intelligence layer: nutrition and provenance resolution behind every dish, with a path to per-dish micronutrients and diabetes-aware discovery.

One Go backend owns auth, menus and operator context, running on a laptop behind a Cloudflare Tunnel. No cloud bill, no vendor lock.

03A chapter

A paper-white light mode, with dark left byte for byte unchanged.

The app shipped dark-only. Adding a light theme usually means a second design, and a second set of bugs. Instead it keys off the operating-system preference and flips automatically, while the shipped dark experience stays pixel-identical.

The trick is a token whose dark value equals the original literal. A new --brand-text-strong resolves to pure white in dark and to ink on paper; every white tint became color-mix(var(--brand-text-strong) N%), which is exactly the old value in dark and adapts on light. Four token sweeps, a scoped-cascade fix, a clean production build: dark could not regress, and light came almost for free.

Dark / shipped Edible Factor dashboard in the original dark theme.
Light / new The same Edible Factor dashboard in the new paper-white light theme.

04Under the hood

Frontend
Next.js 15 App Router, Tailwind v4, Zustand, shipped to a Cloudflare Worker via OpenNext.
Backend
A Go API owning auth (JWT), menus and operator context, behind a Cloudflare Tunnel.
AI
Gemini powers the sommelier chat and menu scanning, with a graceful demo fallback.
Operators
Plate, a second Worker, with claim-to-onboard and CSV menu import.
Discipline
Spec-driven, strict CSP, byte-identical theming, fully reduced-motion aware.

05Where it stands

Live at Ninan's Steakhouse, the first operator on Plate.

Next project Ninan's Steakhouse