Plattformsdokument · Utkast

Alla vägar leder till Rom.

Allt du tar in leder till en enda plats — dig. Det här dokumentet beskriver appen som kartlägger den platsen: vad den är, hur den är byggd, och hur kunskapen är strukturerad.

Kapitel I

Introduktionen

Vad appen är till för, och liknelsen den vilar på.

Syftet

Vad appen är till för

Appen hjälper människor att förstå vad som faktiskt händer i kroppen när de äter och dricker. Den jämför substanser i mat och dryck och förklarar, begripligt och vederhäftigt, hur de samverkar i magen och kroppen — vad som skapar obehag, vad som påverkar näringsupptag, vad som krockar med mediciner.

Målet är inte att döma eller skrämma, utan att göra osynliga processer synliga. När en användare förstår sin egen kropp kan hen motverka risker, lindra obehag och lösa vardagsproblem innan de uppstår. Kort sagt: hjälpa människor att må bättre genom att förstå mer.

Det sker genom fyra roller. Avkodaren förklarar vad som händer just nu. Detektiven hittar dina personliga mönster och triggers. Vakten varnar för risker och interaktioner. Coachen hjälper dig i förväg. Fyra roller — men ett och samma svar i botten, eftersom alla läser ur samma karta.

Liknelsen
Allt du tar in — mat, dryck, medicin, ingredienser — färdas längs sina vägar till en enda plats. Den platsen, Rom, är du.

Liknelsen arbetar på två plan — ett om verkligheten appen handlar om, ett om hur appen är byggd:

Verkligheten — produkten

Rom är du — din kropp och ditt mående, den enda punkt där allt du konsumerar verkligen möts. Vägarna är allt som tas in. Appen själv är varken Rom eller vägarna; den är kartritaren och vägvisaren. Produkten är guiden till Rom.

Bygget — arkitekturen

Kunskapskärnan är inte Rom — den är kartan över Rom. Mjukvaran kan aldrig bli kroppen; den kan bara kartlägga den så troget som möjligt. Ju bättre kartan, desto pålitligare vägvisning.

Kapitel II

Arkitekturen

Hur plattformen är byggd — kärnan, rollerna, de fem lagren och vägen framåt.

Grund  ·  Din befintliga stack
Tillagt  ·  3 lager
Princip  ·  Förbättra, alltid
Översikt

Kärnan och de fyra rollerna

Avkodaren, Detektiven, Vakten och Coachen är inte fyra appar — de är fyra roller som läser samma karta. Mellan rollerna och kärnan ligger ett lager av logik och intelligens som översätter rådata till begripliga, säkra svar.

I II III IV LOGIK & INTELLIGENS KÄRNAN KARTAN ÖVER ROM EN SANNINGSKÄLLA

Stommen byggs först — kärnan fylls sedan.

I

Avkodaren

Vad händer i mig?

II

Detektiven

Hitta dina triggers

III

Coachen

Hjälp innan obehaget

IV

Vakten

Risker & interaktioner

Lagren

Fem lager, inifrån och ut

Din ursprungliga stack är intakt — den utgör lager IV. Tre nya lager läggs till: kärnan själv, logiken som tolkar den, och förvaltarytan som Sabina arbetar i.

0
Kärnan

Kunskapskärnan — en sanningskälla

Plattformens kronjuvel — kartan över Rom, den modell av kroppen som allt annat vilar på. Substanser, livsmedel och drycker, deras interaktioner, kontraindikationer, kroppens processer, symtom och de mekanismer som förklarar varför. Varje post är versionerad med utkast/publicerat-status, källhänvisad och spårbar. Detta är inte kod — det är data, och behöver sin egen historik skild från GitHub.

substanslivsmedel interaktionkontraindikation kroppsprocesssymtom mekanism / förklaring
I
Nytt

Logik & intelligens

Lagret som översätter kärnans data till svar. Avgörande nyans: Vaktens kontroller måste vara deterministiska, spårbara regler — aldrig en fritt resonerande AI, eftersom en hallucination i hälsosammanhang är oacceptabel. AI får driva förklaring och ton, men aldrig riskbedömning.

regelmotor · deterministisk mönstermotor · korrelation förklaringsmotor · AI, grundad i kärnan personaliseringsmotor
II
Rollerna

De fyra rollerna

Avkodaren, Detektiven, Vakten och Coachen. Inga separata system — bara fyra vyer mot samma motor. En användare kan vandra mellan dem utan att lämna appen. Rollerna kan släppas en i taget; kärnan och logiken är gemensamma.

