You can already book phone booths through the OfficeRnD website. That works fine. The bot is another way to do the same thing, just from Telegram instead of a browser. If you’re already in a chat and need a booth in the next hour, you can type a quick message instead of switching to the web portal.
OfficeRnD website
Log in, navigate to the calendar, find an open slot, fill out the form. The full booking system with all its options.
Telegram bot
“Book me a booth at 2pm.” A quicker path for the most common requests, right from your phone.
What it looks like
The bot lives in Telegram. You talk to it the same way you’d text a friend.
Reference: BK-4829
Reference: BK-4831
You don’t need to remember special commands or exact booth names. The bot understands “tomorrow,” “next Tuesday,” “for an hour,” “at the Beryl location,” and other natural phrasing. If something is unclear, it asks.
What happens behind the scenes
When you send a message, the bot passes it to Claude, an AI assistant made by Anthropic. Claude reads your message, decides what needs to happen, and tells the bot which actions to take. The bot carries out those actions against OfficeRnD (the booking system The Loading Dock uses), then Claude writes a response based on the results.
This all happens in a few seconds. Claude can also check availability before booking, or ask you a follow-up question if it needs more information. It handles the conversation the way a helpful front-desk person would.
How the AI decides what to do
Claude has access to four specific actions. When you send a message, it reads what you wrote and picks the right action (or combination of actions) to handle your request.
Book a booth
Reserves a phone booth at a specific location, date, and time. Checks what’s open first, picks an available booth, and gives you a confirmation with a reference code.
Check availability
Looks up which booths are free at a given time. Useful when you want to see your options before committing.
List your bookings
Shows your upcoming reservations across all locations. Handy for checking what you have on the books.
Cancel a booking
Cancels a reservation using its reference code. The bot double-checks that the cancellation went through before confirming.
Claude picks these actions on its own based on your message. If you say “anything open at 3?”, it checks availability. If you say “book me a booth at 3,” it might check availability first to find an open booth, then make the booking. If something goes wrong, it can explain the problem or try a different approach.
Locations and defaults
The Loading Dock has three locations. The bot can book booths at any of them. Just mention the location name in your message.
Dock 1053
1053 E Whitaker Mill Rd. The default if you don’t specify.
Beryl
Mention “Beryl” in your message to book here.
Wake Forest
Mention “Wake Forest” to book here.
| Setting | Default | Options |
|---|---|---|
| Location | Dock 1053 | Dock 1053, Beryl, or Wake Forest |
| Duration | 30 minutes | 30, 60, or 90 minutes |
| Booking window | Today | Up to 30 days out |
| Timezone | Eastern | Eastern only |
The defaults are set so that the most common request (“book me a booth at 2”) works without extra detail. You can always override: “Book a booth at Beryl tomorrow at 10am for an hour.”
How availability works
When the bot checks availability, it looks at all four booths at the location you picked. For each booth, it checks whether someone already has it reserved during the time you want. Any booth with a conflicting booking is taken off the list. What’s left is what you can book.
In this example, Booths 2 and 4 are open for your time slot. The bot picks one and books it. If nothing is available, it tells you and can suggest a different time.
Setting up your account
Before you can book, the bot needs to connect to your OfficeRnD account. This is a one-time setup that takes about a minute.
/registerStart setup
emailOfficeRnD email
passwordAuto-deleted
loginTests it works
all setStart booking
When you type your password, the bot deletes your message right away so it doesn’t sit in the chat. Your credentials are encrypted before they’re stored, so even if someone looked at the database, they’d see scrambled text, not your actual password.
If you ever want to disconnect your account, type /unregister and the bot removes all your stored data.
Things you can say
The bot understands natural language. You don’t need to memorize specific phrases. Here are some examples that all work:
| What you want | What you can say |
|---|---|
| Book a booth | “Book me a booth at 2pm” · “I need a booth tomorrow at 10” · “Reserve a phone booth for an hour at 3” |
| Check availability | “What’s open at 2?” · “Any booths free tomorrow afternoon?” · “Is there anything at Beryl at 11?” |
| See your bookings | “What do I have booked?” · “Show me my reservations” · “Do I have anything tomorrow?” |
| Cancel | “Cancel BK-4829” · “Cancel my 2pm booking” · “I don’t need the booth anymore” |
| Start over | “Reset” · “Start over” · “New conversation” · Type /new |
If the bot doesn’t understand something, it asks for clarification rather than guessing wrong.
How the bot avoids mistakes
AI can sometimes get confused and tell you something happened when it didn’t. The bot has specific checks built in to prevent this.
| Situation | What happens |
|---|---|
| Bot says “booked!” but didn’t actually book | A safety check catches this and forces the bot to try again properly. You won’t see a confirmation unless the booking went through. |
| Bot says “cancelled!” but didn’t actually cancel | Same check. The bot also double-checks the booking list after every cancellation to make sure it’s gone. |
| Your OfficeRnD session expires | The bot notices, logs you back in automatically, and retries what it was doing. You don’t see any of this. |
| A cancelled booking shows up as “taken” | The bot filters out cancelled reservations so they don’t block your time slot. |
| You ask for a 15-minute booking | The minimum is 30 minutes (OfficeRnD’s limit), so the bot bumps it up and lets you know. |
Your data
The bot stores three things about you:
Your OfficeRnD login
Your email and password, encrypted. Even the person who built the bot can’t read them from the database. Used only to sign into OfficeRnD on your behalf.
Your active session
A temporary token so the bot doesn’t need to log in fresh every time you make a request. Expires on its own.
Recent conversation
The last few messages so the bot can follow context (“actually, make it an hour” only works if it remembers what “it” refers to). Cleared when you type /new.
Nothing else
No browsing history, no personal data beyond what’s listed here. Type /unregister to delete everything.
Quick reference
| Command | What it does |
|---|---|
| /start | Welcome message and instructions |
| /help | Shows what the bot can do |
| /register | Connect your OfficeRnD account (one-time) |
| /unregister | Remove your account and all stored data |
| /new | Clear the conversation and start fresh |
| /status | Check how many messages are in the current session |
You don’t need any of these commands for day-to-day use. Just type what you need and the bot handles it.
How it’s built
For anyone curious about the technical side: the bot is a small Python program that runs 24/7 on Fly.io’s free tier. It uses Telegram to talk to you and Claude AI to understand your requests. It connects to OfficeRnD the same way you do when you log into the website, just faster.
The same framework that powers this bot could be adapted for other tasks at The Loading Dock. Anything that currently requires logging into a portal and clicking through a form is a candidate. The AI handles the conversation; you just define what actions are available.
Technical details
The bot is built on a general-purpose framework for making single-purpose Telegram bots backed by Claude. The entire codebase is six Python files.
The warm-toned layer is the framework. It handles Telegram messaging, the AI conversation loop, data storage, and encryption. This part is generic and could power any bot.
The blue layer is the Loading Dock ability. It defines the four booking actions and knows how to talk to OfficeRnD. Swap this layer for a different one and you have a different bot.
The AI loop: When you send a message, the framework passes it to Claude along with your recent conversation history. Claude reads the message, decides which action to take, and tells the framework to execute it. The framework runs the action against OfficeRnD, sends the result back to Claude, and Claude writes a response. If Claude needs multiple steps (check availability, then book), it loops through this cycle until it’s done.
Storage: User data lives in a Supabase database (a hosted PostgreSQL service). Credentials are encrypted with Fernet symmetric encryption before they’re written. Conversation history is stored as JSON on your user record and trimmed to the most recent 8 exchanges.
Hosting: The bot runs on Fly.io’s free tier as a single always-on process in Virginia. It polls Telegram for new messages rather than waiting for incoming connections, which keeps the setup simple.