AI Expense Receipt Assistant
Employees send a receipt photo to a Telegram bot; a vision model reads it, a policy engine checks it, managers approve with one tap, and finance gets a monthly pack.
- Year
- 2026
- Role
- Solo: workflow, policy engine, schema
- Status
- Shipped
- Context
- Open source
Results
6
pipeline stages
Intake to monthly finance pack
9
default policy rules
Reject, send to manager, or auto-approve
Only registered, active employees can submit; anyone else gets an onboarding message with their Telegram ID. A receipt photo goes to GPT-4.1 mini vision at temperature 0, which fills a schema-locked expense record where anything missing becomes null instead of a guess. Receipt text is treated as untrusted input.
A configurable policy engine then rejects what can’t be valid (not a receipt, no total, older than 90 days, duplicates) and routes the rest: over a category limit, above the auto-approve ceiling, alcohol, weekend purchases or low confidence go to the employee’s manager with Approve and Reject buttons, escalating after 72 hours. Everything else is auto-approved.
An idempotent upsert writes each decision to PostgreSQL with an audit trail, the employee gets a confirmation or a reason, and on the 1st of every month finance receives an HTML summary by department and category with a CSV attached. MIT-licensed, imported into n8n as one workflow.