Transaction rules engine V1 #1900

Merged
zachgoll merged 61 commits from zachgoll/rules-engine-v1 into main 2025-04-18 23:39:58 +08:00
zachgoll commented 2025-02-26 00:39:21 +08:00 (Migrated from github.com)

This PR introduces a basic rules engine that allows users to define "triggers" and "actions" that Maybe will automatically detect and apply to transactions during the "Sync" process:

CleanShot 2025-02-25 at 11 13 01

Initial scope

While a Rule may eventually apply to several models, this PR is a minimal implementation that focuses on:

  • Transaction records
  • Active/inactive rules
  • Effective dates
  • Basic AND/OR trigger condition logic
  • Categorization and tagging rules based on:
    • Text matching
    • Transaction values

Further rule templates will be added in the future, but these represent the highest impact rules for most users.

Self hosted vs. Hosted

Both versions of the app will have rules, but the hosted version will have additional controls that allow users to assign rules based on Plaid (data provider) info in addition to basic text/account/type matching.

This PR introduces a basic rules engine that allows users to define "triggers" and "actions" that Maybe will automatically detect and apply to transactions during the "Sync" process: ![CleanShot 2025-02-25 at 11 13 01](https://github.com/user-attachments/assets/05e040a6-8616-4caa-b2ac-20f0562eb332) **Initial scope** While a `Rule` may _eventually_ apply to several models, this PR is a minimal implementation that focuses on: - `Transaction` records - Active/inactive rules - Effective dates - Basic AND/OR trigger condition logic - Categorization and tagging rules based on: - Text matching - Transaction values Further rule templates will be added in the future, but these represent the highest impact rules for _most_ users. **Self hosted vs. Hosted** Both versions of the app will have rules, but the hosted version will have additional controls that allow users to assign rules based on Plaid (data provider) info in addition to basic text/account/type matching.
Sign in to join this conversation.