Skip to content

Intelligent Transaction Classification

Status: Shipped

Domain: Categorization Linear Projects: Categorization: Revamp UI & Bulk updates, Prompt optimization improvements


What It Does

Time-consuming, manual transaction tagging and fragile rule engines belong to the past. Palm automatically classifies and explains every transaction, so you always know where money is coming from and where it's going, without endless rule maintenance.

Palm analyzes transaction descriptions together with your business context to assign the right categories for every inflow and outflow. Each classification comes with a clear, explainable reason, giving you confidence in the output while keeping you in control. When you make a change, Palm learns automatically, improving accuracy and adapting to your business over time.


Capabilities

Capability Status Notes
Automatic classification of operational flows Shipped Payroll, vendor payments, customer receipts, tax, FX
Automatic classification of intercompany flows Shipped Identifies IC transactions across entities/accounts
Explainable results Shipped Natural-language explanation for each decision
Continuous learning Shipped Recategorize → Palm learns automatically
Business-context aware Shipped Uses your category definitions and historical data
Bulk reclassification Shipped Fix multiple transactions at once
Historical reclassification Shipped Fix past errors without support tickets
Prompt optimization Shipped Evolutionary algorithm improves classification accuracy over time

Jobs Fulfilled

From categorization/jobs.md

1. Classify bank transactions into budget categories for variance analysis

Desired Outcomes Addressed: - [x] Minimize the time spent on manual transaction classification - [x] Reduce the frequency of classification errors that pollute category reporting - [x] Increase the ability to reclassify historical transactions without support tickets - [x] Reduce reliance on inconsistent free-form memo text for categorization

How Palm Addresses This: - ML-based auto-classification removes manual work - Explainable results let you catch and fix errors - Self-serve bulk reclassification (no support tickets needed) - Uses transaction metadata, not just memo text

2. Support downstream teams (AR, AP) with granular transaction identification

Desired Outcomes Addressed: - [x] Minimize the time AR/accounting team spends identifying specific transactions - [x] Increase accuracy of journal entries created from Treasury reports - [ ] Reduce the frequency of questions about where to allocate transactions (partial)

How Palm Addresses This: - Granular categorization at transaction level - Consistent, auditable classification logic - Exportable data for downstream systems


Pain Points Addressed

Pain Point Addressed? Notes
Manual classification is time-consuming and error-prone Yes Auto-classification
Rule-based allocation is not smart Yes ML-based, not rule-based
Many transactions fall through the cracks Yes ML handles edge cases better
Can't easily reclassify historical transactions Yes Self-serve bulk reclassification
Classification errors lead to "pollution of other categories" Partial Explainable results help catch errors
Distinguishing IC from intra-company Yes Dedicated IC detection

What's NOT Included (Yet)

  • GL-level prediction for accounting journal entries
  • Real-time classification (currently batch)
  • Integration with AR/AP systems (HighRadius, etc.)

How It Works (Technical)

Component Technology Notes
Classification engine Vertex AI (Gemini) + OpenAI LLM-based with structured output
Prompt optimization Evolutionary algorithm Mini-batch training, USER errors weighted 2x
Context caching Vertex AI 2-hour TTL for system prompts
Data storage PostgreSQL categorization schema with task queues
Experiment tracking MLflow Checkpoint persistence for optimization
Task orchestration Airflow Batch categorization DAGs

Key files/services: - /backend/agents/categorization/ - Categorization agent - /backend/agents/categorization/prompt_optimization/ - Learning engine - /db_schemas/categorization_schema.sql - Data model - Worker types: LLMWorker, DualCategoryWorker, CategoryMapWorker



Last updated: 2026-02-17