HOTEL
Install
Nothing enters without a quote.
Hotel is a terminal notebook that won't take anything from the web until someone says what it claims and quotes the sentence that says it.
Research noteA real quote is not a supported claimRead →
Reg head 7417ab65
226 rows, none edited
⌄
01

Ask a model to research something and you get fluent paragraphs with links underneath. Read the links and the paragraphs stop holding up: in a study of deployed generative search engines, only about half of the generated sentences were fully supported by the sources they cited.1 The links make an answer look sourced. They don't make it sourced.

Hotel is built around one refusal. When you or a model bring something in from the web, the next step is refused until someone writes down what the source claims and quotes the passage that says it.2 The quote isn't taken on trust either. Hotel looks for it in the text it stored, and a quote that isn't there is rejected.3

session 0f3a · room harness · librarian rulegate LOCKED R:3 (ctrl+a)
directory
inbox
harness   2 open
lobby
== ROOM: harness ==

@L0001 [ ] bounty origin=user ts=2026-10-20T23:16:01Z
  | Does Exa's search API support filtering by
  | published date?

@L0002 [.] monologue origin=user ts=2026-10-20T23:16:01Z
  | I think Exa has date filters but I am not sure.
Reg · Results · Review · Guest · Blob
R:1  lobby_edit  user   + L0001
R:2  lobby_edit  user   + L0002
R:3  retrieval   user   exa.search
     "exa published date filter"
R:4  blocked     user   exa.search
     pending [3]
> /s exa date range
annotation gate: annotate R:3 before the next call
Fig. 1 — One search is stored as R:3. The next one is refused until R:3 has a claim and a quote, and the refusal is itself a row.
02

One document that only grows

Your notes live in a single plain-text file, the lobby: questions, ideas, reasoning and logs, grouped into rooms. Nothing in it is rewritten. An entry's body can't change; you write a new entry that supersedes it, and both stay.4 A question closes only on a retrieval that has been annotated, so every closed question points at a quote.5

Underneath it, every search, fetch and model call is a row in an append-only record. That isn't a policy; the database itself refuses to edit it.6

03

What a week of it showed

The first week left 226 rows in the record, between 18 and 23 October. Most of them are model calls; the handful that matter are the retrievals and what happened to them.

kindrowswhat a row of this kind is
model119A model call, logged with its tokens and latency.
internal29A lookup in your own data, such as a lobby search. Logged, never gated.
lobby_edit26A validated change to the lobby, committed to git.
blocked13A call the gate refused because a retrieval was still unannotated.
output11A final answer, written only once the gate is open.
retrieval10Knowledge fetched from outside: Exa, Parallel or the RAG store. Gated.
annotation10A claim and a quote for one retrieval, or “nothing useful”.
review · decision6 · 2A model's proposal waiting for you, and your verdict on it.
total226
Table 1 — Reg rows by kind, 18–23 October 2026. Reg head 7417ab65. Kinds as defined in hotel/reg.py.

Eleven of the thirteen refusals were a single agent asking for the same page again and again until the run was stopped.7

The more useful failure was quieter. Asked which local embedding model fits a Mac, the agent found a real sentence and quoted it correctly.8 The note that was approved from it says something else: the most suitable local embedding model for a Mac.9 Best balance is not most suitable. The gate proves a quote exists; it cannot prove the claim follows from it. That is the entailment verifier's job, and in this lobby it was switched off.

04

Reading

The papers Hotel leans on, and where.10

paperwhere Hotel uses itsource
Evaluating Verifiability in Generative Search EnginesWhy the gate exists.Liu, Zhang, Liang · 2023
arXiv:2304.09848
Reciprocal Rank Fusion outperforms Condorcet and individual rank learning methodsMerging Exa, Parallel, bm25 and dense results into one list.10Cormack, Clarke, Buettcher · SIGIR 2009
10.1145/1571941.1572114
EmbeddingGemma: Powerful and Lightweight Text RepresentationsThe local embedder behind lobby and RAG search.Schechter Vera et al. · 2025
arXiv:2509.20354
Install

Hotel runs in your terminal and needs Python 3.12 or later and git. Install it yourself, or let your agent do it.

# macOS, Linux, Git Bash
git clone https://github.com/Desto2000/hotel.git && cd hotel scripts/install.sh ~/lobby hotel
# PowerShell: ./scripts/install.ps1 -LobbyDir ~\lobby
# paste into Claude Code, Amp or Cursor
Read the tutorial
loading /index.md …