Methodology — how Smaklig works
Smaklig uses Google Gemini to generate weekly menus based on your TDEE, allergies and this week's offers in your store. Every recipe is checked against a fixed format and against your allergens before it is shown; the calories and macros in a recipe are estimates. 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 and weekly menus on Smaklig are generated by AI (Google Gemini). Content is artificially generated per EU AI Act Article 50 (applicable from 2 August 2026). Calories and macros in AI-generated recipes are estimates the AI calculates from the ingredients. When you log food, the nutrition values come from the Livsmedelsverket food database when the food is listed there, from the product's own label when you scan a barcode, and — when you photograph the meal — from Livsmedelsverket for the parts that can be matched, otherwise from an AI estimate. When you log a recipe from your weekly menu, the recipe's own nutrition values are used — for AI-generated recipes, that means the estimates. When you photograph a recipe with Smakblick in the app, the nutrition values are calculated ingredient by ingredient: each ingredient is matched against the Livsmedelsverket food database and, when it isn't listed there, against USDA FoodData Central, and you confirm or change every match before the nutrition is totalled. If an ingredient has no match in either database, or its amount can't be converted to grams, no total is shown — no number rather than an incomplete one. Optional ingredients and ones you leave out are not counted. 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. In the product, TDEE uses a component model: BMR × 1.15 as a baseline for resting expenditure and non-ambulatory daily movement, plus a net contribution from steps and an average daily contribution from gym sessions. The classic 1.2–1.9 activity factor is used only by the simplified public calculator when step and training data are unavailable.
BMR (men) = 10×weight(kg) + 6.25×height(cm) − 5×age + 5 BMR (women) = 10×weight(kg) + 6.25×height(cm) − 5×age − 161 Product TDEE = round(BMR × 1.15 + step kcal + gym kcal/day) Step kcal = steps × 0.04 × weight(kg) / 100 Gym kcal/day = sessions/week × kcal/session / 7
If personal step data are unavailable, the activity-level default is used: 3,000, 5,000, 7,000, 9,000 or 12,000 steps per day. The same levels correspond to 0, 1.5, 3.5, 5 or 6 gym sessions per week. Traditional sessions are estimated at 300 kcal and circuit/Hyrox-style sessions at 450 kcal; these are product estimates informed by research on the energy cost of resistance and high-intensity exercise, not individual measurements.
Calorie and macro targets
For weight loss, the selected weekly rate is converted to a daily deficit using 6,200 kcal per kg of body-weight change, and the deficit is capped at 1,000 kcal per day. Default rates are 0.3%, 0.5% or 0.8% of body weight per week depending on the goal. Hall (2007) explains why energy requirements per unit of weight vary; 6,200 is the product's fixed modelling value, not a promise of actual weight-loss rate.
Calorie target = max(safety floor, TDEE − daily deficit)
Safety floor = max(1,200 women / 1,500 men and other,
round(0.9 × BMR))
Protein = 2.0 / 1.8 / 1.6 g × goal weight(kg)
Fat = max(50 g, 0.9 / 0.7 / 0.8 g × current weight(kg))
Carbohydrate = max(50 g, remaining kcal / 4)The order is weight loss / muscle gain / other goals. Protein and carbohydrate use 4 kcal/g and fat uses 9 kcal/g. Morton RW et al. (2018, with Helms as a co-author) supports approximately 1.6 g/kg for resistance-training adaptation; the exact goal-specific levels, fat allocation, minimums and BMR floor are Smaklig's safety and planning choices.
How recipe generation works
- Profile input: your TDEE, macro split, allergens, taste preferences, selected store.
- Offers: this week's offers in your store are fetched on the server from each chain's own sources — ICA, Willys, Hemköp, City Gross and Costco via their APIs, Coop via its API with the PDF as a fallback, and Lidl via Lidl's API and flyer. Offers are refreshed each campaign week: on Monday for most chains and on Tuesday for Coop.
- Gemini prompt: structured system prompt with structured output (JSON schema).
- Zod validation: schema check on every recipe (title, ingredients, calories, macros).
- Nutrition values: the AI calculates calories and macros per recipe from the ingredients. They are estimates. For every weekly menu that is served, an automatic check compares the calories with the macros (Atwater) and logs the deviation; it does not stop the recipe.
- Allergy check: every recipe is checked against your declared allergens, and if one is detected you see a clear warning next to the recipe.
- Render: recipe + campaign prices + tap-to-check shopping list.
Allergy check — how we warn you
Your allergies are included when recipes are created, so suggestions avoid them. Every recipe is then checked against your allergy list on the server, and if an allergen is detected you see a clear warning next to the recipe. The check is a safeguard, not a guarantee — Smaklig can't guarantee that a recipe is free from allergens, so always read ingredients and packaging yourself. We check the 14 allergens that EU food labelling requires: gluten, milk (lactose), eggs, tree nuts, peanuts, crustaceans, molluscs, fish, soy, sesame, mustard, celery, lupin, sulphites.
Sources and nutrition data
- Mifflin MD et al. (1990) — BMR equation
- Morton RW et al. (2018) — protein and resistance-training adaptation
- Hall KD (2007) — energy deficit per unit of weight change
- Reis VM et al. (2011) — energy cost of resistance exercise
- Falcone PH et al. (2015) — energy expenditure in high-intensity combined exercise
- Livsmedelsverket — official Swedish food database, dietary recommendations
- USDA FoodData Central — US food database, the fallback when an ingredient in a recipe you photograph with Smakblick isn't in the Livsmedelsverket database
- 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. A dietitian is reviewing all health articles during week 40 of 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 make mistakes — calories and macros in AI recipes are estimates, and 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
The primary database is hosted by Neon in Frankfurt. Google Gemini and Vercel may also process data outside the EU/EEA under contractual transfer safeguards. You can export or delete your data via /settings. Read the privacy policy.