Avkodaren — förstå Detektiven — upptäck mönster Vakten — varna Coachen — föregripa
III
Nytt

De två ytorna

Plattformen är tvåsidig. Användarappen är det folk laddar ner. Förvaltarkonsolen är det Sabina faktiskt arbetar i — en no-code-yta för innehåll, ton och kunskap, byggd så att hon kan förvalta utan att kunna bryta systemet. Det här lagret saknades helt i den första skissen och är navet i hela överlämningsplanen.

användarapp förvaltarkonsol · no-code granskningsgrind före publicering
IV
Grund

Infrastruktur — din stack, vässad

Byggkedjan är oförändrad: AI/Cursor → GitHub → Vercel → Cloudflare. Supabase bär databas och autentisering — nu med EU-region och Row Level Security från dag ett. Kritisk logik flyttas till Edge Functions. Zapier behålls, men endast för icke-kritisk glue: e-post, sms, CRM. Aldrig kärnlogik.

Cursor / CCGitHub VercelCloudflare Supabase · EU · RLS Edge FunctionsZapier · endast glue
Tvärgående

Tre hänsyn genom alla lager

Vissa krav bor inte i ett lager utan löper genom hela arkitekturen. De måste byggas in från start — de går inte att lägga till efteråt.

Styrning

Inget hälsopåstående går live utan granskning. Utkast/publicerat-status, godkännandesteg och fullständig ändringshistorik. Skyddar användaren, Sabina och dig.

Efterlevnad

Symtom, mediciner och diagnoser är särskild kategori under GDPR. EU-region, dataminimering, uttryckligt samtycke och RLS är inte tillval utan utgångsläge.

Överlämning

GitHub, Vercel, Cloudflare, Supabase och domänen ligger i org-konton — aldrig privata. Då blir överlämningen till Sabina ett ägarbyte, inte en migrering.

Förbättringen utöver förbättringen

De sista tio procenten

100 % är en sund, byggbar arkitektur. Här är de tio procent som gör den trovärdig, försvarbar och värd mer än summan av sina delar.

+10%
Fyra skärpningar

Härkomst på varje kunskapspost

Varje fakta i kärnan bär en källa och en konfidensnivå. Då kan Vakten citera varför den varnar, Förvaltaren kan granska sak, inte gissning, och appen blir trovärdig i en bransch full av brus. Detta är skillnaden mellan en hälsoapp och en åsiktsapp.

Kärnan som intern tjänst

Eftersom appen är bredare än Sabina — och du bygger många appar — exponeras Kunskapskärnan som ett återanvändbart internt API. Den behöver inte tjäna bara den här appen; en framtida produkt kan vila på samma karta över Rom.

Återkopplingsslingan

Anonymiserade användarutfall matas tillbaka och gör mönstermotorn vassare över tid. Detektiven blir bättre ju fler som använder appen — försiktigt gjort, alltid avidentifierat.

Handoff-sömmen som uttalad egenskap

En medveten gräns i arkitekturen där ägande kan bytas utan att något byggs om. Motorn stannar hos teamet, driftsytan går till Sabina. Sömmen ritas in nu — inte den dag den behövs.

Sekvens

Först stommen, sedan kartan

Liknelsen håller hela vägen. Vi reser ställningen först — när stommen står, fyller vi kartan med sitt verkliga innehåll. Sist överlämnar vi den färdiga kartan till Sabina.

Fas I

Stommen

ställningen
  • Infrastruktur i org-konton
  • Datamodellens skelett
  • Förvaltarkonsolens skal
  • Regelmotorns ramverk
  • En roll helt klar — bevis
Fas II

Kartan

kärnan
  • Kunskapskärnan fylls på djupet
  • Källhänvisning och konfidens
  • Alla fyra roller öppnas
  • Intelligenslagret skarpt
  • Kärnan exponeras som tjänst
Fas III

Nyckeln

överlämning
  • Granskningsflöden inkörda
  • Sabina driftar konsolen
  • Återkopplingsslingan igång
  • Ägarbyte längs sömmen
  • Teamet kvar som teknik
Vad som ändrats mot version 1

Din stack är behållen i sin helhet — den var rätt. Tre lager har lagts till: kärnan (lager 0), logiken (lager I) och förvaltarytan (lager III), som alla saknades i den första skissen. Tre tvärgående hänsyn — styrning, efterlevnad, överlämning — har gjorts explicita. Och fyra skärpningar lyfter arkitekturen från sund till försvarbar.

Vidare i dokumentet

