Masapalu
A hotel companion app powered by our own AI agents — from personas and scope to a working multi-agent system.
- Role
- Developer — AI agents & mobile app
- Team
- Marcia Perez, Sara Schramm, Paul Wipper
- Context
- Mobile Applications — HM Munich
- Tools
- React Native / Expo, FastAPI, CrewAI, Ollama · Llama 3.1, MongoDB, Figma

How might hotel guests access every service easily and get a stay that feels personal? In a team of four we researched, scoped and built Masapalu: a React Native app backed by a FastAPI server and our own AI agents (CrewAI on a local Llama 3.1 model) that assign rooms at check-in, recommend activities and dining, and find conflict-free booking slots.
The problem
Hotel guests juggle reception, printed menus, booking desks and city guides — and the experience is the same for everyone. We framed the challenge as: How might we provide easy access to all hotel services so that every stay feels pleasant and personalised?

Two very different users
We designed for the extremes, so everyone in between would be covered:
- Hildegard, 68 — retired teacher, low tech affinity. Needs direct contact, cultural tips and no hidden costs. "Please don't bother me with complicated technology."
- Marcus, 44 — sales manager, very tech-savvy, expecting a child. Wants contactless check-in, room service without calling, and family-friendly options.

We mapped about 30 jobs-to-be-done across four clusters (food & beverage, relax & leisure, concierge, explore & move) and a stakeholder map from guests to housekeeping, IT and booking platforms.
Scope
In: check-in/out, activity booking, personalised recommendations, restaurants, transport, billing, local events. Out: flight and hotel booking, real payments, VIP status — valuable, but not needed to prove the concept.


AI where it adds value
We didn't build a chatbot. Each agent does one job the guest benefits from, with business rules written into the prompts:
| Agent | Job |
|---|---|
| Concierge | Assigns a room at check-in and upgrades when possible (penthouse → suite → deluxe …) |
| Activity advisor | Picks five activities that fit the guest's age, accessibility needs and particularities — never invents activities |
| Booking coordinator (my crew) | Expands the stay into dates and returns only time slots that don't overlap existing bookings |
| Gastronomy | Recommends one in-hotel venue based on preferences, diet and opening hours — no bars for under-18s |

A local model instead of a paid API. The agents run on Llama 3.1 via Ollama. Small local models are less reliable, so we controlled them with strict JSON output contracts and explicit rules — and did data fetching deterministically in Python before handing context to the model.
Planned 16 agents, shipped 4
The concept planned five crews with around 16 agents. We shipped four single-agent crews that work end to end. I merged the "explore" and "relax" crews into one activity crew myself — fewer, better agents beat many half-working ones.
My part
- Set up the repository and project structure for app and backend.
- Built the booking coordinator (utility) crew and the explore crew, then merged explore and relax into the activity crew.
- Set up the database and the room and activity APIs.
- In the app: the home screen (weather, appointments, recommendations), appointment details and cancellation, the profile area and the custom navigation bar.
- Incorporated feedback from our user testing into the final build.
What I learned
AI features are product features: they need a clear job, guardrails and a fallback. And with four people, issues, branches and pull requests weren't bureaucracy — they were how we kept a shared picture of the product.