Overview
What the Agent Does
- Ingests overnight reports: pulls emails from a dedicated operations inbox, pulling out PDF, Excel, and ZIP attachments as well as body-only narrative reports.
- Extracts across formats: branches by file type (PDF via pdfplumber, Excel via openpyxl/pandas, Word via mammoth, plain-text email bodies) into one normalized structure.
- Classifies and routes per property: deduplicates by content hash, then uses an LLM classification step to attribute every file to the correct hotel.
- Runs deterministic audit checks: verifies occupancy math, ADR/RevPAR calculations, and flags every cash adjustment or comp room against a strict two-folio policy, before any AI summarization touches the numbers.
- Writes the narrative briefing: an AI writer agent drafts the human-readable summary only after the deterministic audit has already produced the hard numbers, so figures in the briefing are computed, never generated.
- Delivers and tracks: renders the briefing to HTML, emails it out, and logs the run so every morning's output is auditable against what was actually received.
Infrastructure I Own
- Self-hosted orchestration on a Hetzner VPS, running the workflow engine that executes and schedules every agent.
- Reverse Cloudflare Tunnel in front of it, with Cloudflare Access gating every request: no exposed ports, token-based API access, and full audit logging of who touched what.
- Separate dev and prod environments, with schedules disabled in dev so testing never triggers a real morning briefing.
- Git as the single source of truth for every script, flow, and resource definition. Nothing is hand-edited in the production UI.
- CI/CD via GitHub Actions: pushes to the dev branch deploy manually for testing; merges to main authenticate through the same Cloudflare Access tunnel and auto-deploy straight to production.