Case study · University project, TU Wien
Arnesista
A tool-rental marketplace with an AI project planner, built by a team of five as a university project at TU Wien. I led the frontend, worked on the planner's agent pipeline and bundle algorithm, and wrote the end-to-end test suite.
- Frontend lead in a team of five
- Role
- Summer semester 2026
- Timeline
- Vue 3, TypeScript, Spring Boot, Spring AI, PostgreSQL, ChromaDB
- Stack
- Grade 1 · top mark
- Result

The project
Arnesista is a marketplace for renting tools. Providers list their tools, pickup locations and teams. Renters filter the catalog, collect tools in a cart, pay with Stripe at checkout and review the rental afterwards. The team had one semester to build it end to end, from the Spring Boot backend to the Vue frontend, and to run it on the university's Kubernetes infrastructure.
My role
I was the frontend lead. I set up the frontend architecture and the shared components every feature builds on. On the AI planner, I built the frontend and worked on the backend agent pipeline, the retrieval step and the genetic bundle algorithm. I also refactored large parts of the Spring Boot backend to make it easier to maintain, wrote the complete Cypress end-to-end suite, and presented the final project demo.
The AI planner
Renting tools usually means knowing which tools you need. The planner starts from the job instead. You describe it in plain words, for example "renovate my bathroom", and get rentable tool bundles back.
A gatekeeper model first rejects off-topic or unsafe requests. Three agents then pull out what the user asked for explicitly, split the job into sub-tasks and turn each sub-task into concrete activities. A retrieval step matches those activities against tool descriptions in ChromaDB. Finally, a genetic algorithm assembles bundles from real listings. Locally everything runs on a small Granite model via Ollama, and one setting switches it to Google Gemini.
What I built
Feature-based frontend
15 self-contained feature modules, among them auth, catalog, cart, checkout, payment, booking and planner. Each one bundles its own pages, components and API calls, on top of a shared component library.
Planner frontend
A step-by-step flow. Describe a job or start from a template, then set dates and preferences such as distance, budget, rating and condition. Next, review the suggested tools and untick the ones you don't need. Finally, compare bundles and add one to the cart.
Agent pipeline & RAG
Worked on the extraction agents and the retrieval step. Tool categories come from a curated set of tool descriptions, and categories the model makes up are filtered out.
Bundle selection
Worked on the genetic algorithm and its scoring. It weighs cost, distance, rating and pickup logistics, with decorators for the cheapest and the fewest-locations variants.
Backend refactoring
Refactored large parts of the Spring Boot backend to make it easier to maintain.
Cypress E2E suite
The complete end-to-end suite: 58 tests in 9 specs. They cover registration, login, cart and checkout, provider bookings, inventory, locations, teams, account settings and reviews.
Architecture
Engineering decisions
Guardrail before the agents
A cheap classifier returns ALLOW or BLOCK as JSON before any agent runs. If it errors or answers in a broken format, the request is blocked.
RAG instead of a hard-coded mapping
Activities are matched against tool descriptions in a vector store. New tools need a description, not new code.
Scoring that saturates
Cost, distance and pickup logistics pass through a sigmoid. Small differences matter near a sensible midpoint, and extreme values don't dominate the score.
Bayesian rating
Ratings are averaged with five virtual reviews at the global mean. A tool with one five-star review doesn't outrank a tool with many good ones.
Strategies as decorators
"Cheapest" and "Fewest locations" narrow the candidates, then reuse the same genetic algorithm. No second optimizer.
Feature modules, tested end to end
Each feature owns its pages, components and API layer. The Cypress suite checks that the flows work together across modules.
Results
- Grade 1
- The top mark for the team project.
- 58 E2E tests
- Cypress specs covering the main renter and provider flows.
- From job to cart
- A plain-language job description ends as a bookable tool bundle in the cart.
Screenshots

Demo data · Describe the job 
Demo data · Tools suggested by the local Granite model 
Demo data 
Demo data · Stripe test mode