Skip to content
AA
All projects
2026/Team captain · CMSE 322

LuxeStay

A full-stack hotel booking platform with a locally run AI assistant and a recommendation engine, built end to end with my team.

LuxeStay is a Booking.com-style reservation platform our four-person team built for CMSE 322 (Software Engineering) at EMU. The team carried much of the software-engineering process: UML and data-flow diagrams, plus the architecture design. Drawing up the functional requirements, turning all of it into working software, and deploying it on Vercel came down to me, from the implementation to the algorithms behind it: the search, booking, and payment flows, the three role dashboards, the grounded Qwen 2.5 assistant, and the custom KNN recommender, all wired into real data rather than bolted on.

LuxeStay home page with a 'Discover Your Perfect Stay' hero and hotel search bar
Assistant
Qwen 2.5 7B
Recommender
KNN + haversine
Scope
Engineering, end to end
Role
Team captain / developer
Context
CMSE 322 · Eastern Mediterranean University
Outcome
Delivered, AI-native

Engineering highlights

  • Wired a locally run Qwen 2.5 7B assistant (served through Ollama) into the live catalog, grounding every reply in real hotel, room, and price data so it never invents inventory, with conversation state kept in Postgres.
  • Built the recommendation engine from first principles: KNN over great-circle haversine distance, re-ranked by content-based signals (amenity Jaccard similarity, price-band and rating match) blended across the user's live location, bookings, and recent searches.
  • Handled cold start on purpose, falling back to a transparent popularity model (review volume, then rating) for new and anonymous visitors instead of forcing collaborative filtering onto sparse data.
  • Built the whole stack under the AI: a booking funnel with double-booking protection, a simulated checkout, bcrypt and TOTP two-factor auth with recovery codes, and guest, manager, and admin dashboards on Next.js 16, Prisma, and PostgreSQL.

Owned the full engineering top to bottom, from the Prisma data model and auth to a grounded LLM assistant and a hand-built recommender, as one coherent system, while captaining the team.

  • The recommender was a design decision, not a default. With a roughly 30 hotel Cyprus catalog and no click-through labels, learned-to-rank and collaborative filtering had nothing to train on, so KNN plus content signals was the honest fit, with learned embeddings noted as the next step at real scale.
  • Grounding the assistant mattered more than model size. A 7B model drifts, so I pinned the reply language, kept temperature low, pre-computed the cross-catalog answers it tends to get wrong, and added guardrails against system-prompt leakage and against sending private account context to any non-local model endpoint.
  • Three role tiers share one codebase. Guests book and review, managers run their own listing and pricing dashboard, and admins oversee accounts and reassign hotels between managers, with login rate limiting and password reset rounding out the auth surface.

Gallery

LuxeStay hotel listing results with map and filters
LuxeStay hotel detail page with rooms and amenities
LuxeStay booking page selecting a room type and stay dates
LuxeStay confirm-and-pay page with booking summary and payment form
LuxeStay grounded AI assistant answering with real hotel data
LuxeStay manager dashboard for listings and pricing
LuxeStay admin dashboard overseeing accounts and hotels
LuxeStay interface screenshot
  • Qwen 2.5 (Ollama)
  • RAG
  • KNN
  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • PostgreSQL
  • Prisma
  • Vercel