Inspiration
Invoice Chaser came from a very common small business problem: getting paid is still too manual, too awkward, and too easy to let slip. Freelancers and small teams often do great client work, send the invoice, and then lose time chasing payment through scattered reminders, inbox threads, and rough mental tracking. We wanted to build a product that treats collections as an operational workflow, not an afterthought.
We were especially inspired by the gap between what large companies can do with dedicated finance operations and what small businesses are left to manage on their own. The goal was to give smaller operators a system that feels intelligent, proactive, and easy to use from day one.
What it does
Invoice Chaser helps small businesses create invoices, send them to clients, collect payments through Stripe, and keep track of outstanding balances in one place.
Its core value comes after the invoice is sent. The product automates payment follow-ups, shows overdue exposure and cash-flow forecasts on the dashboard, and now includes an AI Collections Operator that helps the user prioritize accounts, understand payment risk, draft outreach, simulate client replies, and update payment expectations based on real commitments.
Instead of just showing unpaid invoices, the product helps answer the operational question: what should I do next to get paid faster?
How we built it
We built Invoice Chaser as a full-stack web app with a React frontend and a FastAPI backend.
On the frontend, we used React, React Router, TanStack Query, Clerk, Tailwind, and Stripe Elements to create an admin dashboard, invoice workflows, and a public payment portal. On the backend, we used FastAPI, SQLAlchemy, Alembic, PostgreSQL-compatible models, Stripe, Resend, APScheduler, and Anthropic.
The new AI Collections Operator was built as a dedicated workflow layer rather than modifying the invoice lifecycle directly. We added new persistence models for collection cases, commitments, and activity history; new backend routes for analysis, sending operator drafts, and simulated reply handling; deterministic fallback logic so the demo remains reliable even if AI is unavailable; and dashboard UI components that make the operator visible and interactive in the main product surface.
Challenges we ran into
One challenge was separating collections workflow from invoice state cleanly. We wanted the operator to feel deeply integrated into the product, but we also needed to preserve the existing invoice lifecycle and payment flow without introducing regressions.
Another challenge was making the AI experience feel useful and dependable. It was not enough to generate text. The system needed to turn client replies into structured outcomes like promise-to-pay, payment-plan requests, disputes, or paid-elsewhere responses. That meant combining AI classification with deterministic fallback heuristics so the demo still works even if a model call fails.
We also had to update forecasting logic carefully. Once a client commits to a payment plan, the original invoice due date is no longer the best estimate of cash flow. We needed the forecast to respect those commitments without distorting the total outstanding balance.
Accomplishments that we're proud of
We are proud that Invoice Chaser feels like a real product instead of a disconnected demo.
The platform already handles invoicing, payments, reminders, and dashboard visibility, and the AI Collections Operator adds a compelling layer of intelligence on top of that. It can explain risk in plain English, recommend the next best action, generate outreach, simulate inbound client replies, record commitments, and immediately reflect those changes in the forecast.
We are also proud that we built the operator on a durable backend foundation. The workflow is backed by persistent state, activity history, and forecast-aware commitments, which makes it more than a superficial AI wrapper.
What we learned
We learned that collections is a strong use case for AI when it is grounded in workflow and state. The most valuable part is not just writing a better follow-up email. It is helping the user understand what is happening with an account, what action to take next, and how that changes business expectations.
We also learned that reliability matters as much as intelligence. For a feature like this to feel trustworthy, it needs clear state transitions, visible activity, deterministic fallbacks, and a dashboard that makes the outcome understandable at a glance.
What's next for Invoice Chaser
The next step is to evolve Invoice Chaser from a strong collections workflow demo into a production-ready accounts receivable assistant.
That includes real inbound email ingestion instead of simulated replies, stronger authentication enforcement across the backend, richer payment-plan handling, more advanced risk scoring, smarter queue prioritization, and deeper forecasting. We also see room to expand from solo operators into small finance teams with collaboration features, auditability, and more robust collections automation.
Longer term, Invoice Chaser can become the operating layer between invoicing and cash collection, giving small businesses the kind of receivables discipline that is usually only available to much larger companies.
Built With
- alembic
- anthropic-api
- apscheduler
- axios
- clerk
- fastapi
- javascript
- node.js
- postgresql
- python
- react
- react-router
- recharts
- resend
- sqlalchemy
- sqlite
- stripe
- stripe-elements
- tailwind-css
- tanstack-query
- vite
Log in or sign up for Devpost to join the conversation.