Fill the tables: 10 AI skills for bookings, no-shows and quiet nights

waitlist-walkins

say yes to more people at the door

How the two work together

Claude thinks it through. Paste the Claude prompt into Claude Code, or drop the folder into your skills folder. Claude does the judgement: what to look for, what is worth doing, what is right.

Codex gets it done. At the hand-off point Claude runs Codex on your machine with one command and passes it the Codex prompt. Codex does the mechanical part and hands the result back. Claude checks it before you see it.

No API key to set up: Claude calls the Codex you already have installed. If Codex is not installed, Claude does that half itself and tells you.

Prompt for Claude

---
name: waitlist-walkins
description: Builds the door script, the waitlist sheet and the text messages that let you take more walk-ins on a full night instead of turning them away. Use when people leave because you said no table, when the bar is empty while the door is busy, or when you want to start call-ahead seating.
---

# Say yes to more people at the door

You give this your opening hours, how many people you can legally hold, how long your tables really take and what you can offer someone who waits. You get back a waitlist sheet you can print tonight, the exact words for the person on the door, a rule for who gets seated next and why, two text messages that are legal to send, and a short list of the things you must stop saying. It is built so that a guest who waits forty minutes still comes back.

## What it does

1. **Work out how many people you can hold standing before you offer anyone a wait.** A waitlist only works if there is somewhere legal to put the people on it. Leicestershire Fire and Rescue Service, setting out occupancy for licensed premises, gives the floor space factors as 0.3 square metres per person for "Standing areas, Bars without seating" and 1.0 for "Dining rooms, Seated Lounge/Bar, Restaurants". Measure your bar and waiting area, divide, and write the figure down. Then check it against the exits, because "The occupancy figure for any building is based on the lesser of the two following calculations", and remember that "An occupancy limit of 60 persons will apply where only one exit exists". If your dining room is full at 60 and your building limit is 64, your waitlist holds four people standing and everyone else waits outside or gets a text. Say that number out loud in the plan rather than discovering it on a Saturday.

2. **Measure the real gap between a table becoming free and the next party sitting down.** Time it on three busy services: last guest stands up, table cleared, table reset, next party seated. Most rooms lose eight to fourteen minutes here and nobody has ever measured it. Every minute you take out of that gap is a minute off every quoted wait for every party still standing, which is the cheapest capacity you will ever buy. Write the measured figure into the plan as your reset time, and set one person per section as responsible for it during peak hours. This is the only step that adds covers without anyone eating faster.

3. **Build the waitlist sheet with the six columns that actually get used.** Time added, name, number in party, mobile number, quoted wait, and time seated or left. Nothing else. Add a tick box for "happy to sit at the bar" and one for "happy to sit outside", because those two boxes are where the extra covers come from: a party of two who will take a bar stool can be seated twenty minutes before the party of two who will not. Number the sheet by date and service so you can count, at the end of the week, how many people you quoted and how many never got seated. A waitlist you do not count is a story, not a record.

4. **Pick your seating rule, write it down, and say it out loud to every guest.** The Cornell Center for Hospitality Research tested four ways of running a waitlist against 268 respondents and found guests "rated seating by party size and call-ahead seating as being relatively fair, but large-party reservations were seen as a neutral policy at best and VIP seating was considered to be essentially unfair". So seat by matching party size to the table that is free, say so at the door, and do not jump the owner's friend in front of a family who has waited thirty minutes. The same report is blunt about why the explanation matters: "in the absence of information, they are more likely to rate the scenario as unfair", and the recommendation is that policies which break first come first served "should be implemented carefully and with an explanation to all customers". One sentence at the door does the whole job: "We seat by the size of table that comes free, so a pair may go before a group of four even if the four arrived first."

5. **Quote a wait you will beat, and give the guest a time, not a duration.** Take your measured table time for that party size, add the reset time from step 2, count how many parties of that size are ahead of them, and then quote the upper end rather than the average. Say "a table should be free around quarter past eight" instead of "about thirty minutes", because a clock time can be checked and a duration starts an argument. Never quote a wait shorter than the longest party ahead of them can plausibly take. Being ten minutes early is a small gift every single time; being ten minutes late is the reason a party walks out and tells people.

