Inspiration
We got inspired by a mock software project we built in first year of CSE at TU Delft. However, with the new AI, we can save up time by just sending him natural language messages. This simplifies a lot keeping track of group expenses!
What it does
When you talk to him, he automatically infers who payed, who was payed for and how much. If some message is too ambiguous, he will ask for clarification. With this info, you can talk to Bill like a normal human and he will take caer of running the numbers for you! When an event is finalized, he will automatically send pay requests to whoever needs to pay via
How we built it
We built a frontend display in VueJS that managed all the messaging and backend calls. A python backend serves as a memory database and as the interface to the LLM that tracks the expenses. This LLM keeps a summary of all the transactions it has seen in an event to get the most amount of context every time.
Challenges we ran into
Prompt engineering, and connecting to the bunq api.
Accomplishments that we're proud of
The clean looking and bunq inspired UI, and a functional AI Agent that (almost always) successfully interprets the payments of the group.
What we learned
We learned a lot about backend design, integration, and APIs.
🧾 Bill — Group Expense Tracker with AI
Bill is a Vue + FastAPI powered web app for managing shared expenses in group events. It features an AI agent that helps users log and track their spending intuitively, making cost splitting transparent, fair, and even fun.
✨ Features
- ✅ Create and join events with a unique ID
- 🧑🤝🧑 Add participants with IBANs
- 💬 Log expenses via an AI chat interface
- 🟢 Real-time event status (active/inactive)
- 📋 Participant list with a gradient design
- 🚀 Finalize events and automatically trigger Bunq API inquiries (planned)
🌐 API Endpoints
| Method | Endpoint | Description |
|---|---|---|
| POST | /event |
Create new event |
| POST | /event/{event_id}/join |
Join an existing event |
| POST | /event/{event_id}/finalize |
Finalize the event |
| GET | /event/{event_id} |
Get event details |
| GET | /events |
List all events |
| POST | /event/{event_id}/message |
AI chat expense input |
🚀 How to Run the Project
- Navigate to the frontend directory:
cd client
npm install
npm run dev
- Open a new terminal and do the same for backend (there is a run.ps1 in case you don't have the dependencies installed)
cd server
python main.py
- Environment
Create a new .env file in the server root. Add you API key there. Example:
OPENAI_API_KEY=your_api_keyAnd a .env.local in the client root for the server endpointsVITE_API_URL=your_server_port
Built With
- python
- vuejs
Log in or sign up for Devpost to join the conversation.