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

booking-audit

where your bookings come from, and what each costs

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: booking-audit
description: Counts where every booking came from over a real period, works out what each channel cost you per cover and per pound of sales, and shows which ones you could stop paying for. Use before renewing a booking platform contract, when commission invoices are rising, or when you have no idea which channel is actually bringing people in.
---

# Where your bookings actually come from, and what each channel costs

You give this your booking export, the invoices from every platform and agency you pay, and the till totals for the same dates. You get back one table showing each channel's covers, sales, cost, cost per cover and cost as a percentage of the sales it produced, plus the list of guests who came through a paid channel and then came back on their own. It never quotes a commission rate at you. It reads the rate off your own invoices, because that is the only rate that is actually yours.

## What it does

1. **Set one period and hold it still across every source.** Pick a whole number of weeks, twelve if you have them, ending on a date where you have closed the till and received every invoice. Use the same start and end date for the booking export, the invoices and the sales figures, and write the dates at the top of every output. Audits go wrong at this step more than any other, because the booking platform reports on the date the booking was made, the till reports on the date the guest ate, and the invoice covers a calendar month that matches neither. Decide once, in writing, that everything is counted on the date the guest dined, and convert the other two to match.

2. **List every channel that could produce a booking, including the free ones.** Your own website, your phone, walk-ins, each booking platform you pay, your social accounts, the hotel concierge, the events site, the voucher company, the agency that manages your ads. A channel that costs nothing still belongs on the list, because the point of the audit is the comparison, and a channel costing £0 and delivering 40% of your covers is the finding. Where the platform's own dashboard splits bookings into its network and your own website widget, keep that split, since those two usually carry very different charges even from the same supplier.

3. **Count covers by channel from the booking record, and reconcile the total to the till before going further.** Covers, not bookings. Then compare the total covers from the channel breakdown against total covers on the till for the same dates. They will not match, and the gap is the number of walk-ins plus the bookings that turned up with different numbers than they booked. Put that gap on the table as its own line labelled walk-in and variance rather than spreading it around, because a reconciliation that balances by fudging is worse than one that shows an honest unexplained figure. If the gap is more than about one in ten covers, stop and find out why before drawing any conclusion about channels.

4. **Take the cost of each channel off the invoices and never off the supplier's website.** Read the actual amounts you were billed in the period: subscription, per-cover charge, one-off setup, marketing fees, add-ons. Do not take a percentage from a pricing page and multiply it out. Published pages frequently do not carry a number at all. TheFork's own pricing page, for example, sets out its structure as a "Fee based on a percentage of your average bill per guest" for reservations from its network and partners, while reservations from your own website and social accounts are marked "Included", but the actual percentage is behind an "Ask for pricing" button. So the only reliable rate is the one on your invoice divided by the covers it charged for. Where an invoice does not show a per-cover rate, HMRC's list of what a full VAT invoice must contain includes "the quantity of the goods or the extent of the services" and "the unit price", so ask the supplier for a breakdown rather than estimating one.

5. **Handle overseas commission invoices properly or your channel costs will be wrong.** Several booking platforms bill from outside the UK. Where that is so, VAT is generally dealt with by the reverse charge, and HMRC's notice on place of supply of services describes it in one sentence: "Where it applies to services which you receive, you, the customer, must act as if you are both the supplier and the recipient of the services." Mechanically, HMRC says "You simply credit your VAT account with an amount of output tax, calculated on the full value of the supply you've received, and at the same time debit your VAT account with the input tax to which you're entitled, in accordance with the normal rules." For this audit that means two things. Compare every channel on the same basis, cost excluding VAT, so a UK supplier charging VAT is not made to look dearer than an overseas one. And flag any invoice where the treatment looks unclear for the owner's accountant, rather than deciding it here.

6. **Work out the three numbers that let channels be compared at all.** For each channel: cost per cover, which is total channel cost divided by covers it delivered. Cost as a percentage of the sales those covers produced, which needs spend per head by channel and not the house average, because platform covers and walk-ins often spend differently. And contribution after channel cost, which is the sales those covers produced, minus the food and drink cost of serving them, minus the channel cost. The third is the one that settles arguments. A channel at 6% of sales is cheap against a 70% gross margin and ruinous against a 25% one, and only the contribution figure shows that.

7. **Count the repeat business each channel produced, because that is where the real difference is.** Match guests by mobile number or email across the whole period and mark, for each first visit, which channel introduced them and whether they returned. Then produce two figures per channel: how many first-time guests it introduced, and how many of those came back through a channel you do not pay for. A platform that introduces 200 new guests of whom 60 return directly is doing something quite different from one that introduces 200 who only ever rebook through the platform. Be straight about the limits of this: matching on phone numbers misses people who use different numbers, so report the match rate alongside the result and never present the figure as exact.