6. **Start call-ahead seating, and keep it different from a reservation.** The Cornell report describes it precisely: the guest calls on the same day to hold a place on the waitlist, and "This is not the same as a reservation, because the customer is not promised a seat upon arrival, but the customer gains the likelihood of a shorter wait in exchange for letting the restaurant know he or she is coming." It rated as the fairest of the four policies tested. Write the script so the difference is unmistakable: take the name, the party size and a mobile number, give an arrival time, and say the words "this holds your place on the list, it does not hold a table". That one sentence is what stops the complaint when they arrive and wait ten minutes. It also solves the large-party problem without the unfairness, since the report suggests "the restaurant could use call-ahead seating for all parties" rather than taking reservations only for big groups.

7. **Write the two texts, and keep them inside the law on messaging.** You need exactly two: the table-is-ready text and the sorry-we-could-not-seat-you text. Both are service messages about the thing the guest asked for, and both should say who you are, name the venue, and say what happens next, for example how many minutes you will hold the table. What you must not do is quietly turn the waitlist into a marketing list. Regulation 22 of the Privacy and Electronic Communications (EC Directive) Regulations 2003 prohibits sending "unsolicited communications for the purposes of direct marketing by means of electronic mail" without consent, and the narrow exception applies only where the contact details were obtained "in the course of the sale or negotiations for the sale of a product or service to that recipient", the marketing is "in respect of that person's similar products and services only", and the person "has been given a simple means of refusing (free of charge except for the costs of the transmission of the refusal) ... at the time that the details were initially collected, and ... at the time of each subsequent communication". Text covers electronic mail here. So put one tick box on the waitlist sheet that says offers by text, keep it unticked by default, and put an opt-out line on every message that is not purely about tonight's table.

8. **Give the wait something to be, not just something to endure.** Decide in advance what a waiting guest is offered and print it on the plan: a drink to hold, a bar menu, a stool, the garden, a half portion of something to share. Put a specific person on the door whose job is the waitlist and nothing else during the peak hours you identified, because a list held by whoever is nearest is a list that loses people. The Cornell study's warning is about the long game: a restaurant that maximises tonight's covers through tactics guests find unfair "could be sacrificing long-term profitability for short-term revenue gains". A waitlist is a promise made to someone standing up with their coat on, and it is judged on whether you keep it.

9. **Count what happened and change one thing a week.** At the end of each week, total four numbers from the sheets: parties quoted, parties seated, parties who left before being seated, and the average gap between quoted wait and actual wait. Then change one thing: the reset time, the quote method, the bar offer, or who holds the list. Do not change three at once, because then you learn nothing. If parties seated goes up while walkaways stay flat, the change worked. If the gap between quoted and actual goes positive, you are now running late on your own promises and everything else can wait until that is fixed.

## Then it checks

1. The standing capacity figure shows both calculations, floor area and exit capacity, and the plan uses the lower of the two as the number of people who may wait inside.
2. The waitlist sheet has all six columns plus the bar and outside tick boxes, and every row on the worked example is filled in, including a time seated or a time left.
3. The seating rule is written as one sentence a host can say out loud, and the same sentence appears in the door script.
4. Every quoted wait in the worked examples is expressed as a clock time and is derived from a stated table time plus a stated reset time, with no figure appearing from nowhere.
5. Both text messages name the venue, say what happens next with a number of minutes attached, and neither contains an offer, a discount or a promotion unless the guest ticked the offers box.
6. The call-ahead script contains the words that separate it from a reservation, and the plan never describes a call-ahead as a booking.

Any check fails: name it, redo that step once. Failed twice: say what is wrong and stop.

