Hoppa till innehåll
Smaklig

Methodology — how Smaklig works

Smaklig uses Claude Haiku (Anthropic) to generate weekly menus based on your TDEE, allergies and this week's ICA campaigns. Every recipe is validated server-side against nutrition goals (Mifflin-St Jeor) and allergens before rendering. This page explains formulas, process, sources and limitations. AI use is disclosed per EU AI Act Article 50.

AI transparency (EU AI Act Art. 50)

Important AI disclosure

Recipes, weekly menus and nutrition analyses on Smaklig are generated by AI (Claude Haiku, Anthropic). Content is artificially generated per EU AI Act Article 50 (applicable from 2 August 2026). Ingredients, calories and nutrition data are validated against official Swedish food data (Livsmedelsverket) before publishing. AI can make mistakes — always consult a doctor or dietitian for medical conditions, pregnancy, diabetes or eating disorders.

How we calculate energy needs (TDEE)

Smaklig uses the Mifflin-St Jeor formula (1990) for BMR calculation — more accurate than Harris-Benedict for modern populations. BMR is multiplied by an activity factor (1.2–1.9) to get TDEE.

BMR (men)     = 10×weight(kg) + 6.25×height(cm) − 5×age + 5
BMR (women)   = 10×weight(kg) + 6.25×height(cm) − 5×age − 161
TDEE          = BMR × activity factor (1.2–1.9)
Protein       = 1.6–2.2g × goal weight(kg)  [Morton et al., 2018]
Calorie floor = 1,200 kcal (women) / 1,400 kcal (men)

Example: 30-year-old woman, 70 kg, 170 cm, moderately active → BMR 1,459 × 1.55 = TDEE ~2,260 kcal. With a 500 kcal deficit: target 1,760 kcal/day → 0.5 kg loss/week.

How recipe generation works

  1. Profile input: your TDEE, macro split, allergens, taste preferences, selected store.
  2. Campaign fetch: deals for your store are fetched server-side via brand-specific dispatcher (ICA handlaprivatkund API, Coop PDF-parse, Lidl + Hemköp Playwright DOM, City Gross Loop54 API). Cache TTL is per-chain: ICA/Willys/Hemköp/City Gross/Lidl Monday 00:00, Coop Tuesday.
  3. Claude Haiku prompt: structured system prompt with tool_use for JSON output.
  4. Zod validation: schema check on every recipe (title, ingredients, calories, macros).
  5. Nutrition check: recipe must match your goals ±5% for calories, ±10% for macros.
  6. Allergy block: recipes with any of your declared allergens are STOPPED before render — not just warned.
  7. Render: recipe + campaign prices + tap-to-check shopping list.

Allergy check — why we block

Many apps warn about allergens. Smaklig blocks them. Every generated recipe is validated against your allergy list on the server (not the client) — if there's a match, a new recipe is generated. Users never see a recipe containing something they can't eat. We check 14 common allergens: gluten, lactose, dairy, eggs, nuts, peanuts, shellfish, fish, soy, sesame, mustard, celery, lupin, sulfur dioxide.

Sources and nutrition data

  • Livsmedelsverket — official Swedish food database, dietary recommendations
  • Nordic Nutrition Recommendations 2023 (NNR 2023)
  • ICA campaign API — weekly campaigns per store
  • PubMed — peer-reviewed sources for health claims (DOI-linked)
  • Naturvårdsverket — food waste statistics

Editorial policy

  • Every health article is reviewed by the founder before publishing (dietitian consultation when advisor board is appointed Q3 2026).
  • Articles older than 6 months undergo research review.
  • Articles older than 12 months get a full rewrite or archive flag.
  • Medical disclaimer mandatory on all YMYL articles (weight loss, diet, GLP-1).
  • Report errors: support@smaklig.app

Limitations and uncertainty

  • Biological variation — TDEE is ±10% estimate. Individual responses may deviate.
  • AI can hallucinate — we validate nutrition data but users should judge recipes for taste and texture.
  • ICA prices are campaign-week-based, not real-time. Mid-week changes may not always be captured.
  • GLP-1 content in our articles is general information, not medical advice.

Your data — privacy

All user data is stored within the EU (Neon PostgreSQL in Frankfurt), GDPR-compliant. No AI training data is shared with third parties. You can export or delete your data via /settings. Read the privacy policy.