PhotoCal

Tag et billede af maden og få kalorierne, uden at appen lader som om, at AI'ens gæt er sandheden.

Problem
Det er let at gøre madregistrering besværlig, og lige så let at gøre den mere præcis, end den er.
Bygget til
Min familie og mig.
Min rolle
Mit eget projekt. Jeg har designet og bygget det hele.
Status
Min familie og jeg bruger den hver dag.

ai · nutrition · pwa

Skærmbillede af PhotoCal

PhotoCal er en app til telefonen, hvor man registrerer sine måltider med et billede, en kort tekst eller ved at skrive tallene ind. Jeg byggede den, fordi jeg selv manglede den, og nu bruger min familie og jeg den hver dag. Det svære var ikke at få AI til at give et bud på kalorierne. Det svære var at gøre buddet brugbart, når AI kun er én af flere kilder, og ikke altid den bedste.

Hvorfor jeg byggede det

Madregistrering bliver hurtigt besværlig. Og den bliver lige så hurtigt mere præcis, end den i virkeligheden er. Jeg ville have det nemme i bare at tage et billede, men uden at lade som om, at et gæt ud fra et billede er et faktum.

Så spørgsmålet blev: hvordan får man noget, man kan stole på? Brug AI hvor det hjælper, brug bedre data når de findes, husk hvad brugeren allerede har bekræftet, og gør det nemt at rette. Fordi vi bruger appen hver dag, opdager jeg hurtigt, hvad der ikke virker, og kan rette det.

Sådan virker det

Et måltid kan starte med et billede, en tekst eller tal, man skriver ind. PhotoCal laver AI’ens svar om til tal for kalorier og næringsstoffer og holder dem op mod bedre kilder: fødevaredatabaserne FCDB og FRIDA, kendte produkter, ens egne portionsstørrelser og måltider, man tidligere har bekræftet eller vejet.

Det, man selv har bekræftet, vægter mere end et nyt gæt fra AI. Spiser man noget, man har spist før, foreslår appen det ud fra ens historik i stedet for at spørge AI igen. Kalorier og næringsstoffer kan altid rettes, hvis man ved bedre.

Appen holder også styr på dagens kalorier, vægten over tid og giver feedback, når man når et mål. Den feedback følger faste regler. Det er ikke en sprogmodel, der finder på gode råd.

Usikkerhed og privatliv

Appen holder styr på forskellen mellem det, AI har gættet, og det, man selv eller en god datakilde har fastslået. Den forskel betyder noget, for appen bliver kun klogere på én, hvis usikre gæt ikke stille og roligt bliver til sandheder.

Data kan synkroniseres mellem ens enheder med Netlify Identity og Turso. De rigtige billeder af maden bliver på telefonen. Små miniaturebilleder kan synkroniseres via Netlify Blobs, men kun hvis man selv slår det til.

Teknik og test

Appen er bygget med React 19, TypeScript og Vite, med Hono og Netlify Functions på serveren. Turso gemmer data til synkronisering, IndexedDB og localStorage holder en kopi på telefonen, og AI-delen bruger OpenAI’s Responses API med mulighed for at skifte udbyder.

Der er test med Vitest og Testing Library, især de steder, hvor et usikkert gæt bliver til data, som appen stoler på.