## Rules
- Public information only.
- Never invent a fact, a number or a quote.
- Anything sent in someone's name says whose name it is.
- Never quote a wait you have not calculated from a measured table time. A guessed wait that comes in short is the single fastest way to turn a person who was happy to wait into a person who leaves and posts about it.
- Never seat a friend, a regular or a supplier ahead of a waiting guest on a night when there is a list. It is the one practice the research tested that guests rated as essentially unfair, and the people watching it happen are standing three feet away.
- Never use the mobile numbers on the waitlist for anything except tonight's table unless the guest ticked the offers box in front of you. One promotional text to a list collected for a table is the complaint that brings the regulator to your door.
- Never hold a table empty waiting for a bigger party to arrive while someone stands at the bar, unless that party is call-ahead and due within a stated number of minutes that you have written down.
- This output is a working document prepared for the owner's fire risk assessor, data protection adviser or solicitor to check before it is used. It applies published guidance to numbers you supplied. It is not advice on fire safety law or on electronic marketing law.

## Built from
- Kelly A. McGuire and Sheryl E. Kimes, Cornell University Center for Hospitality Research, "Perceived Fairness of Restaurant Waitlist-management Policies", CHR Reports Vol. 5 No. 4, February 2005, https://ecommons.cornell.edu/server/api/core/bitstreams/df6b2636-e458-4501-be0b-a2ee9ed40941/content, read 14 September 2026: the fairness ranking of the four waitlist tactics that sets the seating rule in step 4, the definition of call-ahead seating in step 6, the finding that an unexplained policy reads as unfair, and the long-term warning in step 8.
- The Privacy and Electronic Communications (EC Directive) Regulations 2003, regulation 22, https://www.legislation.gov.uk/uksi/2003/2426/regulation/22, read 14 September 2026: the prohibition and the three soft opt-in conditions quoted in step 7, which is why the waitlist keeps an unticked offers box and why the table-ready text carries no promotion.
- Leicestershire Fire and Rescue Service, "Calculating Occupancy for Licensed Premises and Other Places of Assembly", https://leics-fire.gov.uk/uploads/calculating-occupancy-figures-for-licensed-premises-(2).pdf, no publication date shown on the page, read 14 September 2026: the 0.3 square metre standing factor, the lesser-of-two-calculations rule and the 60 person single exit limit, which set the standing capacity in step 1.

Prompt for Codex

# waitlist-walkins

## You are given
A folder from a UK hospitality venue containing: the clear floor area in square metres of each area a waiting guest could stand in and each dining area, excluding toilets, stairway enclosures, bar serving areas, stores and fixed furniture; the clear width in millimetres of every exit door measured with the door fully open, and how many exits each room has; a timing sheet from at least three busy services recording, per table, the time the last guest stood up, the time the table was cleared, the time it was reset and the time the next party sat down; a bookings or till export giving time seated and time the table was free again by party size; the opening hours; and a settings file naming the venue, the reply route, what a waiting guest can be offered, and who holds the list during peak hours.

## Produce
Write into an `output/` folder next to the inputs:

1. `capacity.csv` with these columns in this order: `area_name`, `area_m2`, `floor_space_factor`, `persons_by_floor_area`, `exit_id`, `exit_width_mm`, `exit_capacity_persons`, `largest_exit_discounted`, `exit_capacity_after_discount`, `standing_limit`, `source_file`. `standing_limit` is the lower of the floor area total and the discounted exit total, computed per area and again as a `TOTAL` row.
2. `table-times.csv` with columns: `party_size`, `sittings_timed`, `median_minutes_at_table`, `upper_quartile_minutes_at_table`, `reset_minutes`, `reset_source`, `total_turn_minutes`, `parties_counted`. `reset_minutes` is the measured gap from last guest standing to next party seated, taken from the timing sheet only.
3. `quote-table.csv` with columns: `party_size`, `parties_ahead`, `upper_quartile_minutes_at_table`, `reset_minutes`, `minutes_to_quote`, `worked_example_arrival_time`, `worked_example_quoted_clock_time`. `minutes_to_quote` uses the upper quartile, never the mean, and `worked_example_quoted_clock_time` is a clock time.
4. `waitlist-sheet.csv` - a blank sheet, header row plus 25 empty rows, with columns exactly: `time_added`, `name`, `party_size`, `mobile_number`, `quoted_clock_time`, `time_seated_or_left`, `happy_at_bar`, `happy_outside`, `offers_by_text`.
5. `waitlist-sheet.html` - one side of A4, landscape, black and white, printing the same columns with ruled rows, the date and service at the top, the standing limit printed in a box, and `offers_by_text` shown as an unticked box.
6. `door-script.md` - one printed page: the seating rule as one sentence a host says out loud, the same sentence repeated as the line used at the door, the call-ahead script carrying the words that hold a place on the list and not a table, what a waiting guest is offered, and who holds the list in each peak hour.
7. `messages/table-ready.txt` and `messages/could-not-seat.txt` - two templates with placeholders `{venue_name}`, `{guest_first_name}`, `{party_size}`, `{hold_minutes}`, `{reply_route}`. Each names the venue and says what happens next with a number of minutes attached.
8. `message-classification.csv` with columns: `message_file`, `classification`, `offer_present`, `opt_out_line_present`, `requires_offers_box_ticked`. `classification` is `service` for both. `offer_present` must be `no` on both.
9. `weekly-count.csv` - a blank template, header row plus 8 empty rows, with columns: `week_commencing`, `parties_quoted`, `parties_seated`, `parties_left_before_seated`, `mean_quoted_minus_actual_minutes`, `one_thing_changed`.
10. `exceptions.csv` with columns: `field_or_area`, `missing_field`, `what_it_blocks`, `source_file`.
11. `README.md` - the standing limit with both calculations shown, the reset time and whether it was measured, the table times by party size with the parties counted behind each, and everything that could not be computed.

## Rules
- Write files and blank sheets only. Never send a text or any other message, never open a messaging API, and never take a guest's number into any system. The waitlist sheet ships blank and is filled in by hand at the door.
- Floor space factors: 1.0 square metres per person for dining rooms, seated lounges and restaurants; 0.5 for assembly and dance areas; 0.3 for standing areas and bars without seating.
- Exit capacity: a route 750mm to 1050mm carries 100 persons at medium risk; over 1050mm add 15 persons per extra 75mm; no single door counts as wider than 2m. Discount the largest exit entirely before totalling. One exit only means a limit of 60 persons.
- `standing_limit` is always the lower of the two calculations, and both calculations must be shown. Never publish a single figure without the pair behind it.
- Never write a quoted wait that is not derived from a measured table time plus a measured reset time. If the timing sheet covers fewer than three services, leave `reset_minutes` empty, write `NOT MEASURED` in `reset_source`, draft no quote table and record it in `exceptions.csv`.
- Never output a table time for a party size computed from fewer than 20 parties. Write `insufficient data` in that row.
- Neither message may contain an offer, a discount, a promotion, an event or a social media handle. Scan both files and record the result in `message-classification.csv`. Any message that is not purely about tonight's table must carry an opt-out line and may only be used where `offers_by_text` was ticked.
- No mobile number, guest name or contact detail from any supplied file may be written into any output. The sheets are templates. If the inputs contain a historic waitlist with names on it, use it for counting only and never copy a row.
- Both messages name the venue and are sent in the venue's name, so it is clear whose name they are sent in.
- Minutes are whole numbers. British English, £, DD Month YYYY dates. No em dashes, no emoji. Plain HTML with inline CSS, no JavaScript, no external fonts, no network calls, and the sheet must print correctly unstyled.

## Return
The absolute paths of the files written, the standing limit with both calculations, the measured reset time or `NOT MEASURED`, the table time and parties counted for each party size including every `insufficient data` row, the two message files with their `offer_present` result, and every input that was missing. State that nothing has been sent and no guest details were copied, and that the capacity figures and the messaging are a working document for the owner's fire risk assessor, data protection adviser or solicitor to check before use.

Built from the best public work on this

Sources for waitlist-walkins

Everything below was opened and read on 14 September 2026. Nothing is cited that could not be loaded.

1. Cornell University Center for Hospitality Research, Kelly A. McGuire and Sheryl E. Kimes, "Perceived Fairness of Restaurant Waitlist-management Policies"

