whisper-money/database/migrations
Víctor Falcón 8056ede636
feat(ai): suggest automation rules during onboarding (#523)
Suggests transaction categorization rules during onboarding.

After a sync or import, it groups the uncategorized transactions, asks
Gemini (via laravel/ai) to map the common merchants to categories, and
shows the results for review. The user edits or drops any and creates
the ones they want. During onboarding the accepted rules also categorize
existing transactions right away.

Off by default: it needs the `AiRuleSuggestions` Pennant flag and a
per-user AI consent. The model and thresholds are config-driven.
`ai:suggest-rules {user}` prints what a user would get.

The settings-page surface and monthly regeneration are a follow-up.
2026-06-13 22:51:15 +02:00
..
0001_01_01_000000_create_users_table.php
…
0001_01_01_000001_create_cache_table.php
…
0001_01_01_000002_create_jobs_table.php
…
2025_08_26_100418_add_two_factor_columns_to_users_table.php
…
2025_11_07_135255_add_encryption_salt_to_users_table.php
…
2025_11_07_135256_create_encrypted_messages_table.php
…
2025_11_07_150038_create_banks_table.php
…
2025_11_07_150122_create_accounts_table.php
…
2025_11_07_150613_create_categories_table.php
…
2025_11_07_150659_create_transactions_table.php
…
2025_11_07_184056_modify_banks_table_add_user_id_and_simplify_name.php
…
2025_11_07_185018_change_banks_logo_to_text.php
…
2025_11_08_140230_change_transactions_id_to_uuid.php
…
2025_11_08_141344_make_category_id_nullable_in_transactions_table.php
…
2025_11_08_144530_add_soft_deletes_to_transactions_table.php
…
2025_11_10_110100_create_automation_rules_table.php
…
2025_11_15_172640_create_account_balances_table.php
…
2025_11_15_175636_change_transactions_amount_to_bigint.php
…
2025_11_15_195739_convert_all_ids_to_uuid.php
…
2025_11_18_184409_create_user_leads_table.php
…
2025_11_28_104227_add_source_to_transactions_table.php
…
2025_11_29_170353_add_type_to_categories_table.php
…
2025_11_29_170955_fix_account_balances_unique_constraint.php
…
2025_12_01_101443_add_unique_constraint_to_categories_table.php
…
2025_12_06_112515_create_customer_columns.php
…
2025_12_06_112516_create_subscriptions_table.php
…
2025_12_06_112517_create_subscription_items_table.php
…
2025_12_06_112518_add_meter_id_to_subscription_items_table.php
…
2025_12_06_112519_add_meter_event_name_to_subscription_items_table.php
…
2025_12_10_142006_add_onboarded_at_to_users_table.php
…
2025_12_12_092647_create_labels_table.php
…
2025_12_12_092650_create_label_transaction_table.php
…
2025_12_12_092651_create_automation_rule_labels_table.php
…
2025_12_12_141955_update_labels_unique_constraint_include_deleted_at.php
…
2025_12_16_151952_create_user_mail_logs_table.php
…
2025_12_19_092437_create_budgets_table.php
…
2025_12_19_092443_create_budget_periods_table.php
…
2025_12_19_092446_create_budget_transactions_table.php
…
2025_12_20_154221_create_features_table.php
…
2025_12_29_063338_add_currency_code_to_users_table.php
…
2026_01_08_192757_add_email_identifier_to_user_mail_logs.php
…
2026_01_08_204223_update_user_mail_logs_unique_constraint.php
…
2026_01_21_151353_add_indexes_for_budget_transaction_assignment.php
…
2026_01_22_071325_add_processing_historical_to_budget_periods.php
…
2026_01_22_143232_add_locale_to_users_table.php
…
2026_02_08_103953_create_user_settings_table.php
…
2026_02_09_110624_add_encrypted_to_accounts_table.php
…
2026_02_09_131403_make_description_iv_nullable_on_transactions.php
…
2026_02_09_144915_create_banking_connections_table.php
…
2026_02_09_144959_add_banking_connection_fields_to_accounts_table.php
…
2026_02_09_144959_add_external_transaction_id_to_transactions_table.php
…
2026_02_10_085759_add_aspsp_logo_to_banking_connections_table.php
…
2026_02_10_095639_add_raw_data_to_transactions_table.php
…
2026_02_11_113115_add_pending_accounts_data_to_banking_connections_table.php
…
2026_02_11_113119_add_linked_at_to_accounts_table.php
…
2026_02_13_083716_add_original_description_to_transactions_table.php
…
2026_02_18_084241_add_api_token_to_banking_connections_table.php
…
2026_02_18_110556_add_api_secret_to_banking_connections_table.php
…
2026_02_20_074846_create_exchange_rates_table.php
…
2026_02_22_180317_add_invested_amount_to_account_balances_table.php
…
2026_02_24_193117_fix_budget_transaction_refund_amounts.php
…
2026_03_03_114620_add_paywall_seen_at_to_users_table.php
…
2026_03_04_085843_add_waitlist_columns_to_user_leads_table.php
…
2026_03_04_094926_add_locale_to_user_leads_table.php
…
2026_03_12_095411_add_iban_to_accounts_table.php
…
2026_03_18_112307_add_cashflow_direction_to_categories_table.php
…
2026_03_19_151039_add_include_loans_in_net_worth_chart_to_user_settings_table.php
…
2026_03_20_110659_create_real_estate_details_table.php
…
2026_03_20_132058_make_bank_id_nullable_on_accounts_table.php
…
2026_03_20_154755_add_include_real_estate_in_net_worth_chart_to_user_settings_table.php
…
2026_03_25_125717_add_revaluation_percentage_to_real_estate_details_table.php
…
2026_03_25_132244_create_loan_details_table.php feat(accounts): add loan amortization projections for loan accounts (#246) 2026-03-26 15:06:09 +01:00
2026_03_30_123011_add_consecutive_sync_failures_to_banking_connections_table.php fix(banking): retry failed sync connections and log every sync attempt (#251) 2026-03-31 11:34:35 +01:00
2026_03_30_123011_create_banking_sync_logs_table.php fix(banking): retry failed sync connections and log every sync attempt (#251) 2026-03-31 11:34:35 +01:00
2026_04_14_120000_add_email_verification_to_user_leads_table.php feat: verify waitlist leads (#285) 2026-04-14 11:26:01 +01:00
2026_04_16_063515_add_bank_transactions_email_cutoff_at_to_banking_connections_table.php fix(open-banking): skip silent sync emails (#295) 2026-04-16 08:28:44 +01:00
2026_04_16_092644_add_timezone_to_users_table.php fix(user): persist detected timezones (#296) 2026-04-16 11:36:57 +01:00
2026_04_22_084113_add_deleted_at_to_users_table.php Support soft-deleted users with reusable emails (#316) 2026-04-22 11:41:41 +01:00
2026_04_25_092824_add_launch_columns_to_user_leads_table.php feat(leads): cohort-based launch invitations with per-user Stripe coupons (#333) 2026-04-30 15:10:28 +01:00
2026_05_05_070442_add_rate_limited_until_to_banking_connections_table.php feat(banking): back off scheduler when EnableBanking returns 429 (#352) 2026-05-05 09:39:32 +02:00
2026_05_05_132023_convert_custom_budgets_to_monthly.php fix(budgets): remove Custom period type to fix duplicate-key crash (#355) 2026-05-05 16:07:16 +02:00
2026_05_13_085027_add_dedup_fingerprint_to_transactions_table.php fix(banking): dedup EnableBanking transactions by deterministic fingerprint (#390) 2026-05-13 11:30:11 +01:00
2026_05_25_115100_update_default_saving_and_investment_category_types.php feat(cashflow): add savings and period views (#424) 2026-05-25 16:41:00 +02:00
2026_05_26_061232_add_reinvitation_columns_to_user_leads_table.php feat(leads): add user lead re-invite campaign (#432) 2026-05-26 08:35:31 +02:00
2026_05_27_061513_add_counterparty_names_to_transactions_table.php feat(transactions): add counterparty fields (#440) 2026-05-27 16:20:55 +02:00
2026_05_28_073203_update_categories_unique_constraint_for_soft_deletes.php fix(categories): allow recreate after delete (#444) 2026-05-28 09:46:02 +02:00
2026_05_29_085835_update_saving_and_investment_category_cashflow_direction.php fix(categories): expose cashflow setting on create (#448) 2026-05-29 11:05:04 +02:00
2026_06_01_085554_create_budget_category_table.php feat(budgets): track multiple categories and labels per budget (#466) 2026-06-01 12:32:23 +02:00
2026_06_01_085554_create_budget_label_table.php feat(budgets): track multiple categories and labels per budget (#466) 2026-06-01 12:32:23 +02:00
2026_06_01_085554_migrate_budget_category_label_to_pivots.php feat(budgets): track multiple categories and labels per budget (#466) 2026-06-01 12:32:23 +02:00
2026_06_02_090000_add_parent_id_to_categories_table.php feat: parent/child category tree (#474) 2026-06-03 19:30:12 +02:00
2026_06_02_094823_add_notify_on_bank_transactions_synced_to_user_settings_table.php feat(settings): let users disable bank transactions email (#472) 2026-06-02 12:24:39 +02:00
2026_06_05_120000_create_saved_filters_table.php feat(transactions): save and reuse transaction filters (#496) 2026-06-05 18:00:14 +02:00
2026_06_05_185212_add_state_token_to_banking_connections_table.php feat(open-banking): finalize bank connection without a session via state token (#498) 2026-06-06 12:12:07 +02:00
2026_06_08_114044_add_analysis_days_to_saved_filters_table.php feat(transactions): filtered analysis dashboard (#507) 2026-06-08 14:04:00 +02:00
2026_06_09_124010_add_analysis_mode_to_saved_filters_table.php feat(analysis): project-aware transaction analysis (#513) 2026-06-09 15:32:07 +02:00
2026_06_10_083644_add_last_logged_in_at_to_users_table.php feat(users): track last login and last active timestamps (#516) 2026-06-10 11:01:30 +02:00
2026_06_10_084055_add_last_active_at_to_users_table.php feat(users): track last login and last active timestamps (#516) 2026-06-10 11:01:30 +02:00
2026_06_12_134225_create_ai_consents_table.php feat(ai): suggest automation rules during onboarding (#523) 2026-06-13 22:51:15 +02:00
2026_06_12_134523_create_suggestion_runs_table.php feat(ai): suggest automation rules during onboarding (#523) 2026-06-13 22:51:15 +02:00
2026_06_12_134524_create_rule_suggestions_table.php feat(ai): suggest automation rules during onboarding (#523) 2026-06-13 22:51:15 +02:00