Inspiration
For small businesses, getting paid isn't always as simple as sending an invoice. Long payment terms can leave money tied up for 30, 60, or even 90 days, creating financial pressure that isn't immediately obvious. We wanted to make the hidden cost of waiting visible and give small-business owners a practical way to negotiate better payment terms. That's why we built STUB.
What it does
STUB is an AI-powered invoice analysis and payment negotiation tool that helps small businesses understand what delayed payments could cost them. Users can: Upload an invoice: Google Gemini extracts important details, including the customer, invoice amount, due date, payment terms, and discount clauses. Review the information: Users can verify and edit extracted fields before calculations begin. Understand the financial impact: STUB estimates the financing cost of waiting for payment. Negotiate smarter: An interactive slider lets users explore shorter payment terms and see potential savings. Personalize their estimates: Users can adjust their annual financing rate and expected number of invoices per year. Take action: STUB generates an editable negotiation letter using their chosen payment terms and financial estimates. Instead of simply showing when an invoice is due, STUB helps users understand what that wait means for their business.
How we built it
We built STUB using TypeScript, Node.js, Express, HTML, CSS, and Google's Gemini API. Our backend processes uploaded invoices and uses Gemini to extract structured financial information. The frontend provides an interactive experience for reviewing the extracted information, exploring estimated financing costs, and comparing payment terms. Financial estimates use transparent, deterministic formulas rather than relying on AI-generated arithmetic. Users can customize the assumptions behind those calculations. We also built a demo mode so users can explore STUB without uploading their own invoices.
Challenges we ran into
As first-time hackers, one of our biggest challenges was integrating different parts of the application into a cohesive experience. We worked through migrating frontend functionality to TypeScript, connecting Gemini to our upload flow, debugging API responses, and handling Gemini's usage limits. We also had to think carefully about how to communicate financial estimates without presenting assumptions as guaranteed outcomes.
Accomplishments that we're proud of
We're proud of turning a complex financial problem into an approachable, interactive experience. Our biggest accomplishment was connecting AI-powered document extraction with financial modeling and an actionable negotiation workflow, while keeping the interface clear and accessible to users without a finance background.
What we learned
We learned how to collaborate using Git and GitHub, work with external APIs, build and debug a TypeScript application, and test an end-to-end user experience. Most importantly, we learned that building a useful product requires more than getting the code to work. It also means designing around the user's needs and communicating complex information clearly.
What's next for Stub
We'd like to expand STUB with invoice history, customer-level payment insights, customizable financing assumptions across the entire application, and deeper analysis of payment clauses. Our long-term vision is to help small businesses make better financial decisions with the same confidence as larger organizations.
AI and development tools disclosure: STUB uses Google Gemini for invoice data extraction. OpenAI ChatGPT was also used to assist with development, debugging, and iteration. Financial calculations use explicit formulas, and users can review extracted information. Estimates are illustrative and are not financial advice.
Built With
- express.js
- geminiapi
- nessiapi
- typescript
Log in or sign up for Devpost to join the conversation.