8. **Name the double-counted covers before anyone builds a plan on them.** Some covers get claimed by two channels at once, typically a guest who searched your name after seeing you on a platform, or who clicked a paid advert for a booking they were going to make anyway. Where you cannot tell, say so and put the cover in a separate line called contested rather than assigning it. This audit's job is to be honest about what is not knowable, because the decision it feeds, whether to keep paying a supplier, is usually worth thousands of pounds a year and gets taken on the strength of whichever number looked most confident.

9. **Finish with one page: the table, the three findings, and the one change to make next.** The table has a row per channel with covers, share of covers, sales, cost, cost per cover, cost as a percentage of sales, contribution after cost, new guests introduced and repeat rate. Sort it by contribution. Then write three findings in plain sentences with the figures inside them, and one recommended change with the money attached, for example the notice period on a contract and what stopping it would save and cost. Do not recommend cancelling a channel on cost alone without saying where its covers would have to come from instead, because an empty Tuesday costs more than a commission.

## Then it checks

1. Every output names the same start and end date, and states that covers are counted on the date the guest dined.
2. Total covers on the channel table plus the walk-in and variance line equals the till's total covers for the period, and any difference is stated as a number rather than absorbed.
3. Every cost figure names the invoice it came from, with the invoice number and date, and no cost is derived from a supplier's published pricing page.
4. Every channel's cost per cover equals its cost divided by its covers when recalculated, and every percentage of sales equals cost divided by that channel's sales.
5. Spend per head is stated per channel, not taken from the house average, or the row says "house average used" so the reader knows.
6. The repeat-rate section states the matching method and the match rate, and no repeat figure is presented without it.

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 state a platform's commission rate from a website, a news article or memory. Use the rate your own invoices imply, and if an invoice will not support that arithmetic, record the channel as "rate not evidenced" and ask the supplier in writing.
- Never compare a channel that charges VAT against one that does not without putting both on the same basis. Comparing a VAT-inclusive cost with a VAT-exclusive one has been enough to kill the wrong contract.
- Never assign a contested cover to the channel that makes the story neater. Contested covers go on their own line and stay there.
- Never recommend dropping a channel without stating how many covers it currently delivers and what filling them another way would take. Saving commission by emptying the room is not a saving.
- This output is a working document prepared for the owner's accountant or solicitor to check before any contract is cancelled, any invoice is disputed or any VAT treatment is relied on. It totals figures you supplied. It is not tax advice and it is not advice on your contract with any supplier.

## Built from
- TheFork Manager, restaurant software pricing page, https://www.theforkmanager.com/en/restaurant-software-price, no publication date shown on the page, read 14 September 2026: the published charging structure, a fee based on a percentage of average bill per guest for network reservations with own-website and social reservations marked as included, and the fact that the percentage itself is not published, which is why step 4 derives every rate from the owner's invoices.
- HM Revenue & Customs, "VATREC5010 - VAT invoice: Details which must be shown on a full VAT invoice", https://www.gov.uk/hmrc-internal-manuals/vat-trader-records/vatrec5010, last updated 16 January 2025, read 14 September 2026: the requirement for quantity and unit price on a full VAT invoice, which is the basis for asking a platform to break its charge down instead of estimating it.
- HM Revenue & Customs, "VAT: place of supply of services (VAT Notice 741A)", https://www.gov.uk/guidance/vat-place-of-supply-of-services-notice-741a, last updated 29 September 2022, read 14 September 2026: section 5 on the reverse charge, which is why step 5 compares every channel excluding VAT and flags unclear invoices for the accountant.

Prompt for Codex

# Audit where a restaurant's bookings come from and what each channel costs

## You are given
- A booking export for a stated period: date dined, time, party size, booking source, and where available a guest name, mobile number or email.
- Till totals for the same dates: covers per day and sales per day excluding VAT.
- Invoices from every booking platform, agency or marketing supplier for the period: number, date, supplier, net amount, VAT amount, and sometimes a cover count or unit price.
- The venue's food and drink cost as a percentage of sales, if known.

Anything missing is reported, never estimated.

## Produce
Write five files into a folder named `booking-audit-<venue>-<YYYY-MM-DD>`.