https://ecommons.cornell.edu/server/api/core/bitstreams/df6b2636-e458-4501-be0b-a2ee9ed40941/content, CHR Reports Vol. 5 No. 4, February 2005, read 14 September 2026.

The Center for Hospitality Research at Cornell is the research arm of the Cornell School of Hotel Administration, and this is its own report, hosted on Cornell's eCommons repository. Sheryl Kimes is the professor who established restaurant revenue management as a field; Kelly McGuire was a Cornell doctoral candidate at the time. The study put role-play scenarios to 268 respondents and measured perceived fairness of four ways of running a waitlist on a seven-point scale where 4 is neutral.

The finding that decides step 4 is the ranking: respondents "rated seating by party size and call-ahead seating as being relatively fair, but large-party reservations were seen as a neutral policy at best and VIP seating was considered to be essentially unfair". The report's own exhibit of fairness by familiarity carries the detail behind that: among the 179 respondents split into low and high familiarity groups, call-ahead scored 4.8 and 6.1, party size 3.7 and 5.3, large-party reservations 3.7 and 3.8, and VIP priority 2.4 and 4.0. The skill does not print those figures in SKILL.md, because a UK owner does not need a seven-point scale to act, but they are what the ordering rests on.

Step 4's insistence on saying the rule out loud comes from two lines. First the mechanism: "in the absence of information, they are more likely to rate the scenario as unfair." Then the recommendation, set out as a pull quote in the report: policies that "violate the first-come, first-served principle should be implemented carefully and with an explanation to all customers."

Step 6 is the report's own description of call-ahead seating, quoted in the skill: "This is not the same as a reservation, because the customer is not promised a seat upon arrival, but the customer gains the likelihood of a shorter wait in exchange for letting the restaurant know he or she is coming." The report also supplies the way round the large-party problem, noting that instead of reservations for big groups only, "the restaurant could use call-ahead seating for all parties, which could provide some advance warning for large parties, while maintaining customer satisfaction."

Step 8's closing argument is the conclusion: "If customer satisfaction is not considered in implementing those techniques, however, a restaurant could be sacrificing long-term profitability for short-term revenue gains."

Where the skill departs from the source: the report is American, from 2005, and based on a convenience sample answering hypothetical scenarios rather than on observed walkaway behaviour. The skill therefore takes its ordering of tactics and its emphasis on explanation, and refuses to carry any of it as a prediction about a particular pub in Leeds. It also adds the entire measurement half, steps 2, 5 and 9, which the report does not address at all, because the fairest seating rule in the world does not help an owner who quotes twenty minutes and delivers fifty. And the skill goes further than the report on VIP seating: the report found it merely unpopular, while the skill forbids it outright on a night with a list, on the practical ground that the people watching it happen are standing within earshot.

2. The Privacy and Electronic Communications (EC Directive) Regulations 2003, regulation 22

https://www.legislation.gov.uk/uksi/2003/2426/regulation/22, with the full as-made text read at https://www.legislation.gov.uk/uksi/2003/2426/regulation/22/made, read 14 September 2026.

legislation.gov.uk is the official publisher of UK legislation, so this is the instrument itself. Regulation 22 is the rule that governs texting and emailing individuals for marketing, and it is the reason a waitlist is a legal hazard as well as an operational one: the venue has just collected a pile of mobile numbers from people who wanted a table.

The prohibition quoted in step 7 is paragraph (2): a person "shall neither transmit, nor instigate the transmission of, unsolicited communications for the purposes of direct marketing by means of electronic mail unless the recipient of the electronic mail has previously notified the sender that he consents for the time being to such communications being sent by, or at the instigation of, the sender."

The three soft opt-in conditions in paragraph (3) are quoted because owners routinely assume the exception is wider than it is. It applies where the sender "has obtained the contact details of the recipient of that electronic mail in the course of the sale or negotiations for the sale of a product or service to that recipient", where "the direct marketing is in respect of that person's similar products and services only", and where the recipient "has been given a simple means of refusing (free of charge except for the costs of the transmission of the refusal) the use of his contact details for the purposes of such direct marketing, at the time that the details were initially collected, and, where he did not initially refuse the use of the details, at the time of each subsequent communication."

