Agentic AI
FinForge
AI Agent for Personal Finance
Problem
Most personal finance apps are passive. You can view transactions and budgets, but you're still responsible for spotting patterns, identifying problems, and deciding what to do. Even apps that surface insights require you to open them and go looking. Important trends and spending behaviors go unnoticed between sessions.
Solution
FinForge is a personal finance platform that proactively monitors your financial activity and delivers personalized insights based on live banking data. By connecting to financial accounts through Plaid, it continuously analyzes transactions, spending patterns, and account activity to generate briefings tailored to you. Unlike traditional finance apps, FinForge combines a web dashboard with an agentic AI experience. You can review your financial data and briefings through the app, receive scheduled updates in your inbox, and reply to any email to continue the conversation with the AI agent. Financial guidance delivered through a channel you already use, without having to repeatedly open another app.
Tech Stack
Deep Dive
FinForge is built around an agentic architecture that combines live banking data, long-term memory, scheduled workflows, and email-based interactions. The system is designed to proactively deliver financial insights while allowing users to continue conversations through natural language.
System Architecture

High-Level Flow
- Users connect their financial accounts through Plaid.
- Transaction and account data is stored in PostgreSQL.
- The AI agent retrieves relevant financial context and memory.
- Personalized briefings are generated and delivered through email and the dashboard.
- Users can continue the conversation through email replies or the web interface.
Core Components
FastAPI Backend
FastAPI acts as the orchestration layer for the product. It exposes API endpoints, protects authenticated user workflows, coordinates the AI agent, processes financial data, and starts scheduled briefing workflows.
I chose FastAPI because it gives the backend a strongly typed, async-friendly foundation while keeping API development lightweight. That mattered for a system that talks to external services like Plaid, Claude, Resend, PostgreSQL, Pinecone, and AWS workers.
Data Layer
PostgreSQL stores structured product data such as accounts, transactions, briefings, conversations, and user preferences. Pinecone stores agent memory, past conversation context, financial insight embeddings, and semantic search indexes.
I separated relational data from vector data because they serve different access patterns. PostgreSQL is the source of truth for transactional records and user-owned entities, while Pinecone is optimized for semantic retrieval when the agent needs long-term memory or similar past context.
AI Agent
The AI layer uses Claude to reason over financial context, memory, and user requests. Before generating a response, the agent builds context from current account data, recent transactions, saved insights, and relevant prior conversations.
This makes the workflow agentic rather than a single prompt over raw data. The agent retrieves memory, constructs context, uses tools for financial data access, and produces responses that are grounded in the user's actual financial state.
Async Processing
EventBridge schedules recurring jobs, SQS buffers work, and Lambda workers process background tasks such as briefing generation. This keeps long-running financial analysis outside of request-response paths.
Scheduled financial briefings can take several seconds to generate. Rather than blocking API requests, jobs are processed asynchronously through a queue-based architecture.
Data Flow
Scheduled Briefing Generation
- EventBridge
- SQS
- Lambda Worker
- Plaid Data Retrieval
- Agent Analysis
- Store Briefing
- Send Email
EventBridge triggers recurring briefing schedules and places work onto SQS. A Lambda worker consumes each job, retrieves fresh Plaid account and transaction data, asks the agent to analyze the latest financial context, stores the generated briefing, and sends it to the user through Resend.
Email Conversation Flow
- User Reply
- Resend Webhook
- FastAPI
- Retrieve Context
- Claude Agent
- Generate Response
- Email User
When a user replies to a briefing email, Resend forwards the inbound message to a webhook. FastAPI identifies the conversation, retrieves relevant user context and agent memory, sends that context to Claude, stores the response, and emails the answer back so the thread can continue naturally.
Design Decisions
Why Email Instead of Chat?
Email makes FinForge proactive instead of purely session-based. Users do not need to open another app to receive insights, and replies become a natural continuation of the financial briefing thread.
Why Use Plaid?
Plaid provides a standardized way to connect bank accounts, retrieve transactions, and access account data across financial institutions. That lets FinForge focus on analysis and user experience instead of building custom bank integrations.
Why Separate Pinecone and PostgreSQL?
PostgreSQL stores structured financial records, user preferences, briefings, and conversations. Pinecone stores semantic memory and embeddings. Keeping them separate lets relational queries and vector retrieval use the storage systems best suited to each access pattern.
Why EventBridge + SQS?
EventBridge handles time-based briefing schedules, while SQS buffers jobs before worker execution. This makes scheduled workflows more reliable and prevents slow agent generation from blocking API requests.
Why Claude Instead of OpenAI?
Claude was a strong fit for long-form financial reasoning, natural conversation, and instruction-following around user-specific context. The tradeoff is that the agent layer should remain provider-agnostic enough to support a different model if cost, latency, or quality requirements change.
Why Agent Memory?
Personal finance is contextual. Agent memory lets FinForge connect new questions to prior briefings, spending patterns, and user preferences instead of treating every interaction as a blank conversation.
Challenges
Maintaining Conversation Context
Users may reference spending habits, goals, or prior advice from months ago. FinForge addresses this with vector memory retrieval in Pinecone, pulling only the most relevant prior context into the current agent response.
Delivering Briefings Reliably
Users expect scheduled briefings to arrive at specific times. EventBridge triggers the schedule, SQS buffers the work, and background workers generate briefings without depending on an active user session.
Managing Token Costs
Sending every transaction and conversation to the LLM would be expensive and noisy. FinForge reduces cost by retrieving only relevant financial context, memory, and recent activity needed for the current briefing or reply.