1. `channels.csv` - one row per channel plus `WALK-IN AND VARIANCE`, `CONTESTED` and `TOTAL` rows. Columns: `channel, covers, pct_of_covers, sales_ex_vat_gbp, spend_per_head_gbp, spend_per_head_source, cost_ex_vat_gbp, cost_per_cover_gbp, cost_pct_of_sales, contribution_after_cost_gbp, new_guests, returned_direct, repeat_rate_pct`.
2. `costs.csv` - one row per invoice. Columns: `supplier, channel, invoice_number, invoice_date, net_gbp, vat_gbp, vat_treatment, covers_charged, unit_price_gbp, rate_evidenced`. `vat_treatment` is `uk_vat`, `reverse_charge` or `unclear`. `rate_evidenced` is `yes` or `no`.
3. `reconciliation.csv` - columns: `date, till_covers, channel_covers, difference`, plus a `TOTAL` row.
4. `repeat-guests.csv` - columns: `guest_key, first_visit_date, introducing_channel, visits_in_period, last_visit_channel`. `guest_key` is a hash, never a raw number or address.
5. `README.md` - venue, exact start and end dates, a statement that covers are counted on the date dined, total covers, the reconciliation gap as a number and a percentage, the guest match rate, three findings in plain sentences with figures in them, and one recommended change with the money attached.

## Rules
- All money in pounds to two decimal places, excluding VAT. Never mix VAT-inclusive and VAT-exclusive figures in one column.
- Every cost traces to an invoice number. Never derive a commission rate from a website, an article or general knowledge. If an invoice shows no cover count or unit price, set `rate_evidenced` to `no` and leave `unit_price_gbp` empty.
- Covers, not bookings. A party of four is four covers.
- Covers two channels could both claim go in `CONTESTED`. Never allocate them.
- Where a channel's own spend per head cannot be calculated, use the house average and write `house_average` in `spend_per_head_source`.
- Recompute and check: `cost_per_cover_gbp` equals cost divided by covers, `cost_pct_of_sales` equals cost divided by that channel's sales.
- No repeat rate for a channel with fewer than 20 matched first visits. Write `insufficient data`.
- Never write a raw mobile number or email address into any file. No cell may read approximately, circa or tbc.

## Return
The absolute path of the folder, the five filenames with row counts, the period, total covers and the reconciliation gap as a number and a percentage, the channel table sorted by contribution, and every channel marked `rate_evidenced = no` or `vat_treatment = unclear`.

Built from the best public work on this

Sources for booking-audit

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

1. TheFork Manager, restaurant software pricing page

https://www.theforkmanager.com/en/restaurant-software-price, no publication date shown on the page, read 14 September 2026.

TheFork is one of the two booking platforms a UK independent is most likely to be paying, and this is the company's own pricing page for restaurants rather than a comparison site. It is cited here for what it does and does not say, which turned out to be the most useful thing found for this skill.

What it publishes: two plans, "Performance", marked as "Most popular", and "Enterprise". For reservations arriving from TheFork, Tripadvisor and partners, the charge is described as a "Fee based on a percentage of your average bill per guest". For reservations arriving from the restaurant's own website, Instagram and Facebook, the entry reads "Included". Both plans list free training, a dedicated account manager and seven-day support, and both carry an "Ask for pricing" button in place of a figure.

What it does not publish is the percentage. That absence is the finding that shaped step 4 and the hard rule that no commission rate may be quoted from a website. An owner cannot look up what they pay, a consultant cannot look up what they pay, and any figure circulating in blog posts and forum threads is somebody else's negotiated rate in somebody else's year. The only rate that is true for a particular restaurant is the one implied by dividing its own invoice by its own covers, which is what the skill makes it do.

It also confirmed the structural point behind step 2, that a single supplier can charge differently depending on where the booking originated, network versus own website. An audit that lumps one supplier into a single row loses exactly the comparison that matters when deciding whether to keep paying.

Where the skill departs from the source: it treats the page as evidence about structure only, and refuses to carry any number from it because there are none to carry. It also does not assume TheFork's structure is anyone else's. Every platform in the audit is read from its own invoices.

An attempt was made to read OpenTable's UK restaurant pricing page as a second platform source. https://restaurant.opentable.co.uk/pricing redirected to https://www.opentable.co.uk/restaurant-solutions/pricing, which then failed twice, once with a connection reset and once with a sixty-second timeout, and https://www.opentable.com/restaurant-solutions/pricing/ also failed with a connection reset. No OpenTable figure is quoted anywhere in this skill, because none was read. That failure is recorded rather than worked around, since the alternative is precisely the second-hand commission number the skill exists to stop people using.

2. HM Revenue & Customs, "VATREC5010 - VAT invoice: Details which must be shown on a full VAT invoice"

https://www.gov.uk/hmrc-internal-manuals/vat-trader-records/vatrec5010, last updated 16 January 2025, read 14 September 2026.

This is HMRC's own internal manual, published on GOV.UK, so it is the tax authority telling its staff what a compliant invoice contains. It matters to a booking audit for a reason that is not obvious: the audit's whole arithmetic depends on being able to divide a charge by the number of covers it relates to, and a commission invoice that shows only a total makes that impossible.

The required particulars quoted in step 4 include "the quantity of the goods or the extent of the services" and "the unit price", alongside a unique sequential number, the time of supply, the date of issue, the supplier's name, address and VAT registration number, the customer's name and address, a description of the services, the rate of VAT and the amount payable excluding VAT, and the total VAT chargeable. The page also notes reference requirements for reverse charge supplies, which links directly to source 3.

That list gave the skill a firmer position than "ask nicely for a breakdown". If the invoice does not show the extent of the service and the unit price, the owner is entitled to raise it with the supplier, and the audit records the channel as rate not evidenced in the meantime rather than inventing the missing number.

Where the skill departs from the source: the manual is about what a supplier must issue, and the skill does not use it to assert that any particular platform's invoice is non-compliant. That is a question for the owner's accountant, and the skill says so. It uses the list only as the standard for what to ask for.

3. HM Revenue & Customs, "VAT: place of supply of services (VAT Notice 741A)"

https://www.gov.uk/guidance/vat-place-of-supply-of-services-notice-741a, last updated 29 September 2022, read 14 September 2026.

The notice governing where a supply of services takes place for VAT and, in section 5, the reverse charge. It is in this skill because several booking platforms invoice from outside the UK, and an audit that quietly compares a VAT-inclusive UK invoice against an overseas one without VAT will rank the channels wrongly.

Section 5 states the principle: "Where it applies to services which you receive, you, the customer, must act as if you are both the supplier and the recipient of the services." Section 5.1 sets the conditions, that the place of supply is the UK, the supplier belongs outside the UK and the recipient belongs in the UK. Section 5.2 gives the mechanics: "You simply credit your VAT account with an amount of output tax, calculated on the full value of the supply you've received, and at the same time debit your VAT account with the input tax to which you're entitled, in accordance with the normal rules."

That produced two things in step 5: the instruction to compare every channel on a VAT-exclusive basis, and the instruction to flag rather than decide. It also produced one of the hard rules, because comparing a VAT-inclusive cost against a VAT-exclusive one is a mistake big enough to end the wrong contract.

Where the skill departs from the source: the notice is tax guidance and the skill is not a tax tool. It does not tell anyone how to account for the reverse charge, does not decide whether a given platform's supply falls within it, and does not attempt any recoverability question. It puts the invoices on a comparable basis for a commercial decision and hands the treatment to the accountant, which is stated in the closing rule.

Best public prompt we found for this job

The nearest published work is marketing attribution code rather than anything hospitality-specific. A search of api.github.com for marketing attribution channel analysis repositories, sorted by stars, returned olivierzach/bayesian-marketing-attribution at 16 stars, described as "Bayesian marketing-attribution analysis with channel conversion estimates and uncertainty intervals", then krishnapriya-18/Multi-Channel-Marketing-Attribution-Analysis at 5, iamkalppatel/Attribution_Modeling at 2, and mrlaye1/marketing-channel-attribution and TheDevLogos/Marketing-Multi-Channel-Attribution-Funnel-Analysis at 1 each. Star counts read from https://api.github.com/search/repositories?q=marketing+attribution+channel+analysis&sort=stars&order=desc on 14 September 2026. A narrower query including cost per acquisition returned a total count of zero.

The one idea worth copying is in the top repository's description, the phrase "uncertainty intervals". Attribution work that publishes a single confident number per channel is lying by omission, and that instinct is why step 8 puts contested covers on their own line and step 7 requires the phone-number match rate to be reported next to the repeat rate.

What was not copied, and why: Markov chain and Bayesian attribution models need clickstream data with multiple touchpoints per customer, which a forty-cover restaurant does not have and will never have. Running one of those models on a booking diary of 1,200 covers would produce impressive-looking numbers resting on nothing. This skill does the opposite. It counts covers that can be counted, reads costs off invoices that exist, reconciles the total to the till and shows the unexplained gap rather than modelling it away. The commercial content, cost per cover against contribution, repeat rate by introducing channel, and the refusal to recommend cancelling a channel without saying where its covers would come from, does not appear in any public prompt or repository found.

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.