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

  1. Navigate to the frontend directory:
   cd client
   npm install
   npm run dev
  1. 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
  1. Environment Create a new .env file in the server root. Add you API key there. Example: OPENAI_API_KEY=your_api_key And a .env.local in the client root for the server endpoints VITE_API_URL=your_server_port

Built With

Share this project:

Updates