Nästa kapitel beskriver datamodellen för kärnan — de sju objekten i lager 0 och hur de hänger ihop. Det är ritningen som Fas I byggs mot.

Kapitel III

Datamodellen

Kartans ritning — de objekt kunskapskärnan är byggd av, och hur de hänger ihop.

Kärnobjekt  ·  7
Stödobjekt  ·  2
Stack  ·  Postgres / Supabase
Avgränsning

Vad modellen omfattar

Det här är datamodellen för kunskapen — inte för användaren. Användarprofil, loggade måltider och loggade symtom är en egen modell, den som Detektiven och Coachen vilar på. Den tar vi separat, så att kartan inte blandas ihop med resenären.

En skillnad att hålla skarp

Katalog, inte logg. Objektet Symtom här är definitionen av ett symtom — vad "halsbränna" är. En användares faktiska upplevelse ("kände mig uppblåst kl. 14") är en loggpost i användarmodellen, som pekar tillbaka på katalogen. Samma princip gäller Tillstånd: katalogen bor i kärnan, en persons faktiska diagnoser i profilen.

Genom allt

Metadata-bältet

Varje kunskapspost — alla sju kärnobjekt och båda stödobjekt — bär samma uppsättning fält. Det är inte något man lägger till sedan; det är förutsättningen för granskning, härkomst och en trygg överlämning.

Gemensamma fält på varje post
id
UUID, primärnyckel
status
utkast · publicerad · arkiverad — inget hälsopåstående går live utan granskning
version
heltal, räknas upp vid varje publicerad ändring
skapad / ändrad
tidsstämplar
ändrad av
redaktör — vem som rörde posten senast
ändringshistorik
fullständigt spår i separat logg, aldrig överskriven
källa + konfidens
koppling till ett eller flera Källa-objekt; kopplingen bär konfidensnivån
Kärnobjekten

De sju objekten

Fälten nedan är ett första utkast — tillräckligt skarpt att bygga mot, öppet nog att vrida på. Metadata-bältet ovan tillkommer på var och en och upprepas inte här.

01Substans

Den kemiska aktören — atomenheten i hela modellen. Koffein, citronsyra, kapsaicin, etanol, laktos, histamin, en aktiv läkemedelssubstans.

namn
primärt namn
synonymer
alternativa namn, lista
substansklass
syra · bas · alkaloid · stimulant · mineral · vitamin · aktiv läkemedelssubstans …
beskrivning
kort, neutral förklaring
02Intaget

Det verkliga objektet en person tar in — dörren in till Rom. Kaffe, en tomat, mjölk, ibuprofen, sojasås.

namn
det användaren känner igen
kategori
mat · dryck · tillskott · läkemedel · ingrediens
beskrivning
kort beskrivning
03Kroppsprocess

En fysiologisk process eller plats — var något händer i Rom. Magsyrasekretion, järnupptag i tunntarmen, CYP3A4-metabolism i levern.

namn
processens namn
kroppssystem / plats
magsäck · tunntarm · lever · blod · tarm …
beskrivning
vad processen gör
04Interaktion

Appens hjärta — en effekt. En substans påverkar en kroppsprocess, eller en annan substans.

aktör
Substans — alltid en substans
mål
Kroppsprocess eller Substans — exakt ett. Två fält, en regel som kräver att precis ett är satt
effekttyp
höjer · sänker · hämmar · blockerar · binder · utlöser · påskyndar · fördröjer
magnitud
svag · måttlig · stark
villkor
t.ex. "på tom mage", "dosberoende" — fritext nu, struktureras senare
05Kontraindikation

En flaggad risk-regel för en person — det Vakten läser. Skild från Interaktion: ett faktum blir en regel först i en personlig kontext.

utlösare
Substans eller Intag — exakt ett
kontext
Tillstånd eller Substans — exakt ett. För vem, eller mot vilken annan medicin
allvarlighetsgrad
info · försiktighet · undvik · fara
råd
den text Vakten visar för användaren
baseras på
koppling till den eller de Interaktioner regeln vilar på
06Symtom

En upplevd erfarenhet — vad du känner. Halsbränna, uppblåsthet, skakighet, energisvacka. Detta är katalogen, inte en loggad upplevelse.

namn
symtomets namn
beskrivning
hur det känns och yttrar sig
kroppssystem
var i kroppen det hör hemma
07Förklaring

Den begripliga "varför" — Avkodarens innehåll. En återanvändbar, källhänvisad och granskad text.

titel
kort rubrik
text
förklaringen i klarspråk
kopplas till
Interaktion · Kroppsprocess · Symtom · Kontraindikation — en eller flera
Bron

