Borrowing it
Nothing to install: this file belongs to workfromrome/HotelAI. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/workfromrome/HotelAI/main/AGENTS.mdgit clone --depth 1 https://github.com/workfromrome/HotelAIWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/workfromrome/hotelai/agents-md)<a href="https://agentmods.dev/instructions/workfromrome/hotelai/agents-md"><img src="https://agentmods.dev/badge/instructions/workfromrome/hotelai/agents-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/workfromrome/hotelai/agents-md"><img src="https://agentmods.dev/badge/instructions/workfromrome/hotelai/agents-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.03421 | $0.03421 |
| Opus 5.5 | $0.01368 | $0.01368 |
| Sonnet 5.5 | $0.00684 | $0.00684 |
| Haiku 4.5 | $0.00342 | $0.00342 |
Grade A, and why
HotelAI AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 136 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AGENTS.md
System overview
src/ingestion/: PDF loading/segmentation and structured Groq/Gemini-reviewed extraction.pdf_parser.py: pdfplumber-based hotel-block segmentation, OCR cleanup, and word bounding boxes (used as the reference.wordssource for the visual-ratings fallback).pymupdf_parser.py: font-size-aware header extractor; canonicalnome/localitasource forstructured_extractor. The two flat exclusion word-lists (_EXCLUDED_HEADER_TEXT,_EXCLUDED_BADGE_WORDS) live as one-word-per-line.txtfiles inpdf_artifacts/, not as Python constants — edit those files to add/remove excluded words, no code change needed._STOP_MARKERS(regex) and_LIGATURE_GLYPHS(character-substitution rule) stayed in code: they're parsing logic, not data.structured_extractor.py: canonicalHotelRecordextraction and CSV/JSONL export.
src/search/: embeddings, ChromaDB indexing, hybrid retrieval and Markdown formatting.vector_store.py:GeminiEmbedder, offline embedder and persistent Chroma index.build_index_from_csvreadshotels_data.csvback viastructured_extractor.read_csvand is the real Part-1-to-Part-2 bridge —build_indexitself takes only records, no PDF blocks, since the document text embedded per hotel isrecord.source.raw_text, already present in the CSV'ssourcecolumn.retriever.py: maximum-five-result search and ranking.
src/rag/rag_engine.py:RAGEngine/answer_queryconversational synthesis overHotelRetrieverresults; tries Groq first, falls back to Gemini, then to the fixed fallback stringFALLBACK_MESSAGE. Not yet wired intomcp_server.src/mcp_server/server.py: canonical FastMCP server andsearch_hotels(query)tool. Does not yet expose the RAG engine's natural-language synthesis, only raw retrieval.src/api/main.py: FastAPI HTTP layer for the React frontend —POST /api/chat(RAGEngine.answer_query),GET /api/hotels(readssettings.hotel_records_path, i.e.data/processed/hotels_data.jsonl, the canonicalHotelRecord-schema export — not the legacyhotels.jsonl),GET /api/health(Chroma connectivity/count + Groq/Gemini key presence). Retriever/RAG-engine access is viaDepends(get_retriever)/Depends(get_rag_engine), overridable in tests; the real Chroma index is only built in thelifespanstartup hook, so tests never touch it unless they opt in. CORS is open tohttp://localhost:5173(Vite dev server) only. Run:uvicorn api.main:app --reload --port 8000(PYTHONPATH=src, from repo root).frontend/: Vite + React chatbot UI (dark theme, ChatGPT/Claude-style layout). Talks to the backend via/api/*, proxied tolocalhost:8000byvite.config.jsin dev — CORS is also configured on the backend as a second line of defense.src/components/:Sidebar.jsx(status, 5 quick queries, hotel catalog accordion),ChatArea.jsx(hero view, message bubbles, page-range citation badges, typing indicator),InputBar.jsx.src/styles/app.cssholds the whole design (CSS variables for the zinc/emerald palette). No markdown renderer is wired in — assistant answers render aswhite-space: pre-wrapplain text, so literal**bold**/table-pipe markup from the LLM is visible as-is; addreact-markdownif that needs to render properly. Run:cd frontend && npm install && npm run dev(port 5173)..claude/launch.jsonhas afrontendconfig for thepreview_starttool.src/hotelai/: canonicalsettings/Settings(config.py),HotelRecordschema (schemas.py), centralized logging setup (logging_setup.py),prompts/(LLM prompt text as.mdfiles plusload_prompt(name), see line below), andserver.py(deprecated compat wrapper, see line below). Renamed fromfde_hotel_rag; the project folder itself is still namedfde_hotel_ragpending a manual rename by the user (see Known gotchas). Formerly also heldextractors//storage/subpackages — deleted, they contained no source, only stale__pycache__.src/hotelai/prompts/: all LLM prompt text lives here as.mdfiles, not inline in Python —load_prompt(name)reads<name>.mdand strips it; callers.format(...)it themselves when the template has placeholders (conversational_rag.mdtakes{fallback_message},structured_review.mdtakes{example}, the dynamically-builtHotelReviewJSON sample).visual_ratings.mdhas no placeholders. Editing a prompt's wording only ever means editing the.mdfile.scripts/run_pipeline.py: primary ingestion entry point;--offlineskips API calls and indexing.tests/: unit/integration-style tests for parsing, extraction, Chroma, retrieval, MCP and the FastAPI layer (test_api.py, 100% mocked viaapp.dependency_overrides).scripts/compare_pdf_extractors.py: comparison-only PyMuPDF extraction benchmark.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 136 lines · 3,421 tokens per session scan A 8dc3e1215a00
HotelAI AGENTS.md is an instructions file published in the GitHub repository workfromrome/HotelAI (0 stars, last pushed 2mo ago), licensed MIT. It adds 3,421 tokens to every session, about $0.0137 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
HotelAI AGENTS.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| HotelAI AGENTS.mdworkfromrome/HotelAI | Instructions file | 0 | 2mo ago | MIT | A | 3,421 | Codex, OpenCode |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | yesterday | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |