Inspiration
Every three months, I send my invoices to my accountant so she can review them and identify possible tax deductions. Every utility and household service provider has its own platform and way of delivering invoices, making them difficult to collect and track. By the time I notice an incorrect charge, resolving it with the provider can be difficult.
I’ve tried to solve this by uploading the invoices into a Google Drive folder, but then I still have to upload them to my accountant’s system and I also lack a way to easily see if the price they are charging makes sense compared with the previous invoice.
I also wanted a simple way to visualize how my expenses change over time.
What it does
Billora turns scattered invoices into structured, searchable financial information.
It handles invoice upload -> AI parsing and extraction -> anomaly detection + visualization. It detects unusual price changes and missing recurring invoices.
Users can organize invoices into read-only dashboards, share them with accountants or family members, and ask an AI assistant questions grounded in their analyzed invoice data.
How I built it
I began by using Codex with GPT 5.6 to explore features relevant to the problem, define the product scope, plan the architecture, and accelerate implementation. I built Billora with React, Fastify, PostgreSQL, Redis, BullMQ, S3-compatible object storage, and the OpenAI Responses API, deploying the web app, API, and background worker as separate Railway services.
I then iteratively added features, validating each one through testing, security review, debugging, and hands-on use of the application.
Challenges I ran into
The first challenge was presenting a large amount of information without overwhelming the user. I iterated a bit with the frontend design, testing different options. In the end, I added some tooltips and separate views to organize the data better. Even highly relevant information has little value if users cannot find and understand it.
Another challenge was moving from a local prototype to a deployed, multi-service application. I already had some experience with Railway but the deployment needed to support transactional email, asynchronous document processing, secure file storage, persistent data, and OpenAI API integration. I separated the web application, API, and background worker, then created a GitHub Actions workflow that type-checks, tests, builds, and deploys all three services to Railway.
Accomplishments that I'm proud of
Infra + CI/CD:
The application is deployed through a repeatable CI/CD workflow, with separate services and infrastructure that provide a practical foundation for future scaling.
Main functionalities:
AI-assisted invoice processing: Billora extracts structured information from PDFs, validates the model output, and lets users review discrepancies before accepting AI-generated values.
Proactive financial visibility: It detects unusual price changes and missing recurring invoices while providing spending trends and filters.
Other functionalities: Users can easily share invoices with family members and accountants, and see graphs to keep track of their spending. I added some activity log in-app so that the users could keep track of how they had used the app, this is good so that they can easily see if something failed. There is also an easy-to-use chatbot with already the relevant data (once the user uploads it). I feel like improving this App and adding other useful features can be easy from the current status.
What I learned
I learned that sometimes the way we do things and we assume are done, can be replaced by a focused application that can be developed within days.
I also learned that a passwordless authentication with email confirmation for login is a good alternative that sometimes can be used, depending on the project, to avoid storing passwords and avoid the user having another one to add to their long list.
What's next for Billora
There are improvements that I think could come next:
- Develop a mobile app for notifications to show there.
- Build a browser extension that automatically reads email subjects (if permissions are given) and if it detects that the user is looking at an email with an invoice it should automatically ask the user to upload the invoice by drag and drop within a popup.
- Allow the user to choose the AI model used for analysis: some PDFs can be more complex, or very simple and a lighter model could do the trick.
- Integrate a jurisdiction-specific tax knowledge base to help users organize documents and prepare tax forms for human review.
Built With
- bullmq
- docker
- fastify
- github-actions
- gpt-5.6
- javascript
- nginx
- node.js
- openai-responses-api
- playwright
- postgresql
- railway
- railway-object-storage-(s3-compatible)
- react
- recharts
- redis
- resend
- typescript
- vite
- zod
Log in or sign up for Devpost to join the conversation.