Back to Work

MushRoom

Property Management Made Simple

MushRoom is software the studio built and operates for itself. It is not a SaaS we sell seats for — it is the proof point we point to when clients ask “can a single senior engineer ship and run something real?” Multi-tenant on AWS, AI-integrated, deployed daily, used in production. The same approach is available for client engagements where the shape fits.

app.mushroom — bookings
MushRoom dashboard showing the bookings list with guests, check-in and check-out times, and per-booking revenue across November and December
The live MushRoom bookings dashboard — multi-property, multi-currency, running in production.

Simple. Mobile. Powerful.

Mobile-FirstBuilt for how you actually work. Check bookings, respond to guests, and manage properties from your phone.
Radically SimpleNo clunky menus. No confusing workflows. Every feature is exactly where you expect it to be.
Only What You NeedMushRoom is modular. Turn on the features you use, leave off what you don't.

What’s running in production

Unified Calendar
Airbnb Integration
Digital Check-In
Invoicing
Profit & Loss
Tax Calculation
Cleaning Coordination

What multi-tenant looks like

Multi-CurrencyEUR, USD, GBP, HUF, and more. Work in the currencies your business uses.
Role-Based AccessAdmins, managers, and staff with appropriate permissions for each role.
Multi-PropertySwitch between properties instantly. Manage your entire portfolio from one place.

Where the AI integration sits

MCP server with OAuth 2.1

Claude Desktop and similar AI clients connect via PKCE auth, not by pasting data into a chat window. Hierarchical mcp:read and mcp:write scopes; refresh tokens rotate on every exchange.

Eleven read tools, property-scoped

list_bookings, financial_summary, search_guest, list_tax_periods, and the rest. The AI only sees what its operator can see — multi-tenant boundaries enforced per call, not at the prompt layer.

Seven write tools, scope-gated

set_tax_target, create_expense, update_booking_checkin_time. mcp:read tokens cannot mutate; requireWriteScope() throws before the row is touched. Auto-generated rows stay read-only.

Per-request user context via AsyncLocalStorage

Every tool handler reads { userId, role }from an ALS context bound at request entry. Concurrent AI clients cannot see each other’s data, and tools cannot run without a user bound.

See it running

MushRoom runs live in production every day at mushroom.avantmedia.uk. It is login-gated — the app holds real, multi-tenant client data (operators’ bookings, guests, and finances), so the studio does not expose tenant data publicly. But the running deployment is right there to see: the live sign-in confirms the “deployed daily, used in production” claim is a real product, not a mockup — something you can check for yourself without contacting us first.

See MushRoom running →

The same architecture, AI integration, and deploy practice the studio brings to client work — visible in something the studio runs itself.