diff --git a/apps/mobile/src/locales/da/common.json b/apps/mobile/src/locales/da/common.json index 7447c56..6d456d4 100644 --- a/apps/mobile/src/locales/da/common.json +++ b/apps/mobile/src/locales/da/common.json @@ -210,7 +210,7 @@ "paywall.choose": "Vælg", "paywall.fairUse": "Fair use-kvote for AI-scanninger inkluderet.", "paywall.family": "Family · op til 6 personer", - "paywall.freeNote": "Gratis: 10 AI-scanninger/md., manuelt lager, gemte opskrifter og enkel registrering.", + "paywall.freeNote": "Gratis: 5 AI-scanninger/md., manuelt lager, gemte opskrifter og enkel registrering.", "paywall.household": "Household · op til 3 personer", "paywall.large": "Large Household · op til 12 personer", "paywall.perMonth": "{price}/md.", diff --git a/apps/mobile/src/locales/de/common.json b/apps/mobile/src/locales/de/common.json index d068846..5cb163b 100644 --- a/apps/mobile/src/locales/de/common.json +++ b/apps/mobile/src/locales/de/common.json @@ -210,7 +210,7 @@ "paywall.choose": "Wählen", "paywall.fairUse": "Fair-Use-Kontingent für KI-Scans inklusive.", "paywall.family": "Family · bis zu 6 Personen", - "paywall.freeNote": "Gratis: 10 KI-Scans/Monat, manueller Vorrat, gespeicherte Rezepte und einfaches Tracking.", + "paywall.freeNote": "Gratis: 5 KI-Scans/Monat, manueller Vorrat, gespeicherte Rezepte und einfaches Tracking.", "paywall.household": "Household · bis zu 3 Personen", "paywall.large": "Large Household · bis zu 12 Personen", "paywall.perMonth": "{price}/Monat", diff --git a/apps/mobile/src/locales/en/common.json b/apps/mobile/src/locales/en/common.json index da51fe3..fa75ab9 100644 --- a/apps/mobile/src/locales/en/common.json +++ b/apps/mobile/src/locales/en/common.json @@ -210,7 +210,7 @@ "paywall.choose": "Choose", "paywall.fairUse": "Fair-use quota for AI scans included.", "paywall.family": "Family · up to 6 people", - "paywall.freeNote": "Free: 10 AI scans/month, manual inventory, saved recipes and simple logging.", + "paywall.freeNote": "Free: 5 AI scans/month, manual inventory, saved recipes and simple logging.", "paywall.household": "Household · up to 3 people", "paywall.large": "Large Household · up to 12 people", "paywall.perMonth": "{price}/month", diff --git a/apps/mobile/src/locales/es/common.json b/apps/mobile/src/locales/es/common.json index f184886..5ce5759 100644 --- a/apps/mobile/src/locales/es/common.json +++ b/apps/mobile/src/locales/es/common.json @@ -210,7 +210,7 @@ "paywall.choose": "Elegir", "paywall.fairUse": "Cuota de uso razonable de escaneos de IA incluida.", "paywall.family": "Family · hasta 6 personas", - "paywall.freeNote": "Gratis: 10 escaneos de IA/mes, inventario manual, recetas guardadas y registro sencillo.", + "paywall.freeNote": "Gratis: 5 escaneos de IA/mes, inventario manual, recetas guardadas y registro sencillo.", "paywall.household": "Household · hasta 3 personas", "paywall.large": "Large Household · hasta 12 personas", "paywall.perMonth": "{price}/mes", diff --git a/apps/mobile/src/locales/fi/common.json b/apps/mobile/src/locales/fi/common.json index a5cfdd9..15421cc 100644 --- a/apps/mobile/src/locales/fi/common.json +++ b/apps/mobile/src/locales/fi/common.json @@ -210,7 +210,7 @@ "paywall.choose": "Valitse", "paywall.fairUse": "Kohtuukäytön AI-skannauskiintiö sisältyy.", "paywall.family": "Family · enintään 6 henkilöä", - "paywall.freeNote": "Ilmainen: 10 AI-skannausta/kk, manuaalinen varasto, tallennetut reseptit ja helppo kirjaus.", + "paywall.freeNote": "Ilmainen: 5 AI-skannausta/kk, manuaalinen varasto, tallennetut reseptit ja helppo kirjaus.", "paywall.household": "Household · enintään 3 henkilöä", "paywall.large": "Large Household · enintään 12 henkilöä", "paywall.perMonth": "{price}/kk", diff --git a/apps/mobile/src/locales/fr/common.json b/apps/mobile/src/locales/fr/common.json index d95fea3..bf547e5 100644 --- a/apps/mobile/src/locales/fr/common.json +++ b/apps/mobile/src/locales/fr/common.json @@ -210,7 +210,7 @@ "paywall.choose": "Choisir", "paywall.fairUse": "Quota d'usage raisonnable de scans IA inclus.", "paywall.family": "Family · jusqu'à 6 personnes", - "paywall.freeNote": "Gratuit : 10 scans IA/mois, stock manuel, recettes enregistrées et suivi simple.", + "paywall.freeNote": "Gratuit : 5 scans IA/mois, stock manuel, recettes enregistrées et suivi simple.", "paywall.household": "Household · jusqu'à 3 personnes", "paywall.large": "Large Household · jusqu'à 12 personnes", "paywall.perMonth": "{price}/mois", diff --git a/apps/mobile/src/locales/it/common.json b/apps/mobile/src/locales/it/common.json index 77a32e9..fb01c03 100644 --- a/apps/mobile/src/locales/it/common.json +++ b/apps/mobile/src/locales/it/common.json @@ -210,7 +210,7 @@ "paywall.choose": "Scegli", "paywall.fairUse": "Quota fair use di scansioni IA inclusa.", "paywall.family": "Family · fino a 6 persone", - "paywall.freeNote": "Gratis: 10 scansioni IA/mese, dispensa manuale, ricette salvate e registrazione semplice.", + "paywall.freeNote": "Gratis: 5 scansioni IA/mese, dispensa manuale, ricette salvate e registrazione semplice.", "paywall.household": "Household · fino a 3 persone", "paywall.large": "Large Household · fino a 12 persone", "paywall.perMonth": "{price}/mese", diff --git a/apps/mobile/src/locales/nb/common.json b/apps/mobile/src/locales/nb/common.json index 3328e1e..65e3fa5 100644 --- a/apps/mobile/src/locales/nb/common.json +++ b/apps/mobile/src/locales/nb/common.json @@ -210,7 +210,7 @@ "paywall.choose": "Velg", "paywall.fairUse": "Fair use-kvote for AI-skanninger inkludert.", "paywall.family": "Family · opptil 6 personer", - "paywall.freeNote": "Gratis: 10 AI-skanninger/mnd., manuelt lager, lagrede oppskrifter og enkel loggføring.", + "paywall.freeNote": "Gratis: 5 AI-skanninger/mnd., manuelt lager, lagrede oppskrifter og enkel loggføring.", "paywall.household": "Household · opptil 3 personer", "paywall.large": "Large Household · opptil 12 personer", "paywall.perMonth": "{price}/mnd.", diff --git a/apps/mobile/src/locales/nl/common.json b/apps/mobile/src/locales/nl/common.json index e0a94e3..5d487c0 100644 --- a/apps/mobile/src/locales/nl/common.json +++ b/apps/mobile/src/locales/nl/common.json @@ -210,7 +210,7 @@ "paywall.choose": "Kies", "paywall.fairUse": "Fair-use quotum voor AI-scans inbegrepen.", "paywall.family": "Family · tot 6 personen", - "paywall.freeNote": "Gratis: 10 AI-scans/maand, handmatige voorraad, opgeslagen recepten en eenvoudig registreren.", + "paywall.freeNote": "Gratis: 5 AI-scans/maand, handmatige voorraad, opgeslagen recepten en eenvoudig registreren.", "paywall.household": "Household · tot 3 personen", "paywall.large": "Large Household · tot 12 personen", "paywall.perMonth": "{price}/maand", diff --git a/apps/mobile/src/locales/pl/common.json b/apps/mobile/src/locales/pl/common.json index 1209be8..3c6d4f6 100644 --- a/apps/mobile/src/locales/pl/common.json +++ b/apps/mobile/src/locales/pl/common.json @@ -216,7 +216,7 @@ "paywall.choose": "Wybierz", "paywall.fairUse": "Limit fair use skanów AI w cenie.", "paywall.family": "Family · do 6 osób", - "paywall.freeNote": "Za darmo: 10 skanów AI/mies., ręczna spiżarnia, zapisane przepisy i proste rejestrowanie.", + "paywall.freeNote": "Za darmo: 5 skanów AI/mies., ręczna spiżarnia, zapisane przepisy i proste rejestrowanie.", "paywall.household": "Household · do 3 osób", "paywall.large": "Large Household · do 12 osób", "paywall.perMonth": "{price}/mies.", diff --git a/apps/mobile/src/locales/pt/common.json b/apps/mobile/src/locales/pt/common.json index d758bb8..1510b35 100644 --- a/apps/mobile/src/locales/pt/common.json +++ b/apps/mobile/src/locales/pt/common.json @@ -210,7 +210,7 @@ "paywall.choose": "Escolher", "paywall.fairUse": "Quota de utilização justa de análises de IA incluída.", "paywall.family": "Family · até 6 pessoas", - "paywall.freeNote": "Grátis: 10 análises de IA/mês, despensa manual, receitas guardadas e registo simples.", + "paywall.freeNote": "Grátis: 5 análises de IA/mês, despensa manual, receitas guardadas e registo simples.", "paywall.household": "Household · até 3 pessoas", "paywall.large": "Large Household · até 12 pessoas", "paywall.perMonth": "{price}/mês", diff --git a/apps/mobile/src/locales/sv/common.json b/apps/mobile/src/locales/sv/common.json index 5cb3dd4..52b4831 100644 --- a/apps/mobile/src/locales/sv/common.json +++ b/apps/mobile/src/locales/sv/common.json @@ -218,7 +218,7 @@ "paywall.choose": "Välj", "paywall.fairUse": "Fair use-kvot för AI-skanningar ingår.", "paywall.family": "Family · upp till 6 personer", - "paywall.freeNote": "Gratis: 10 AI-skanningar/mån, manuellt lager, sparade recept och enkel loggning.", + "paywall.freeNote": "Gratis: 5 AI-skanningar/mån, manuellt lager, sparade recept och enkel loggning.", "paywall.household": "Household · upp till 3 personer", "paywall.large": "Large Household · upp till 12 personer", "paywall.perMonth": "{price}/mån", diff --git a/docs/01-executive-summary.md b/docs/01-executive-summary.md index c07cc2f..19dca3a 100644 --- a/docs/01-executive-summary.md +++ b/docs/01-executive-summary.md @@ -47,7 +47,7 @@ och tolkar men hittar aldrig på – vilket gör produkten trovärdig nog för a Prenumeration via App Store/Google Play: **Household 79 kr**, **Family 129 kr**, **Large Household 169 kr** per månad, 14 dagars fri provperiod utan kort, användbar -gratisnivå (10 AI-skanningar/mån) som behåller användare i tratten. +gratisnivå (5 AI-skanningar/mån) som behåller användare i tratten. Ett genomsnittligt svenskt barnhushåll slänger mat för tusenlappar per år och lägger 10 000+ kr/månad på mat – en app som synligt sänker svinnet och svarar på vardagens diff --git a/docs/02-kritisk-bedomning.md b/docs/02-kritisk-bedomning.md index 3536397..d0f4594 100644 --- a/docs/02-kritisk-bedomning.md +++ b/docs/02-kritisk-bedomning.md @@ -49,7 +49,7 @@ systemet är medvetet flaggat AV vid lansering – det är rätt beslut och ska värden: tid (planering + "vad ska vi äta?" löst), pengar (svinnvärde i kronor visas i appen – "du har räddat mat för 214 kr i månaden") och hälsa (mål utan loggningsjobb). Kritisk sanning: gratisnivån måste vara bra nog att bygga vanan men inte så bra att -uppgraderingen känns onödig – 10 AI-skanningar/mån + manuellt lager + full receptbank är +uppgraderingen känns onödig – 5 AI-skanningar/mån + manuellt lager + full receptbank är den balansen. Priset testas i beta med prisexperiment innan låsning. ## Retention diff --git a/docs/10-ai-kostnad.md b/docs/10-ai-kostnad.md index 6204581..bc7d55a 100644 --- a/docs/10-ai-kostnad.md +++ b/docs/10-ai-kostnad.md @@ -39,12 +39,12 @@ växelkurs 10,50 SEK/USD (A4). | Profil | Antagande om användning | AI-kostnad/mån | | --------------------------- | ----------------------------------------- | ----------------------------------------------- | -| Gratis | 10 skanningar (kvottak) | $0,10 ≈ 1,1 kr | +| Gratis | 5 skanningar (kvottak) | $0,10 ≈ 1,1 kr | | Household (aktivt) | 60 skanningar + 4 planer + nattligt minne | $0,76 ≈ 8 kr | | Family (aktivt) | 100 skanningar + 4 planer + minne | $1,17 ≈ 12 kr | | Family (maxar fair use 600) | värsta fallet | $6,66 ≈ 70 kr — fortfarande under 129 kr-priset | -Fair use-taken (100/200/400, gratis 10) gör att ingen enskild användare kan bli +Fair use-taken (100/200/400, gratis 5) gör att ingen enskild användare kan bli förlustaffär ens i värsta fallet. ## Total kostnad per skala diff --git a/docs/13-subscriptions.md b/docs/13-subscriptions.md index c6c2468..6aa783b 100644 --- a/docs/13-subscriptions.md +++ b/docs/13-subscriptions.md @@ -1,7 +1,7 @@ # Del 13 – Subscriptions Planer (spec §45): Household 79 kr (3 pers), Family 129 kr (6), Large Household 169 kr (12). -Fair use-kvoter för AI: 100/200/400 skanningar/mån. Gratis: 10. Trial: 14 dagar full +Fair use-kvoter för AI: 100/200/400 skanningar/mån. Gratis: 5. Trial: 14 dagar full tillgång (Family-nivå) utan kort, startar vid registrering (spec §46). ## Arkitekturprincip diff --git a/docs/22-butiksmetadata.md b/docs/22-butiksmetadata.md index e14a317..8ee786d 100644 --- a/docs/22-butiksmetadata.md +++ b/docs/22-butiksmetadata.md @@ -26,7 +26,7 @@ utifrån det ni faktiskt har hemma, vad som bör användas snart och vad ni gill • Kalorier och näring beräknas alltid deterministiskt – AI:n gissar aldrig siffror • Full insyn: "Vad {NAMN} vet om mig" går att rätta, pausa och radera -Gratis: 10 AI-skanningar/månad, manuellt lager, sparade recept och enkel loggning. +Gratis: 5 AI-skanningar/månad, manuellt lager, sparade recept och enkel loggning. Premium (14 dagar gratis, inget kort): obegränsat lager, veckoplan, delning och fler AI-skanningar. @@ -57,7 +57,7 @@ what you like. • Calories and nutrition are always computed deterministically – AI never invents numbers • Full transparency: "What {NAME} knows about me" can be corrected, paused and deleted -Free: 10 AI scans/month, manual inventory, saved recipes and simple logging. +Free: 5 AI scans/month, manual inventory, saved recipes and simple logging. Premium (14-day free trial, no card): unlimited inventory, week planning, sharing and more AI scans. diff --git a/packages/shared-types/src/constants.ts b/packages/shared-types/src/constants.ts index dcbce9b..12358e2 100644 --- a/packages/shared-types/src/constants.ts +++ b/packages/shared-types/src/constants.ts @@ -34,7 +34,7 @@ export const PLAN_DEFINITIONS: Record = { priceMinorPerMonth: 0, currency: "SEK", maxHouseholdMembers: 1, - aiScansPerMonth: 10, + aiScansPerMonth: 5, weekPlanning: false, advancedNutrition: false, communityPublish: false, diff --git a/packages/subscriptions/test/subscriptions.test.ts b/packages/subscriptions/test/subscriptions.test.ts index 1ba91e1..7f56f7e 100644 --- a/packages/subscriptions/test/subscriptions.test.ts +++ b/packages/subscriptions/test/subscriptions.test.ts @@ -59,12 +59,12 @@ describe("entitlements (spec §45–47)", () => { expect(ent.status).toBe("trial"); expect(ent.weekPlanning).toBe(true); }); - it("free tier: 10 skanningar och användbar grund (spec §46)", () => { - const ent = computeEntitlements(null, null, { aiScansUsedThisMonth: 9 }, NOW); + it("free tier: 5 skanningar och användbar grund (spec §46)", () => { + const ent = computeEntitlements(null, null, { aiScansUsedThisMonth: 4 }, NOW); expect(ent.plan).toBe("free"); - expect(ent.aiScansPerMonth).toBe(10); + expect(ent.aiScansPerMonth).toBe(5); expect(canUseAiScan(ent)).toBe(true); - expect(canUseAiScan({ ...ent, aiScansUsedThisMonth: 10 })).toBe(false); + expect(canUseAiScan({ ...ent, aiScansUsedThisMonth: 5 })).toBe(false); }); it("mappar productId → plan (härlett ur brand-konfig, aldrig hårdkodat)", () => { expect(resolvePlanFromProductId(PLAN_DEFINITIONS.family.appleProductId)).toBe("family");