## Why During onboarding we prompt for AI suggestions only because it's a **paid feature** — enabling it forces the user to pick a plan at the end of onboarding. A user who has **already connected a bank** is committed to a paid plan regardless, so the prompt gives them nothing new. For them we should just turn AI on. ## What - **Connected bank → activate AI directly.** The consent prompt is skipped and consent is recorded automatically (reuses the existing `/ai/consent` endpoint, so the categorization backfill still runs). `setBusy` batches with the state update so the consent screen never flashes. - **No bank → unchanged opt-in.** Free users still explicitly accept. The notice is reworded to make the paid framing clear: *"AI suggestions are a paid feature. Enable them and you'll choose a plan at the end of the onboarding."* (translated in `es.json`). - No backend change needed: `RuleSuggestionController::requiresUpgrade()` already treats bank-connected users as not needing an upgrade, and `SubscriptionController` already gates the free plan on `!hasBank && !hasConsent`. ## Tests Browser tests in `OnboardingFlowTest`: - Connected bank → consent prompt skipped and `hasActiveAiConsent()` becomes true. - No bank → prompt (with the paid notice) shown; consent recorded only after accepting. - `/subscribe` forces a plan (no "Continue for free") when a bank is connected or AI consent is active. Vitest specs for `StepAiSuggestions` updated (new prop + reworded notice) plus a new case asserting bank-connected users auto-activate. All green: 5/5 browser tests (24 assertions), 6/6 vitest. |
||
|---|---|---|
| .. | ||
| en | ||
| es | ||
| fr | ||
| en.json | ||
| es.json | ||
| fr.json | ||