- Constraint
- Polling, retries, and process restarts can deliver the same financial signal more than once.
- Decision
- Use provider identities, unique deduplication keys, and processed/notified markers instead of relying on one transaction.
- Why it mattered
- The complete pipeline can be retried without duplicating a bill, task, or message.
- Trade-off
- Every stage must expose stable identity and completion state.
AI · Event-driven automation
Independent productFinance Concierge
An event-driven financial assistant that converts Outlook signals into deduplicated obligations, actions, forecasts, and Telegram conversations.
Read this first
The system at a glance.
- What I built
- A personal finance pipeline that turns messages and commands into a structured financial task ledger.
- My contribution
- System design and implementation across ingestion, rule evaluation, AI boundaries, persistence, scheduling, and chat delivery.
- Core challenge
- Automate useful financial work without creating duplicate obligations or hiding why an action happened.
- Key technologies
- Node.js, Hono, Prisma, Microsoft Graph, Telegram API, AI agents
Capability flow
How the system works.
Each step connects a user action to the system capability behind it.
-
Read incremental signals
Microsoft Graph delta polling collects new and changed messages from multiple Outlook sources.
-
Normalize and deduplicate
Provider identifiers and deduplication keys make repeated polling safe to replay.
-
Apply rules and reasoning
Deterministic classification controls when bounded AI reasoning is useful and what it may produce.
-
Create financial state
Payments and actions become explicit tasks with source, status, amount, and notification state.
-
Close the loop in Telegram
The assistant delivers reminders, accepts updates, and exposes reports and cash-flow forecasts.
Engineering judgment
Decisions that shaped the system.
- Constraint
- AI interpretation is useful, but money-related automation must remain explainable and controllable.
- Decision
- Keep deterministic rules around bounded agent decisions and attach the source and rule to each outcome.
- Why it mattered
- A user can understand why an obligation exists and correct it through the same interface.
- Trade-off
- The agent has less freedom than an open-ended assistant, by design.
Technical evidence
Skills backed by this system.
Open any skill to see the other products and professional work connected to it.
- AI Agents Uses bounded reasoning to interpret financial signals inside an auditable task workflow.
- Deterministic Automation Rules, stable identities, and completion markers keep repeated processing predictable.
- Event-driven Systems Moves external message events through ingestion, classification, task creation, and notification stages.
- Node.js Runs the HTTP service, scheduler, polling pipeline, and Telegram bot in one controlled process.
- Hono Provides the operational API and guarded refresh endpoints around the financial pipeline.
- Prisma Models sources, obligations, tasks, deduplication keys, and notification state in the persistence layer.
- Microsoft Graph Uses delta polling to ingest incremental changes from multiple Outlook accounts efficiently.
- Telegram API Turns stored financial state into reminders, confirmations, reports, forecasts, and interactive commands.
Technology stack
- Node.js
- TypeScript
- Hono
- Prisma
- Microsoft Graph
- Telegram