AI-Powered Hotel Management System with multilingual chat, automated ticketing, and real-time analytics.
- Go to script.google.com
- Create New Project
- Paste
backend.gscode - Click Deploy โ New Deployment โ Web App
- Settings:
- Execute as: Me
- Who has access: Anyone
- Click Deploy and copy the Web App URL
In Google Apps Script:
- Click Project Settings (โ๏ธ icon)
- Scroll to Script Properties
- Add these properties:
| Property | Value | How to Get |
|---|---|---|
GEMINI_API_KEY |
Your API key | Get free key |
SHEET_ID |
Your Google Sheet ID | From sheet URL |
DISCORD_REST |
Webhook URL | Create webhook |
DISCORD_HK |
Webhook URL | (Optional) |
DISCORD_MAIN |
Webhook URL | (Optional) |
DISCORD_RESV |
Webhook URL | (Optional) |
DISCORD_EMER |
Webhook URL | (Recommended) |
WEATHER_API_KEY |
API key | Free key (Optional) |
- Create new Google Sheet
- Copy the Sheet ID from URL (between
/d/and/edit) - Create these tabs:
RESTAURANT RESERVATIONSHOUSEKEEPINGMAINTENANCEHOTEL RESERVATIONSCHAT LOGINFO(optional - for extra knowledge base)
In config.js, update:
system: {
backend: {
scriptUrl: "YOUR_WEB_APP_URL_HERE"
}
}In index.html and dashboard.html, replace the API_URL:
const API_URL = "YOUR_WEB_APP_URL_HERE";- Push all files to GitHub repo
- Go to Settings โ Pages
- Source: Deploy from branch โ
main - Your site will be live at:
https://username.github.io/repo-name/
Edit config.js only:
branding: {
name: "Your Hotel Name",
tagline: "Your Tagline",
location: "Your Address",
phone: "+27 XX XXX XXXX",
email: "info@yourhotel.com",
logo: "./your-logo.png"
},
theme: {
primaryColor: "#YOUR_COLOR",
accentColor: "#YOUR_ACCENT"
}That's it! No HTML/CSS editing needed.
- โ Multilingual AI (18 languages)
- โ Voice input/output
- โ Quick action buttons
- โ Emergency alert system
- โ PWA-ready (works offline)
- โ Real-time ticket management
- โ Status updates (Open โ In Progress โ Completed)
- โ Analytics & reporting
- โ System health monitoring
- โ Filter by status
- โ Smart action detection
- โ Auto-ticket creation
- โ Discord notifications
- โ Conversation memory (sliding window)
- โ Response validation
- โ Error recovery
- Check
API_URLis correct in HTML files - Verify web app is deployed as "Anyone can access"
- Check CORS settings in Google Apps Script
- Verify
GEMINI_API_KEYin Script Properties - Check API quota at Google AI Studio
- Verify Discord webhook URLs in Script Properties
- Test webhook with:
curl -X POST -H "Content-Type: application/json" -d '{"content":"test"}' YOUR_WEBHOOK_URL
- Ensure sheet tabs have correct names (case-sensitive)
- Check status column indexes in
getStatusCol()function
To make the chat installable:
- Create
manifest.json:
{
"name": "Orion Hotel Concierge",
"short_name": "Orion",
"start_url": "./index.html",
"display": "standalone",
"background_color": "#1a365d",
"theme_color": "#3b82f6",
"icons": [
{
"src": "./orion-hotel-logo.png",
"sizes": "512x512",
"type": "image/png"
}
]
}- Create
sw.js(service worker):
self.addEventListener('install', (e) => {
e.waitUntil(
caches.open('orion-v1').then(cache =>
cache.addAll(['/', './index.html', './config.js'])
)
);
});
self.addEventListener('fetch', (e) => {
e.respondWith(
caches.match(e.request).then(response =>
response || fetch(e.request)
)
);
});Starter - R999/month
- Up to 500 conversations
- Basic analytics
- Email support
Professional - R2,499/month
- Unlimited conversations
- Advanced analytics
- WhatsApp integration
- Priority support
Enterprise - Custom
- Multi-property support
- Custom integrations
- Dedicated account manager
Demo Issues: graham@yourcompany.com
Emergency: +27 724 971 810
White-label version available for hotel partners. Contact for licensing.
- WhatsApp Business API integration
- Email notifications fallback
- Multi-property dashboard
- Guest satisfaction surveys
- Advanced ML insights
- Mobile app (React Native)
Built with โค๏ธ by Graham + Claude (Anthropic)
Powered by Google Gemini 2.0 Flash๐จ ZAR Hotel Digital Concierge SystemA "Headless" AI Concierge that connects a custom web interface to a Google Apps Script backend, using Gemini AI for intelligence and Google Sheets as a database.Current Version: v4.0 (Production Core)Live Demo: Click HereManager Dashboard: Click Hereโก Features๐ง AI IntelligencePowered by Gemini 2.0 Flash: Context-aware responses based on a custom knowledge base.Multi-Language Support: Automatically detects and speaks 14 languages (English, Zulu, Xhosa, Afrikaans, French, German, Spanish, etc.).Voice Interaction: Native Speech-to-Text and Text-to-Speech (South African/British accent profiles).๐จ Hotel Management OperationsDepartment Routing: Automatically detects intent and routes alerts to specific departments.No-Code Database: All hotel info is managed via a Google Sheet (INFO tab).Live Dashboard: A real-time HTML dashboard for owners to view logs and requests.๐ IntegrationsDiscord: Instant notifications to specific channels (Housekeeping, Maintenance, Reservations).Google Sheets: Logs every interaction, request, and booking lead.OpenWeatherMap: Provides real-time weather updates to guests.๐ ๏ธ ArchitectureThe system uses a Headless Architecture:Frontend (The Face): Static HTML/CSS/JS files hosted on GitHub Pages.Backend (The Brain): Google Apps Script acting as an API.Database (The Memory): Google Sheets (Stores Info, Logs, and Reservations).Notifications (The Nervous System): Discord Webhooks.๐ Repository Structure/
โโโ index.html # The Guest-facing Chat Application
โโโ dashboard.html # The Staff/Manager Dashboard
โโโ readme.md # This file
โโโ setup_guide.md # Detailed installation instructions
โโโ devlog.md # Development history
๐ Quick StartChat: Open index.html to start a conversation with the concierge.Dashboard: Open dashboard.html to view live data streaming from the Google Sheet.backend: All logic resides in Code.gs on Google Apps Script.๐ก๏ธ Privacy & SecurityNo Payment Processing: The bot is strictly instructed never to handle credit card data.Hallucination Control: Strict prompts ensure the bot only answers from the provided Knowledge Base.Department Isolation: Housekeeping alerts go to Housekeeping; they do not see Reservations data.