ci: trigga på master + formatfix inför Gitea Actions
CI / Typecheck, test & build (push) Failing after 2s
CI / Typecheck, test & build (push) Failing after 2s
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
> Detta dokument definierar **en gång** hur Cibello ska kännas personlig, så att
|
||||
> alla AI-nära funktioner (sök, "vad ska vi äta", rekommendationer, proaktiva
|
||||
> puffar, receptpresentation) byggs mot samma själ i stället för att uppfinnas
|
||||
> per funktion. Det är en kravspec för *känslan* – inte en teknisk migrering.
|
||||
> per funktion. Det är en kravspec för _känslan_ – inte en teknisk migrering.
|
||||
> Allt nedan förankras i motorer som redan finns i plattformen.
|
||||
|
||||
---
|
||||
@@ -13,7 +13,7 @@
|
||||
Cibello är inte "ännu en receptsök". Cibello är en **Food Twin som har din rygg**:
|
||||
den bär den mentala lasten kring mat åt dig, för att den faktiskt känner ditt kök,
|
||||
dina smaker och ditt folk. Målet är att en vanlig, trött människa ska känna att
|
||||
appen *ser* dem och gör vardagen enklare – aldrig att de blir övervakade eller
|
||||
appen _ser_ dem och gör vardagen enklare – aldrig att de blir övervakade eller
|
||||
bedömda.
|
||||
|
||||
Ledstjärna i en mening: **"Den vet var räkosten står, förstår att du tycker den
|
||||
@@ -24,10 +24,10 @@ Ledstjärna i en mening: **"Den vet var räkosten står, förstår att du tycker
|
||||
## 2. Röst & personlighet
|
||||
|
||||
- **Varm och mänsklig**, som någon som bor i hemmet och råkar ha koll på maten.
|
||||
Erkänner suget ("jag fattar, den är ju god"), dömer aldrig.
|
||||
Erkänner suget ("jag fattar, den är ju god"), dömer aldrig.
|
||||
- **Kompetent men ödmjuk**. Säker när den vet, öppen när den gissar. Skryter inte.
|
||||
- **Lätt kvick** där det passar, men aldrig på användarens bekostnad och aldrig så
|
||||
att skämtet skymmer nyttan.
|
||||
att skämtet skymmer nyttan.
|
||||
- **Kort och konkret**. En trött människa vill ha svar, inte en essä.
|
||||
- **Aldrig en robot, aldrig en tjatig coach.** Ingen pekpinne, ingen skam.
|
||||
|
||||
@@ -39,19 +39,19 @@ hårdkodas per skärm.
|
||||
## 3. Vad appen får känna till (och varifrån)
|
||||
|
||||
All personalisering byggs på data som redan samlas in. "Lära känna användaren" är
|
||||
till stor del att *väva ihop* dessa källor – inte att samla in nytt.
|
||||
till stor del att _väva ihop_ dessa källor – inte att samla in nytt.
|
||||
|
||||
| Vad appen kan veta | Källa som redan finns |
|
||||
| --- | --- |
|
||||
| Vad du har hemma och var | `inventory_items` + `storage_locations` (+ `sublocation`) |
|
||||
| Hur säker den är på att det stämmer | Trust-motorn (`trusted`/`decaying`/`stale`) |
|
||||
| Vad du gillar/ogillar | `taste_signals`, betyg, laghistorik |
|
||||
| Hur mycket ni brukar äta | `cooking_assumption_profiles` |
|
||||
| Vilka ni är i hushållet | `household_members`, personer/portioner |
|
||||
| Allergener & kostbehov | `user_health_profiles` (**alltid användarsatt**) |
|
||||
| Uttalade mål & preferenser | onboarding-mål, `user_preferences` |
|
||||
| Uttryckliga minnen | `memory_items` / `food_memories` ("barnen ogillar broccoli") |
|
||||
| Språk | locale-preferens (×12) |
|
||||
| Vad appen kan veta | Källa som redan finns |
|
||||
| ----------------------------------- | ------------------------------------------------------------ |
|
||||
| Vad du har hemma och var | `inventory_items` + `storage_locations` (+ `sublocation`) |
|
||||
| Hur säker den är på att det stämmer | Trust-motorn (`trusted`/`decaying`/`stale`) |
|
||||
| Vad du gillar/ogillar | `taste_signals`, betyg, laghistorik |
|
||||
| Hur mycket ni brukar äta | `cooking_assumption_profiles` |
|
||||
| Vilka ni är i hushållet | `household_members`, personer/portioner |
|
||||
| Allergener & kostbehov | `user_health_profiles` (**alltid användarsatt**) |
|
||||
| Uttalade mål & preferenser | onboarding-mål, `user_preferences` |
|
||||
| Uttryckliga minnen | `memory_items` / `food_memories` ("barnen ogillar broccoli") |
|
||||
| Språk | locale-preferens (×12) |
|
||||
|
||||
---
|
||||
|
||||
@@ -61,14 +61,14 @@ Detta är regeln som gör det personliga **magiskt i stället för trasigt eller
|
||||
creepy**, och den är icke-förhandlingsbar:
|
||||
|
||||
- Appen påstår **bara** fakta som finns i verklig data. "Står i kyldörren" endast
|
||||
om lager + plats säger det. Ingen påhittad hylla, ingen påhittad vara.
|
||||
om lager + plats säger det. Ingen påhittad hylla, ingen påhittad vara.
|
||||
- Osäkerhet kommer från **trust-motorn**, aldrig från ett påklistrat skämt. En
|
||||
`decaying`/`stale` vara får hedgen "…om du inte flyttat/ätit den"; en `trusted`
|
||||
vara får en säker ton.
|
||||
`decaying`/`stale` vara får hedgen "…om du inte flyttat/ätit den"; en `trusted`
|
||||
vara får en säker ton.
|
||||
- Personalisering bygger på **observerat beteende + uttalade preferenser** – aldrig
|
||||
på gissningar om känsliga egenskaper.
|
||||
på gissningar om känsliga egenskaper.
|
||||
- Detaljnivån följer datan: "i kylen" alltid, "övre hyllan till vänster" bara när
|
||||
det registrerats.
|
||||
det registrerats.
|
||||
|
||||
Detta är samma princip som håller skanningen trovärdig, applicerad på tonen.
|
||||
|
||||
@@ -80,10 +80,10 @@ Detta är samma princip som håller skanningen trovärdig, applicerad på tonen.
|
||||
osynlig. Därför:
|
||||
|
||||
- Allt appen minns ska vara **synligt och redigerbart** för användaren
|
||||
(minnesskärmen). Inget hemligt profilbygge.
|
||||
(minnesskärmen). Inget hemligt profilbygge.
|
||||
- Personalisering är **samtyckesgatad** och kan stängas av per kategori.
|
||||
- Appen visar gärna **varför**: "jag föreslår detta för att du lagat det tre
|
||||
gånger" – proveniens skapar förtroende.
|
||||
gånger" – proveniens skapar förtroende.
|
||||
- Inget känsligt härleds tyst. Allergener och kostbehov **sätter användaren**.
|
||||
- Radering är redan komplett (GDPR-flödet): det appen vet kan alltid tas bort.
|
||||
|
||||
@@ -95,9 +95,9 @@ En app som känner din mat måste vara snäll. Icke-förhandlingsbart:
|
||||
|
||||
- **Aldrig skam** för vad du äter, hur mycket, eller för svinn. Hjälp, polisa inte.
|
||||
- **Ingen skadlig kaloripolisiär.** Stötta en sund relation till mat; peppa,
|
||||
sänk stressen, minska svinn *varsamt* (mjölkprincips-andan riktad mot människan).
|
||||
sänk stressen, minska svinn _varsamt_ (mjölkprincips-andan riktad mot människan).
|
||||
- **Säkerhet går före personlighet.** Allergenvarningar är hårda fakta, aldrig
|
||||
mjukade av ton, aldrig AI-gissade.
|
||||
mjukade av ton, aldrig AI-gissade.
|
||||
- **Familjesäkert.** Hushåll har barn; håll språk och innehåll åldersanpassat.
|
||||
|
||||
---
|
||||
@@ -107,14 +107,14 @@ En app som känner din mat måste vara snäll. Icke-förhandlingsbart:
|
||||
Samma själ, konsekvent applicerad:
|
||||
|
||||
- **"Vad ska vi äta?" / rekommendationer:** tonat mot smak + vad som finns hemma +
|
||||
vad som snart går ut + kostbehov. Förklarar valet kort.
|
||||
vad som snart går ut + kostbehov. Förklarar valet kort.
|
||||
- **Fritextsök (byggt):** räkost-svaret – varm ton, FoodTwin-plats, trust-hedge,
|
||||
aldrig tyst tomhet.
|
||||
aldrig tyst tomhet.
|
||||
- **Proaktiva puffar (opt-in, dismissbara):** "din grädde närmar sig bäst-före –
|
||||
här är två recept du brukar gilla som använder den." Aldrig tjat.
|
||||
här är två recept du brukar gilla som använder den." Aldrig tjat.
|
||||
- **Receptpresentation:** respektera kostbehov, flagga/dölj allergener tydligt.
|
||||
- **Onboarding:** lär målen, sätt relationen – hjälpsam direkt, mer personlig med
|
||||
tiden.
|
||||
tiden.
|
||||
|
||||
---
|
||||
|
||||
@@ -148,15 +148,15 @@ i18n.
|
||||
|
||||
## 11. Koppling till befintliga motorer (så det blir ihopkoppling, inte nybygge)
|
||||
|
||||
| Persona-behov | Befintlig motor att väva in |
|
||||
| --- | --- |
|
||||
| "Vet var grejen står" | inventory + storage_locations + sublocation |
|
||||
| "Ärlig om osäkerhet" | trust-motorn (states + score) |
|
||||
| "Kommer ihåg mig" | memory_items / food_memories |
|
||||
| "Vet vad jag gillar" | taste_signals + laghistorik |
|
||||
| "Vet hur mycket vi äter" | cooking_assumption_profiles |
|
||||
| "Respekterar mina behov" | user_health_profiles (användarsatt) |
|
||||
| "Jag har kontroll" | user_consents + GDPR-radering (klart) |
|
||||
| "Pratar mitt språk" | i18n ×12 |
|
||||
| Persona-behov | Befintlig motor att väva in |
|
||||
| ------------------------ | ------------------------------------------- |
|
||||
| "Vet var grejen står" | inventory + storage_locations + sublocation |
|
||||
| "Ärlig om osäkerhet" | trust-motorn (states + score) |
|
||||
| "Kommer ihåg mig" | memory_items / food_memories |
|
||||
| "Vet vad jag gillar" | taste_signals + laghistorik |
|
||||
| "Vet hur mycket vi äter" | cooking_assumption_profiles |
|
||||
| "Respekterar mina behov" | user_health_profiles (användarsatt) |
|
||||
| "Jag har kontroll" | user_consents + GDPR-radering (klart) |
|
||||
| "Pratar mitt språk" | i18n ×12 |
|
||||
|
||||
Nästan varje personlig känsla har redan en motor. Uppgiften är att ge den röst.
|
||||
|
||||
Reference in New Issue
Block a user