Client work / Horan Technologies
Horan HMS
A hotel management system for mid-range hotels in Ethiopia that covers rooms, bookings, check-in, housekeeping, billing and reports in English and Amharic. Staff can also ask a Telegram assistant questions by text or voice, and guests can book and pay for a room without leaving Telegram.
Wrote the backend: 97 API endpoints, 16 data models and about 580 automated tests.








01 / 08Owner dashboard with revenue, occupancy and recent activity
Overview
Horan HMS was built by Team Alpha during the Horan Technologies summer internship, from June to September 2026. The goal was a hotel management system for mid-range hotels in Ethiopia, where front desk work is often still done on paper, spreadsheets and phone calls.
Each staff role gets its own view. The owner and manager follow revenue and occupancy, the front desk handles bookings, check-in and check-out, housekeeping works through cleaning and maintenance tasks, and the accountant issues invoices and records payments. Every screen is available in English and Amharic, and prices follow the Ethiopian calendar, with seasonal rates for holidays like Enkutatash and Timkat.
The team split the work between the Next.js frontend and the Express backend. I built the backend: the API and database for rooms, pricing, guests, reservations, check-in and check-out, housekeeping, invoicing, audit logs, reports and notifications. I also built the Telegram staff assistant, the guest booking bot with its Mini App, and the demo data used to present the system.
Features
- Book a room with overlap checks, capacity limits and seasonal pricing worked out per night
- Check a guest in after capturing their ID, then add charges to their folio during the stay
- Check out in one step that creates the invoice, adds 10% service charge and 15% VAT, and emails a branded PDF receipt
- Split a bill across several invoices, take partial payments, or void an unpaid invoice
- Ask the Telegram assistant things like which rooms are free this weekend or what a guest owes, by text or by voice note in English or Amharic
- Let guests pick dates on a calendar in the chat, pay inside Telegram, and receive a QR code that the front desk can forward to the assistant to pull up the booking
Challenges
- The AI assistant must never do more than the person asking is allowed to do. Its 21 tools are filtered by the staff member's role before the model sees them, each tool checks the role again when it runs, and all of them call the same services as the web API so no business rule is written twice.
- Whisper transcribes English voice notes well but turns Amharic into Arabic script or nonsense. The assistant reads the language Whisper detects and sends anything that is not English to Gemini to transcribe again, then replies with an Amharic or English voice depending on the script of the answer.
- Money had to stay correct when several things happen at once. Check-out, invoicing and payments run in single database transactions, unpaid online booking holds are released on a schedule, and a payment that fails can be retried without losing the room.
- A demo needed to look like a real hotel. The seed script builds a four-star hotel in Addis Ababa with 42 rooms, over 2,600 bookings across eight months, invoices, housekeeping history and an audit trail, all driven by the Ethiopian calendar and without calling any outside service.