# Session 2026-05-06: User-scoped AI, admin-toggles och premium

Denna session:
- Införde user-scoped AI-förslag för ingrediens- och kategorimatchning (premium-funktion).
- Admin kan nu slå på/av AI per användare via backend och UI.
- Flutter och backend respekterar premium-flagga och AI-tillgång i alla flöden.
- Lessons learned: Fallback-first AI, tydlig separation av analys, och ownerId/userId-filter i all logik ger robustare system.

Se även:
- [TEKNISK_BESKRIVNING.md](../../TEKNISK_BESKRIVNING.md) för teknisk genomgång.
- [RECIPE_IMPORT_REFACTOR_PLAN.md](../../RECIPE_IMPORT_REFACTOR_PLAN.md) för refaktorplan.

# AI-funktioner i Recipe-App: Premium-funktioner och rekommenderade modeller

> Se [README.md](README.md) för funktionsöversikt, [TEKNISK_BESKRIVNING.md](TEKNISK_BESKRIVNING.md) för teknisk arkitektur och [NEXT_STEPS.md](NEXT_STEPS.md) för prioriterade nästa steg.

## Dokumentstatus (2026-05-03)

### Målgrupp
Detta arkivdokument är för teknisk planering och historik kring AI-strategi.

### Komplettering från senaste sessionerna
- AI-förslag för kategorier används tillsammans med regelbaserad parser, inte som ensam källa.
- Contradiction guards och domänregler (bl.a. bröd/rostbröd) prioriteras för att reducera felklassning.
- Klientens UX separerar produktförslag från AI-kategoriförslag för tydligare semantik i granskningen.

Detta dokument beskriver de AI-funktioner som implementeras eller planeras som **premium-funktioner** i **recipe-app**. Varje funktion är kopplad till en rekommenderad Mistral-modell, med fokus på att använda de enklaste och mest kostnadseffektiva alternativen.

---

## Översikt över AI-funktioner

| Funktion | Beskrivning | Modell | Status |
|---|---|---|---|
| **Automatisk kategorisering** | AI kategoriserar produkter baserat på namn mot systemets kategoriträd. Admins kör bulk-kategorisering; premium-användare får förslag per produkt. | `mistral-small-2603` | ✅ Klart |
| **Kvittoimport — kategorisuggestion** | Ej matchade kvittorader får ett AI-kategoriförslag för premium-användare, visas som ledtråd i gränssnittet. | `mistral-small-2603` | ✅ Klart |
| **Receptförslag utifrån hemmalager** | AI analyserar användarens inventory och föreslår recept baserat på tillgängliga ingredienser. | `mistral-small-2603` | ❌ Planerad |
| **Veckoplanering med AI** | AI genererar en veckoplan baserat på inventory, recept och användarpreferenser. | `mistral-small-2603` | ❌ Planerad |
| **Smart inköpslista** | AI skapar en inköpslista baserat på saknade ingredienser och historisk förbrukning. | `mistral-small-2603` | ❌ Planerad |
| **"Vad ska jag laga idag?"** | AI ger snabba receptförslag baserat på vad användaren har hemma. | `mistral-small-2603` | ❌ Planerad |
| **Enhetskonvertering** | AI hjälper till att konvertera enheter (t.ex. gram till msk) och hanterar osäkerheter. | `mistral-small-2603` | ❌ Planerad |
| **AI-assisterad lageravräkning** | AI hjälper till att dra av rätt mängder från inventory när ett recept lagas. | `mistral-small-2603` | ❌ Planerad |
| **Personliga matlagningsråd** | AI ger personliga tips baserat på användarens matlagningshistorik och inventory. | `mistral-small-2603` | ❌ Planerad |
| **AI-assisterad import av PDF/länkar** | AI extraherar recept och prisdata från PDF-filer och länkar för att underlätta importen. | `mistral-small-2603` | ❌ Planerad |
| **Kostnadseffektiv inköpslista** | AI skapar en kostnadseffektiv inköpslista baserat på inventory och aktuella butikspriser. | `mistral-small-2603` | ❌ Planerad |

---

## Bakgrund och motivering

### Varför dessa funktioner?
- **Receptförslag utifrån hemmalager** och **veckoplanering** är centrala för att hjälpa användare att minska matsvinn och spara tid.
- **Smart inköpslista** och **kostnadseffektiv inköpslista** är viktiga för att optimera användarens matbudget.
- **AI-assisterad import av PDF/länkar** underlättar för användare att lägga in recept och prisdata utan manuellt arbete.

### Varför dessa modeller?
- **`mistral-small-2603`** används för de flesta funktioner eftersom den är kostnadseffektiv och klarar av strukturerad data och logik.
- **`mistral-tiny-2603`** används för enklare, snabbare uppgifter som **"Vad ska jag laga idag?"** och **personliga matlagningsråd**.
- **`labs-leanstral-2603`** används för **enhetskonvertering** eftersom den är optimerad för kod och logik.

---

## Tekniska överväganden

### Integration med befintlig arkitektur
- **Backend**: AI-funktionerna kommer att implementeras som separata tjänster i NestJS, med egna endpoints för varje funktion.
- **Frontend**: Resultaten från AI-funktionerna kommer att visas i Next.js-gränssnittet, med tydlig feedback till användaren.
- **Databas**: Resultat och användardata lagras i MariaDB via Prisma ORM.

### Säkerhet och validering
- **Validering**: AI-output valideras alltid mot strukturerade scheman (t.ex. med Zod) för att säkerställa datakvalitet.
- **Säkerhet**: Känslig data krypteras enligt den hybridlösning med PGP och AES som vi tidigare diskuterat.

---

## Nästa steg

1. **Receptförslag** — "Vad ska jag laga idag?" är nästa naturliga premium-funktion; bygger direkt på inventory och recept som redan finns i systemet.
2. **Veckoplanering med AI** — kräver att receptförslag fungerar; planera mot kampanjpriser kräver extern datakälla.
3. **Validering av AI-output** — säkerställ att AI-svar alltid valideras mot strukturerade scheman (t.ex. Zod) för datakvalitet.

---


