Classification Rules
Customize how the Statement Compiler categorizes your transactions
Classification Rules allow you to customize how the Statement Compiler categorizes your transactions. Create rules to automatically classify transactions based on merchant names, descriptions, or amounts.
How Rules Work
When the compiler processes transactions, it checks them against your rules in priority order. The first matching rule determines the category.
Rule Components
Each rule consists of:
- Name — A descriptive name for the rule
- Match Type — How to match transactions (contains, exact, starts with, regex)
- Match Value — The text or pattern to match
- Category — The category to assign when matched
- Priority — Order in which rules are checked (lower = higher priority)
Creating Rules
From the Rules Editor
- Navigate to Compile → Rules
- Click Add Rule
- Configure your rule:
- Enter a descriptive name
- Select the match type
- Enter the match value (merchant name, keyword, etc.)
- Choose the target category
- Click Save
From Transaction Review
When reviewing compiled transactions, you can create rules on the fly:
- Find a miscategorized transaction
- Click the category to edit
- Select the correct category
- Check "Create rule for similar transactions"
- The system will suggest a rule based on the transaction
Match Types
Contains
Matches if the transaction description contains the specified text.
Match: "GRAB"
Matches: "GRABFOOD ORDER #123", "GRAB TRANSPORT"Exact Match
Matches only if the description exactly matches.
Match: "PETRON STATION"
Matches: "PETRON STATION"
Does not match: "PETRON STATION KL"Starts With
Matches if the description begins with the specified text.
Match: "TNG"
Matches: "TNG EWALLET", "TNG RELOAD"
Does not match: "RELOAD TNG"Regex
For advanced users, match using regular expressions.
Match: "SHOPEE\s*\d+"
Matches: "SHOPEE 12345", "SHOPEE 67890"Common Categories
The compiler supports 30+ expense categories. Here are the most commonly used:
Business Expenses
| Category | Use For |
|---|---|
| Office Supplies | Stationery, equipment |
| Professional Fees | Legal, accounting, consulting |
| Marketing | Advertising, promotions |
| Travel | Transport, accommodation |
| Meals & Entertainment | Client meals, team events |
| Utilities | Internet, phone, electricity |
| Software & Subscriptions | SaaS tools, services |
Revenue Categories
| Category | Use For |
|---|---|
| Sales Revenue | Product/service income |
| Interest Income | Bank interest |
| Other Income | Refunds, misc income |
Transfer Categories
| Category | Use For |
|---|---|
| Inter-Account Transfer | Transfers between own accounts |
| Owner's Drawing | Personal withdrawals |
| Capital Injection | Personal funds into business |
Rule Priority
Rules are checked in priority order (1 = highest priority). When multiple rules could match a transaction, the highest priority rule wins.
Best Practices
- Specific rules first — Put specific merchant rules at high priority
- General rules last — Broad category rules should have lower priority
- Test your rules — Use the preview feature before saving
Bulk Rule Management
Import Rules
Import rules from a CSV file:
- Go to Compile → Rules
- Click Import
- Upload your CSV with columns: name, match_type, match_value, category, priority
Export Rules
Export your rules to share or backup:
- Go to Compile → Rules
- Click Export
- Download the CSV file
Rule Suggestions
The compiler learns from your corrections. When you reclassify transactions, it may suggest new rules:
- High confidence — The system is confident this rule will be accurate
- Medium confidence — Review the suggested match pattern
- Low confidence — Consider a more specific match
Tips for Effective Rules
Be Specific
Good: "PETRON PETRONAS KL"
Avoid: "PETRO" (too broad, may match unrelated transactions)Handle Variations
Many merchants have multiple transaction formats:
Rule 1: Contains "GRABFOOD" → Meals
Rule 2: Contains "GRAB CAR" → Transport
Rule 3: Contains "GRAB PAY" → Software & SubscriptionsUse Regex for Complex Patterns
"TNG.*TOLL" → Travel (matches TNG tolls specifically)
"LAZADA\s*#?\d+" → E-commerce SalesTroubleshooting
Rule Not Matching
- Check the match type is correct
- Verify the exact text in the transaction description
- Check rule priority (higher priority rules may be overriding)
Too Many Matches
- Make your match value more specific
- Use exact match instead of contains
- Add additional rules for different cases