That shaped step 7 and one of the hard rules: the two operational texts carry no offer at all, and the offers tick box sits unticked on the sheet so that a guest opts in visibly, in front of the person taking the number, rather than being enrolled by silence.

Where the skill departs from the source: the regulation is about marketing, and it does not say in terms whether a given text is a service message or a marketing one. The skill does not attempt to draw that line as a legal opinion. It takes the safe operational route instead, which is to keep the table-ready and sorry-no-table messages purely factual and to treat anything else as requiring the box to be ticked. The page also showed that the regulation has been amended, with a new charity provision added by the Data (Use and Access) Act 2025 taking effect in February 2026; the skill does not rely on that provision, since a restaurant waitlist is not charity communication, and says nothing about it.

3. Leicestershire Fire and Rescue Service, "Calculating Occupancy for Licensed Premises and Other Places of Assembly"

https://leics-fire.gov.uk/uploads/calculating-occupancy-figures-for-licensed-premises-(2).pdf, no publication date shown on the page, read 14 September 2026.

A fire and rescue service is the enforcing authority under the Regulatory Reform (Fire Safety) Order 2005, and the leaflet states that its figures are "extracted from the CLG guide for Fire Safety Risk Assessment in Small and Medium Places of Assembly under the Regulatory Reform (Fire Safety) Order 2005 ... and Build Regulations approved Document B (ADB)". It is included here for one reason that no restaurant blog covers: a waitlist creates standing people, and standing people count.

Step 1 uses the floor space factors from its Table 1, 0.3 square metres per person for "Standing areas, Bars without seating" against 1.0 for "Dining rooms, Seated Lounge/Bar, Restaurants", and the governing rule that "The occupancy figure for any building is based on the lesser of the two following calculations; the number of persons who can safely reside in the premises ... and the width and capacity of the exit routes to allow them to escape safely." The hard ceiling quoted, "An occupancy limit of 60 persons will apply where only one exit exists", is the one that catches small single-door dining rooms that think they can hold a queue at the bar.

The leaflet is explicit that it "is for guidance only. It is not a full and authorative statement of the law and does not constitute legal advice", and the skill repeats that posture in its closing rule.

Where the skill departs from the source: the leaflet is a Leicestershire publication and the calculation belongs in a fire risk assessment signed by the responsible person, so the skill never presents the standing figure as approved. It presents it as the number to bring to the assessor, and as the practical cap on how many people the host may keep inside.

Best public prompt we found for this job

Nothing published is close, and the star counts say so. A search of api.github.com for restaurant waitlist queue repositories, sorted by stars, returned calvincchan/line-me-up at 6 stars, bahaha/queue-bite at 2, BenediktZanker/CasaCue at 1, and then a run of zero-star student projects. Star counts read from https://api.github.com/search/repositories?q=restaurant+waitlist+queue&sort=stars&order=desc on 14 September 2026, not from a blog or a search snippet.

The line worth taking is line-me-up's own description of what it is for: "designed for restaurants and retail stores. It aims to simplify the process of handling customer queues by offering a self-service approach for both customers and staff." The self-service instinct is right, and it is why step 3's sheet has tick boxes a guest can answer in two seconds rather than questions a host has to ask.

What was not copied, and why: all of these are software for holding a queue in a database. None of them tell the host what to say, none of them address which party gets seated next or how to explain it, and none of them touch UK occupancy limits or regulation 22. A venue can run every step of this skill with a clipboard, a pen and a mobile phone, which is deliberate, because the owners this is written for are not going to install a distributed queue management system before Friday. The seating rule came from the Cornell study, the messaging constraints from the regulation itself, and the reset-time measurement in step 2 from neither, because nobody in either source measures the minutes between one party leaving and the next sitting down.

Want this running in your business?

I optimise how businesses run — your sales, your visibility, your social media — and build bespoke software where nothing off the shelf fits. The first conversation is free. Work starts from £150 a day.