Innehåll — länken som bär allt

Beslut 2 sa: interaktioner modelleras på substansnivå. Det fungerar bara om det finns en bro mellan det användaren känner igen och det kemin handlar om.

Innehåll  · Intaget ↔ Substans

En kopplingstabell: vilket Intag som innehåller vilka Substanser, och i vilken mängd. Det är här appen översätter "kan jag ta detta med mjölk?" till substansnivå — och härleder interaktioner på intagsnivå utan att samma fakta matas in om och om igen.

intag · substans
de två kopplade objekten
mängd
kvantitativt där det går — annars spår · låg · medel · hög
enhet
mg, g, mängd per portion …
Relationsdiagram

Hur objekten hänger ihop

Ryggraden är ett flöde: från det du tar in, genom det som händer, till det du känner. Kontraindikationen grenar av som en regel; Tillståndet ger den sin kontext.

innehåller verkar som aktör i påverkar yttrar sig som vilar på gäller Intaget det du tar in Substans den kemiska aktören Interaktion vad som händer Kroppsprocess var det händer Symtom vad du känner Kontraindikation regel för en person Tillstånd stödobjekt

Tvärsöver, utanför ryggraden: Förklaring kopplas till Interaktion, Kroppsprocess, Symtom och Kontraindikation — den begripliga "varför". Källa underbygger varje enskild post, och kopplingen bär konfidensnivån. Dessa två ritas inte in i flödet ovan eftersom de rör allt.

Stödobjekten

Två objekt utöver de sju

Källa flaggade jag redan när vi skissade kärnan. Tillstånd dök upp när vi designade kontraindikationen — den behöver något att peka på. Inget av dem stod i den ursprungliga sjuan, och båda lyfts därför fram här, inte tyst inbakade.

S1Källa

Härkomsten bakom ett faktum. Kan inte vara ett textfält — en källa backar många poster och granskas separat.

typ
studie · riktlinje · myndighet · lärobok · översikt
titel
källans namn
referens
DOI, länk eller bibliografisk uppgift
år
publiceringsår
konfidens
låg · medel · hög — sätts på kopplingen mellan källa och post, inte på källan själv
S2Tillstånd

Katalogen över tillstånd en kontraindikation kan gälla. Katalog, inte profil — en persons faktiska diagnoser bor i användarmodellen.

namn
IBS · reflux · histaminintolerans · graviditet · diabetes typ 2 …
typ
diagnos · känslighet / intolerans · livsstadium
beskrivning
kort, neutral beskrivning
Spindeln

Relationerna, exakt

Diagrammet visar berättelsen. Här står alla kopplingar uttryckligen, så ingenting lämnas till tolkning.

Intaget innehåller Substans — många till många, via Innehåll, med mängd.
Substans är aktör i Interaktion — en substans, många interaktioner.
Interaktion påverkar Kroppsprocess eller Substans — exakt ett mål.
Interaktion kan orsaka Symtom — många till många.
Symtom yttrar sig genom Kroppsprocess — många till många.
Kontraindikation vilar på Interaktion, utlöses av Substans eller Intaget, och gäller Tillstånd eller Substans.
Förklaring förklarar Interaktion, Kroppsprocess, Symtom eller Kontraindikation — många till många.
Källa underbygger varje kunskapspost — många till många, kopplingen bär konfidensnivån.
Beslut

Vad som är låst — och vad som inte är det

Fem beslut, fattade

Mat och medicin är ett objekt — Intaget, med en kategori. De interagerar i kroppen, och just den interaktionen är poängen.

Interaktioner modelleras på substansnivå — intagsnivån härleds via Innehåll.

Interaktionens mål är flexibelt — kroppsprocess eller substans, exakt ett.

Interaktion och kontraindikation hålls isär — fysiologiskt faktum mot personlig regel.

Förklaring är ett eget objekt — källhänvisad, granskad, versionerad.

En öppen tråd — parkerad, inte glömd

Läkemedel ryms i Intaget, men kan behöva egna fält. Dosform, receptstatus och doseringsregler beter sig inte som en tomat. Beslutet att hålla mat och medicin i ett objekt står — men hur läkemedelskategorin ska bära sina särdrag är medvetet skjutet framåt, och tas upp innan kärnan fylls på djupet i Fas II.

Nästa steg

Kärnans ritning står. Det naturliga nästa steget är användarmodellen — profil, loggade måltider och loggade symtom — den som Detektiven och Coachen vilar på, och som pekar tillbaka in i den här katalogen. Därefter regelmotorns logik.