======================================== JRD WEBSITE - WORLD'S INN ======================================== CLAUDE SESSION INSTRUCTIONS: 1. Read this entire file first 2. Check the PENDING TASKS section below for work to do 3. Read the relevant source files before making changes 4. After finishing work, deploy using the deploy command below 5. Update this README: mark completed tasks as DONE, add any new info 6. User will tell you what to work on - if nothing specific, work through PENDING TASKS in order THIS FILE IS ALSO AVAILABLE AT: https://stayatworldsinn.com/README.txt (From any computer, tell Claude: "fetch https://stayatworldsinn.com/README.txt and read the project details") PROJECT LOCATION: C:\Users\THINKBOOK\jrdWebsite\ LIVE SITE: https://stayatworldsinn.com (Netlify: bright-meerkat-3ae01a.netlify.app) ADMIN DASHBOARD: https://stayatworldsinn.com/admin.html Logins: "aaa" (displays as "jrd"), "jm" (displays as "jason") Access: Double-click the logo on the main site, or click the period at end of copyright in footer ---------------------------------------- PENDING TASKS (work through these): ---------------------------------------- - Twilio SMS integration: REPLACED BY TELEGRAM (see completed tasks below). Telegram bot @AyeOfRaBot handles all notifications now. Twilio no longer needed. - Add more team members to Telegram notifications: Have them message @AyeOfRaBot on Telegram, then add their chat ID to TELEGRAM_CHAT_IDS array in message-webhook.js and followup-check.js. Current: Doug (7703802115). - MARKETING & DIRECT BOOKING STRATEGY (next session): REMIND USER: We planned to work on Google Business Profile + Instagram content. 1. Google Business Profile Setup - Claude writes all content (business description, property descriptions, FAQs) - User creates the profile manually (Google requires human verification) - Goal: catch people searching "World's Inn" or "stayatworldsinn" by name - Free, ~30 min of user time to set up 2. Instagram Content Pipeline - User drops photos into a Desktop/Instagram folder - Claude writes batches of 10-20 captioned posts (seasonal, property highlights, local attractions, guest-type appeals) - User loads captions into a scheduling tool (Later, Buffer, or Meta Business Suite) - Do this monthly — turns ongoing posting into a batch job - Track what's been posted in this README so we don't repeat 3. Repeat Guest Conversion (highest ROI) - Create in-cabin card/flyer: "Book direct at stayatworldsinn.com and save" - QR code linking to the site - Post-stay email via Hospitable mentioning direct booking option - Goal: shift 10-20% of repeat bookings off Airbnb (saves ~8% per booking) 4. AUTOMATION IDEA (explore later): - Build a script/program that runs on a schedule, opens a Claude session automatically, passes instructions (e.g., "read README, generate this month's Instagram posts, save to folder"), and executes without manual interaction. - Could also pre-load user preferences/approvals so Claude can act autonomously. - Investigate Claude API + scripting (Node.js or Python) to make this happen. - This would let marketing tasks run in the background without starting a session manually. Strategy notes: - Do NOT spend money on Google Ads or paid social — can't compete with Airbnb/VRBO ad budgets - Do NOT invest in SEO blog content — poor effort-to-return for portfolio this size - Airbnb stays as primary discovery engine; direct site is for repeat guests + referrals - Instagram is for credibility, not direct bookings — supports all channels COMPLETED TASKS: - PT Devices cistern integration (DONE) - Hospitable booking integration (DONE) - Admin dashboard layout redesign (DONE) - Task archive system with notes (DONE) - Mobile responsive improvements (DONE) - Hidden admin link on main site (DONE) - Netlify CLI deployment setup (DONE) - Admin login changed to "aaa" + second login "jm" (DONE) - Task delete option in active + archive views (DONE) - Task user tracking: who added, who completed (DONE) - Task date tracking: created date + completed date (DONE) - Ambient Weather integration with serverless function (DONE) - Added 6244 and General tabs (DONE) - Swapped layout: tasks left, booking right (DONE) - Seam smart lock integration (DONE) - Cloud task storage with Google Sheets (DONE) - Task search functionality (DONE) - Property inventory tracking system (DONE) - Bryson City properties: FC1, FC2, FC3, FC4 added (DONE) - Location headers for Morganton/Bryson City groupings (DONE) - Hidden Hill Wedding Venue added to Nearby Attractions (DONE) - AI Message Monitor "Eye of Ra" - full system built (DONE) - Fox Creek cabin data: full inventory + tasks + AI properties loaded (DONE) - Inventory Status/Condition column added to all properties (DONE) - New inventory categories: Tech/Security, Water Infrastructure (DONE) - Bulk inventory insert API action added (DONE) - FC panel headers updated with addresses: 33, 69, 85 Fox Creek Rd (DONE) - Telegram bot @AyeOfRaBot replaces Twilio for notifications (DONE) * Bot token: 8394251464:AAHFiEna7pcOhmyxbqzXqMBJjWRMCjs0HLE * Doug chat ID: 7703802115 * Webhook: https://stayatworldsinn.com/.netlify/functions/telegram * Features: - Real-time notifications for all guest messages - "Approve & Send" button: sends AI response as-is - "Edit & Send" button: prompts you to type corrected response, sends to guest AND teaches AI - "Mark Done" button: clears action-needed followups - "Teach AI" button: tells the AI what it got wrong (adds guideline to knowledge base) - Reply to any notification to message the guest directly via Hospitable - /start command shows bot instructions - All corrections via Edit & Send and Teach AI are saved to Google Sheets AI_Responses as guidelines, so the AI learns permanently from host feedback * Files: telegram.js (webhook handler), message-webhook.js (sends notifications), followup-check.js (sends followup alerts) * google-sheets.js: added resolveFollowup action for Telegram "Mark Done" button ---------------------------------------- TO DEPLOY CHANGES: ---------------------------------------- cd C:\Users\THINKBOOK\jrdWebsite && netlify deploy --prod --dir . --functions netlify/functions --skip-functions-cache IMPORTANT: Always use --skip-functions-cache or the serverless functions may not deploy. ---------------------------------------- LIVE INTEGRATIONS: ---------------------------------------- 1. PT DEVICES (Cistern - CONNECTED) - API: https://api.ptdevices.com/token/v1/devices - Token: zDag9otJLhRGg1JJTSi9k78oXAJAqjA27CMSPZknMiNwtGaAWzKBE8SLx3A4 - Device: 6055F968E034 (serves both 6260 & 6280) - Tank: 5000 gallons - Serverless function: netlify/functions/pt-devices.js 2. HOSPITABLE (Bookings - CONNECTED) - API: https://public.api.hospitable.com/v2/ - Token: JWT in netlify/functions/hospitable.js - Properties mapped to: 6913, 6883, 6260, 6834, 6280 - Returns: reservations with guest names, dates, phone numbers - Webhook: message.created events sent to message-webhook.js - Serverless function: netlify/functions/hospitable.js 3. AMBIENT WEATHER (Weather Station - CONNECTED) - API: https://api.ambientweather.net/v1/devices - API Key: a29db5b0343c4336b6798b22bc7929c14f04803406a4448d8588997340de8236 - Application Key: 825a6501329f4d9e9530ca4efe06946fa8df7b30ac474de7a605c7b6895cca07 - Station: "6260" at 6260 High Mountain Rd - Data available: temp, humidity, wind, rain, barometric pressure, indoor temp - Showing: temperature, wind speed, rain 24h, rain 7d - Serverless function: netlify/functions/ambient-weather.js 4. SEAM (Smart Locks - CONNECTED) - API: https://connect.getseam.com - API Key: seam_38GHpSvb_4HPQgm5vZmsZySofRaMpTvcr - Account: "morganton" - Locks detected: 6 total - Lock mapping: * 6913: "Front Door 6913", "Side Door 6913" * 6883: "Front Door", "Side Door" (no number in name) * 6260: "Schlage Door 6260" * 6834: "Schlage Door 6834" * 6280: No smart lock - Data: lock status, battery %, last activity time - Serverless function: netlify/functions/seam.js 5. FLO BY MOEN (Water Monitoring - NOT CONNECTED) - No official API, needs community Python library - Status: Setup required 6. GOOGLE SHEETS (Task, Inventory & AI Storage - CONNECTED) - Spreadsheet ID: 1lgLIwf-Z7hW8BWNaj0hQ9NW9FL9-S5htNQNovO-AMvg - Service Account: worldsinn-tasks@powerful-vine-485419-k0.iam.gserviceaccount.com - Project: powerful-vine-485419-k0 (Google Cloud) - Tabs: * "Tasks" - active property tasks * "Archived" - completed tasks with notes * "Inventory" - property items/equipment (with status/condition tracking) * "AI_Responses" - AI knowledge base (FAQs, restaurants, activities, escalation triggers, guidelines) * "AI_Properties" - property details for AI responses * "AI_Followups" - tracks urgent messages waiting for team action - Serverless function: netlify/functions/google-sheets.js 7. AI MESSAGE MONITOR "EYE OF RA" (Guest Messaging - CONNECTED) - See dedicated section below for full details 8. TELEGRAM BOT (Team Notifications - CONNECTED) - Bot: @AyeOfRaBot ("EyeOfRa") - Bot Token: 8394251464:AAHFiEna7pcOhmyxbqzXqMBJjWRMCjs0HLE - Webhook: https://stayatworldsinn.com/.netlify/functions/telegram - Team members: Doug Belknap (chat ID: 7703802115) - Replaces Twilio SMS — free, instant, two-way - Notification types: * Auto-Replied (green check): AI handled it, "Teach AI" button if it was wrong * Action Needed (warning): AI acknowledged guest, team must act. "Mark Done" + "Teach AI" buttons * Approval Needed (red): AI drafted response, needs OK. "Approve & Send" + "Edit & Send" buttons - Button actions: * "Approve & Send" — opens link to send AI response as-is * "Edit & Send" — prompts for corrected text, sends to guest AND saves correction as AI guideline * "Mark Done" — marks followup as resolved in Google Sheets * "Teach AI" — prompts for what the AI got wrong, saves as permanent guideline in knowledge base - Reply to any notification to message the guest directly via Hospitable - Follow-up timer alerts also sent to Telegram (alongside email) - /start command shows bot usage instructions - All corrections (Edit & Send, Teach AI) saved to AI_Responses tab as guidelines - Serverless function: netlify/functions/telegram.js - Also wired into: message-webhook.js (sends notifications), followup-check.js (sends followup alerts) - To add team members: have them message @AyeOfRaBot, get their chat ID from Telegram getUpdates API, add to TELEGRAM_CHAT_IDS in message-webhook.js and followup-check.js ---------------------------------------- AI MESSAGE MONITOR - "EYE OF RA" ---------------------------------------- Automated system that monitors Hospitable guest messages, drafts AI responses, and manages the full communication loop. Runs entirely on Netlify serverless functions -- no local computer needs to be running. HOW IT WORKS: 1. Guest sends a message through Airbnb/VRBO/etc. 2. Hospitable receives it and fires a webhook to our server 3. AI (Claude) reads the message, checks the knowledge base, and drafts a response 4. Based on the situation, one of three things happens: a. AUTO-REPLY: AI sends the response to the guest AND notifies the team (email + Telegram) - Email subject: [Auto-Replied] ... - Telegram: green check notification with "Teach AI" button - Used for: routine questions (firewood, directions, WiFi, check-in times, etc.) b. AUTO-REPLY + ACTION NEEDED: AI sends an acknowledgment to the guest AND alerts the team - Email subject: [ACTION NEEDED] ... - Telegram: warning notification with "Mark Done" + "Teach AI" buttons - Used for: urgent issues (water out, something broken, stray animal, etc.) - Guest gets immediate reassurance; team gets alerted to handle the actual issue c. APPROVAL REQUIRED: AI does NOT send anything; notifies the team to review - Email subject: [Approval Needed] ... (with "Approve & Send" link) - Telegram: red notification with "Approve & Send" + "Edit & Send" buttons - Used for: refund requests, complaints, legal mentions, anything the AI isn't sure about FOLLOW-UP TIMER: - When "ACTION NEEDED" messages are logged, a scheduled function (followup-check.js) runs every 30 minutes on Netlify's servers - If no team response after 1 hour, it automatically sends the guest a follow-up: "Just wanted to follow up and let you know our team is actively working on the situation..." - Team gets an email AND Telegram alert that the follow-up was sent - Tracked in Google Sheets "AI_Followups" tab KNOWLEDGE BASE (editable in Google Sheets): - AI_Responses tab: FAQs, restaurant/activity recommendations, escalation trigger words, response guidelines, and host preferences - AI_Properties tab: property details (beds, baths, amenities, special notes) - To add/edit: open the Google Sheet and modify rows directly. Changes take effect immediately with no redeployment needed. - Categories in AI_Responses: * "faq" - question and answer pairs (check-in times, firewood, pool heating, cancellation, etc.) * "restaurant" - local restaurant recommendations with descriptions * "activity" - nearby activities and attractions with drive times * "escalation" - trigger words that flag messages for team review (refund, complaint, damage, etc.) * "guideline" - host preferences and corrections the AI follows (tone, 4WD advice, distance handling, etc.) * "config" - system settings like response style KEY RULES THE AI FOLLOWS: - Never reveals it's AI -- always responds as the host - Uses guest's first name when available; warm greeting without name if not - For distance questions, uses general knowledge for estimates; falls back to "25 minutes up the mountain from downtown Morganton" if unsure - Never says "check Google Maps" or "let me check with the team" for simple questions - Never promises refunds, discounts, or compensation - Cancellation policy: free cancellation up to 48 hours before check-in - 6834 (Cozy Cabin) has a steeper driveway -- recommends 4WD if available SERVERLESS FUNCTIONS: - message-webhook.js: receives Hospitable webhooks, calls Claude API, sends email + Telegram, auto-responds - message-approve.js: handles "Approve & Send" button clicks from emails - followup-check.js: scheduled function (every 30 min) checks for unresolved urgent messages, sends email + Telegram - telegram.js: Telegram webhook handler — processes button presses (done, edit, teach), forwards text replies to guests, manages AI guidelines - google-sheets.js: manages all Google Sheets operations including KB read/write, resolveFollowup for Telegram TEAM NOTIFICATIONS (dual channel): - Email: stayatworldsinn@gmail.com (via Gmail SMTP, TLS port 465, app password: "Eye of Ra") - Telegram: @AyeOfRaBot (bot token in message-webhook.js, followup-check.js, telegram.js) - Both channels fire for every notification — team gets email AND Telegram simultaneously API KEYS USED: - Anthropic (Claude): stored in message-webhook.js - Hospitable: JWT token stored in message-webhook.js and message-approve.js - Gmail app password: stored in message-webhook.js and followup-check.js TELEGRAM NOTIFICATIONS (replaces Twilio — free, instant, two-way): - Bot: @AyeOfRaBot on Telegram - All guest message notifications sent to Telegram alongside email - Notification types match email: Auto-Replied, Action Needed, Approval Needed - Interactive buttons on each notification: * "Approve & Send" — sends AI response to guest as-is * "Edit & Send" — prompts for corrected response, sends to guest AND teaches AI * "Mark Done" — clears action-needed followups * "Teach AI" — tells the AI what to do differently (saves as permanent guideline) - Reply to any notification message to text the guest directly via Hospitable - Follow-up alerts also sent to Telegram (in addition to email) - All AI corrections saved to Google Sheets AI_Responses tab as guidelines - To add team members: have them message @AyeOfRaBot, then add their chat ID to TELEGRAM_CHAT_IDS in message-webhook.js and followup-check.js ---------------------------------------- ADMIN DASHBOARD FEATURES: ---------------------------------------- - Top overview row: cistern level (left), booking stats (center), weather (right) - Property tabs: 6913, 6883, 6260, 6834, 6280, 6244 | FC1, FC2, FC3, FC4, General - Each property panel header shows: property name (left), lock status (right) - Lock status format: "Door: Battery% Status at Time" - Panel layout: task list (left 2/3) + booking info (right 1/3) - 6244 and General tabs: tasks only (no booking info) - Task system: add tasks, archive with notes, delete tasks, view archive history - Tasks track who added them and who completed them (based on login) - Tasks show created date and completed date - Delete option on both active tasks and archived items - Tasks stored in Google Sheets - permanent, searchable, unlimited storage - Search box in header - searches all tasks and archives across all properties - Auto-migrates existing localStorage tasks to cloud on first login - Live data: PT Devices cistern %, Hospitable booking/guest info, Ambient Weather, Seam locks - Property Inventory: below tasks/booking for each property - Bryson City properties: FC1 (33), FC2 (69), FC3 (85) with booking panels + full inventory, FC4 as vacant lot (tasks only) - README link in footer for quick access to project documentation * Track items by category: bedrooms, kitchen, HVAC, plumbing, tech/security, exterior, water infrastructure, etc. * Fields: item name, brand, model, size/specs, purchase date (shows age), status/condition, notes * Add/edit/delete items via modal form * Items grouped by category with sortable tables * Stored in Google Sheets "Inventory" tab ---------------------------------------- WEBSITE FEATURES: ---------------------------------------- - Landing page with rotating hero images (from images/splash/) - Property cards grouped by location (Morganton, Bryson City) with subtle headers - 5 Morganton properties + 3 Fox Creek (Bryson City) properties - Individual property pages with carousels + galleries - Hospitable booking widgets (payments handled by Hospitable) - Nearby Attractions section (restaurants, breweries, activities with links) - Hidden Hill Wedding Venue in its own "Venues" category - FAQ section with expandable answers (fire, firewood, roads, pool heating, WiFi, etc.) - Mobile responsive ---------------------------------------- KEY FILES: ---------------------------------------- index.html - Main landing page admin.html - Admin dashboard css/style.css - Main site styles css/property.css - Property page styles css/admin.css - Admin dashboard styles js/main.js - Nav scroll + FAQ accordion js/carousel.js - Photo carousel js/admin.js - Admin login + tabs + tasks + API data netlify.toml - Netlify config (includes scheduled function for followup-check) netlify/functions/ - Serverless API proxy functions pt-devices.js - PT Devices cistern API hospitable.js - Hospitable bookings API ambient-weather.js - Ambient Weather station API seam.js - Seam smart locks API google-sheets.js - Google Sheets storage API (tasks, inventory, AI knowledge base) message-webhook.js - AI message monitor: receives webhooks, drafts responses, sends email + Telegram message-approve.js - Handles approval clicks from notification emails followup-check.js - Scheduled function: checks for unresolved urgent messages every 30 min telegram.js - Telegram bot webhook: handles button presses, reply forwarding, AI teaching knowledge-base.json - Fallback AI knowledge base (used if Google Sheets fetch fails) tasks.js - (legacy JSONBin - no longer used) images/splash/ - Hero slideshow images images/properties/ - Property photos by address properties/ - Individual property pages + galleries ---------------------------------------- PROPERTY SPECS: ---------------------------------------- MORGANTON, NC: 6913 = The Barndominium: 5 Beds, 5 Baths, Sleeps 14 6883 = Deck with View: 6 Beds, 3 Baths, Sleeps 14 6260 = Mountain Views: 3 Beds, 2 Baths, Sleeps 6 6834 = Cozy Cabin: 3 Beds, 2 Baths, Sleeps 6 6280 = Stunning Views: 1 Bed, 1 Bath, Sleeps 2 BRYSON CITY, NC (Fox Creek Rd): FC1 = 33 Fox Creek Rd, Cabin 1: 2 Beds, Sleeps 4 FC2 = 69 Fox Creek Rd, Cabin 2: 2 Beds, Sleeps 4 FC3 = 85 Fox Creek Rd, Cabin 3: 2 Beds, Sleeps 4 FC4 = Fox Creek 4: Vacant Lot FOX CREEK PORTFOLIO OVERVIEW: - Type: Creekside mountain STR cabins - Shared traits across all 3 cabins: * Hot tubs, propane fireplaces, Starlink internet, streaming TVs * Washer/dryer, full kitchens, outdoor seating & fire pits * Exterior security cameras (Blink), propane service via ThompsonGas * Shared well water system (well + storage tanks) - Propane: 120 gal tanks per cabin, monitored by ThompsonGas - Water: Shared system with upper tank (~1,500 gal), pressure tank (Well-X-Trol WX-250), pump controller (Pumptec 580-002-0600), and storage canister (~1,200 gal) - Trash: 2 shared cans at entrance FC1 (33 Fox Creek) KEY EQUIPMENT: - HVAC: Trane 2TWR1018A1000AB (2003) - END OF LIFE, replace soon - Water Heater: Rinnai V65i tankless propane (est. 2014-2016) - Fridge: GE GTE18LGHBRBB (Oct 2022) - Good - Hot Tub: Viking III (round) - TV: 33" Roku (upgrade later) - Thermostat: Honeywell (consider Nest upgrade) FC2 (69 Fox Creek) KEY EQUIPMENT: - HVAC: Goodman GLZS4BA1810AA - Good (modern) - Water Heater: Rinnai V65i tankless (serial CA056629) - Fridge: Whirlpool ET8CHMXKB0 (2004) - REPLACE SOON - Hot Tub: Viking III - TV: 40" - Thermostat: Honeywell Home smart FC3 (85 Fox Creek) KEY EQUIPMENT: - HVAC: Trane TWN018C100B4 (2002) - END OF LIFE, replace soon - Water Heater: Tank heater in basement (model unknown) - Fridge: Whirlpool ET8CHMXKB0 (2004) - REPLACE SOON - Hot Tub: Balboa Water Group (square, 10+ yrs) - TV: 40" - Thermostat: Honeywell (older) - Locked basement: needs access GLOBAL UPGRADE PLAN (all Fox Creek cabins): High Priority: Replace FC1 & FC3 HVAC, replace 2004 fridges, install smart locks, access FC3 basement, map water filtration system Medium: Propane grills, 4 Adirondack chairs each, bed skirts, white noise machines, smart thermostats, upgrade FC1 TV Low/Value Add: String lights, landscape privacy, outdoor games, remove FC3 satellite dish ---------------------------------------- HOSTING: ---------------------------------------- Hosting: Netlify (Personal plan - $9/mo, 1000 credits) with serverless functions Domain: stayatworldsinn.com (GoDaddy) DNS: A record @ -> 75.2.60.5 Booking/Payments: Hospitable (embedded iframe widgets) CLI: Netlify CLI installed globally (npm) Site linked: netlify link --name bright-meerkat-3ae01a ---------------------------------------- ACCOUNTS (all using stayatworldsinn@gmail.com): ---------------------------------------- - Netlify: stayatworldsinn@gmail.com (hosting + serverless functions) - Google Cloud Console: stayatworldsinn@gmail.com (project: powerful-vine-485419-k0) - Google Sheets: stayatworldsinn@gmail.com (task + AI knowledge base storage) - Anthropic: stayatworldsinn@gmail.com (Claude API for AI message monitor) - Seam: "morganton" account (smart locks) - Hospitable: (booking management + message webhooks) - Ambient Weather: (weather station) - PT Devices: (cistern monitoring) - GoDaddy: (domain registration) - Telegram: @AyeOfRaBot (team notifications — replaces Twilio, free) Note: API keys/tokens are stored directly in the serverless functions in netlify/functions/. If a key needs to be rotated, update the corresponding .js file and redeploy. ========================================