Make delivery pay: 10 AI skills for takeaway and the apps

delivery-hours

open the hours that make money, close the ones that lose it

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: delivery-hours
description: Turns your own order data, your labour cost and your platform contract into a written decision on which delivery hours make money and which lose it: a contribution figure for every hour you currently open, the Working Time and minimum wage position for whoever you roster onto the hours you keep, the platform availability and rejection standard you must hit if you change your stated hours, the hygiene rating display position for the hours you advertise, and a dated hours plan. Use when you are open for delivery at hours nobody has checked since the day you copied them from the dining room.
---

# The hours you keep, chosen from your own numbers, not from the hours you have always opened

You give this your own order data hour by hour, your rota and hourly labour cost, your platform merchant agreement, and the hygiene rating position for your premises. You get back the contribution left after commission, VAT, food, packaging and labour for every hour you currently trade, the hours that are losing money against the hours that are carrying the business, the legal position for whoever you roster onto the hours you keep, the platform standard you must hit if you change your stated hours, and a dated plan naming what changes and why. It will not tell you what hour a delivery kitchen typically peaks. No published figure exists for a single independent UK venue, and an owner who opens Tuesday lunch because an article said lunch works is opening on somebody else's data.

## What it does

1. **Log your own orders hour by hour before you judge a single slot.** Pull at least four full weeks of order data from every platform and your own channel, and put it into one row per hour per day: orders placed, gross order value, and the hour's opening state, open or closed. Four weeks catches a bad Tuesday without letting it set the picture, the same minimum commission-maths uses for a statement period. An hour with three orders across four weeks is not a slow hour you are still building, it is a fact you now have evidence for.

2. **Cost the labour that would not exist if that hour were closed.** Take the rota for the hours in question and work out who is there only because the venue is open then: the person on the pass, whoever answers the tablet, whoever packs. Multiply their hours by their real hourly cost, meaning the wage plus employer National Insurance and pension, not the wage alone, the same standard commission-maths applies to delivery labour generally. Record it per hour, because a Tuesday half past two and a Friday half past seven are not the same shift even when the same person works both.

3. **Bring in the food, packaging and commission cost per order from your commission-maths file rather than recalculating it.** One fact should live in one place. Multiply the contribution per order already established there by the order count in each hour, subtract the hour's labour cost, and the result is the contribution for that hour. An hour can carry a healthy per order contribution and still lose money overall if three orders do not cover the person standing there to take them.

4. **Settle the Working Time Regulations position for anyone rostered onto the hours you decide to keep.** The Working Time Regulations 1998 set the limit plainly: "a worker's working time, including overtime, in any reference period which is applicable in his case shall not exceed an average of 48 hours for each seven days", averaged over a reference period that is normally 17 weeks. A worker may agree in writing to work more, and the employer must keep a record of who has signed that agreement. Adding a new late hour is a rostering decision as much as a revenue decision, and it is the one place this file touches genuine employment law rather than arithmetic, so record whose hours change, whether the 48 hour average still holds, and whether an opt out is needed and signed.

5. **Check every hourly labour cost against the current statutory minimum before you finalise a rota.** The National Living Wage for workers aged 21 and over is £12.71 an hour, the rate for 18 to 20 year olds is £10.85, and the rate for under 18s and apprentices is £8, all effective from 1 April 2026 and due to change again on the following 1 April. A rota built around a wage figure from last year's costing is a rota that may already be unlawful. Record the rate used for each role and the date it was read.

6. **Read your platform's availability and rejection standard before you touch your stated hours, because it is a contractual number, not a courtesy.** Deliveroo's published partner terms require a partner to "Ensure that all relevant menu items are available to be ordered by a customer in a Delivery Order during your opening hours" and set a target that "You should be available for orders for 98% of your opening hours on the Platform", alongside an instruction to "Use reasonable endeavours to reject less than 1% of Delivery Orders received through the Platform". Uber Eats' merchant terms state the same obligation in different words, that "Merchant will make Items available for purchase through the Uber Eats App during its normal business hours", measured against a Success Score Policy under which "Merchant's access to certain Uber Tools... may be restricted or removed" and the agreement itself can be terminated if minimum standards are not met. Closing an hour quietly by going offline without updating the stated hours breaks both standards at once: it counts against your availability percentage and it looks, to the customer who ordered anyway, like a rejected order.

7. **Change the stated hours everywhere at once, because a mismatch is itself a cause of the rejected orders the platforms are measuring.** List every place your hours are published: each platform listing, your own website, your Google listing, and the door. A customer who orders because your website says open and finds the kitchen shut has caused a rejection that counts against the standard in step 6, and it was caused by a document, not by the kitchen. Record the date each listing was updated.

8. **Settle the hygiene rating display position for the hours you are now advertising.** Display of the rating sticker "must" happen in Wales and Northern Ireland: "Food businesses in Northern Ireland and Wales must display the rating sticker sent to them. It is the law." In England it remains voluntary, and mandatory online display in England is not yet in force: the Food Standards Agency's own report to its Board in September 2026 lists "mandatory Food Hygiene Rating Display online across the UK and in-store in England" as a future outcome it is working towards, with no legislated date given. Where you do display a rating online, the placement standard already set for the FSA's guidance applies regardless of whether display is compulsory: it should "appear prominently on your website so that it is readily seen when your customer accesses a page" and "appear anywhere prior to the point where your customer selects food or places an order". Record which nation your premises trades in, whether display is compulsory for you, and where the rating sits if you show it.

9. **Hand the assembled figures to Codex to build the hour by hour picture.** Every judgement is already made: the order data, the labour costs, the rates used and the rostering decisions are the owner's. Run:

   ```
   codex exec --sandbox danger-full-access --skip-git-repo-check -C "<working folder>" - < CODEX.md
   ```

   Claude hands over the hourly order log, the per order contribution figures from commission-maths, the rota with hourly labour costs, the minimum wage rate used per role, the platform availability and rejection figures, and the hours published on every channel. Codex returns the contribution by hour table, the list of loss making hours, the Working Time and minimum wage check, and a gaps file. Codex decides no hour and writes no rota.

10. **Write the plan, and date every figure in it.** One page: the hours kept, the hours closed, the one new hour being trialled if any, and the review date. Put the date the order data was pulled and the date the labour rate was checked in the footer. An hours decision made once in spring and never revisited is a decision made against last year's rota, last year's wage rate and a platform contract that may since have changed its own standard.

## Then it checks

1. Every hour in the file carries at least four weeks of the owner's own order data, and no hour's contribution is estimated from a partial week or a single day.
2. The labour cost for every hour names who was rostered, their hourly cost including employer National Insurance and pension, and the date the rota was read.
3. Every hourly wage figure used is checked against the National Living Wage or National Minimum Wage rate in force on the date used, with that rate and its effective date stated.
4. Any hour added or changed for a rostered worker states whether their 48 hour weekly average is still within the Working Time Regulations limit, and names a signed opt out where one is relied on.
5. The file records the platform's stated availability and rejection standard and states, for the hours being changed, how the change will be reflected on every channel where the hours are published, with the date each channel was updated.
6. The file states whether display of the hygiene rating is compulsory for the premises based on its nation, and where the rating is shown if it is displayed.

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 typical peak hour, a typical delivery order pattern by time of day, or any benchmark of this kind. No published figure exists for a single independent UK venue, and an hour chosen from an article about delivery trends is an hour chosen for somebody else's customers.
- Never decide an hour is unprofitable from a single week. Four consecutive weeks is the minimum, matching the minimum commission-maths uses for a statement period, because a wet Tuesday or a local event can make one week look nothing like the next.
- Never roster a worker past the Working Time Regulations average without a signed opt out on file, and never treat an unsigned verbal agreement as one.
- Never use last year's minimum wage rate in a labour cost calculation. Rates change every April and a rate used six months stale can make a genuinely profitable hour look like a loss, or the reverse.
- Never close an hour on the platform without updating every other channel that publishes it. A rejected order caused by a stale website counts against the same standard as a rejected order caused by a closed kitchen.
- This output is a working document prepared for the owner to check against their own order data and payroll, and for their accountant on labour cost and their employment law adviser on rostering and the Working Time Regulations. It applies published rules and the owner's own figures to a draft plan. It is not legal advice, it is not payroll advice and it is not a ruling that the rota complies.

## Built from
- Food Standards Agency and GOV.UK, "FHRS: Displaying your rating", https://www.gov.uk/government/publications/fhrs-displaying-your-rating/fhrs-displaying-your-rating, updated 10 July 2026, read 23 September 2026: the Wales and Northern Ireland display duty and the online placement principles in step 8.
- Food Standards Agency, "Future of Food Regulation report to the FSA Board: September 2026", https://www.gov.uk/government/publications/food-standards-agency-september-2026-board-meeting/future-of-food-regulation-report-to-the-fsa-board-september-2026, published September 2026, read 23 September 2026: the current not-yet-mandatory status of online hygiene rating display in England, in step 8.
- GOV.UK, "National Minimum Wage and National Living Wage rates", https://www.gov.uk/national-minimum-wage-rates, rates effective from 1 April 2026, read 23 September 2026: the hourly rates by age band in step 5.
- The Working Time Regulations 1998, SI 1998/1833, regulation 4, https://www.legislation.gov.uk/uksi/1998/1833/regulation/4, read 23 September 2026: the 48 hour weekly average and reference period in step 4.
- Deliveroo, "Deliveroo Partners Terms and Conditions", https://merchants.deliveroo.com/en-GB/legal/terms, page states last updated 14 January 2021 with later dated sections, read 23 September 2026: the opening hours availability duty and the 98% availability and under 1% rejection standards in step 6.
- Uber, "Uber Eats Merchant Terms and Conditions" (Great Britain), https://www.uber.com/gb/en/legal/uber-eats-merchant-terms-and-conditions/, page states last modified 16 June 2025, read 23 September 2026: the business hours availability duty and the Success Score Policy consequence in step 6.

Prompt for Codex

# delivery-hours

## You are given
The owner's own order data for at least four consecutive weeks, one row per hour per day, per channel, stating whether the venue was open that hour and how many orders were placed. The per order contribution figures already calculated in the owner's commission-maths file, by platform. The rota covering the hours under review, naming who worked, their role, their hourly wage and whether employer National Insurance and pension are included in the figure supplied. The National Minimum Wage or National Living Wage rate the owner is using for each role, and the date it was checked. For any worker whose hours are changing, the owner's record of their average weekly hours over the applicable reference period and whether a Working Time Regulations opt out is signed and on file. The owner's platform merchant agreement extract on availability and rejection standards. The list of every channel where the venue's opening hours are published, with the date each was last updated. The premises' nation of trading and its current hygiene rating status. All judgement calls, including which hours to test, which worker is rostered where, and whether an opt out is obtained, have already been made by the owner and are supplied to you.

## Produce
Write into a `./delivery-hours-output/` folder:

1. `hourly-order-log.csv` with these columns in this order: `date`, `day_of_week`, `hour_start`, `hour_end`, `channel`, `open`, `orders_count`, `gross_order_value_gbp`. `open` is `yes` or `no`. `channel` is exactly one of `deliveroo`, `uber_eats`, `just_eat`, `own_channel`, `other`. A `TOTAL` row per hour of the week carries the sum of `orders_count` across all supplied dates for that hour.
2. `labour-cost-by-hour.csv` with columns: `hour_start`, `hour_end`, `day_of_week`, `worker_name_or_role`, `hourly_wage_gbp`, `wage_includes_ni_and_pension`, `hours_worked`, `labour_cost_gbp`, `rota_source_date`. `wage_includes_ni_and_pension` is `yes` or `no`. Any row where it is `no` is listed in `gaps.md` with the labour cost recorded as understated.
3. `minimum-wage-check.csv` with columns: `worker_name_or_role`, `age_band`, `hourly_wage_gbp`, `applicable_rate_gbp`, `rate_effective_date`, `meets_minimum`. `age_band` is exactly one of `21 and over`, `18 to 20`, `under 18`, `apprentice`, `not stated`. `meets_minimum` is `yes`, `no` or `not stated`. Every row where `meets_minimum` is `no` or `not stated` is listed in `gaps.md`.
4. `working-time-check.csv` with columns: `worker_name_or_role`, `average_weekly_hours`, `reference_period_weeks`, `within_48_hour_average`, `opt_out_signed`, `opt_out_file_reference`. `within_48_hour_average` and `opt_out_signed` are each `yes`, `no` or `not stated`. Any row where `within_48_hour_average` is `no` and `opt_out_signed` is not `yes` is listed in `gaps.md`.
5. `contribution-by-hour.csv` with columns: `hour_start`, `hour_end`, `day_of_week`, `channel`, `average_orders_per_week`, `contribution_per_order_gbp`, `revenue_contribution_gbp`, `labour_cost_gbp`, `net_contribution_gbp`, `loses_money`. `contribution_per_order_gbp` is carried in from the owner's supplied commission-maths figures, never recalculated. `loses_money` is `yes` or `no`. Rows are sorted with the most negative `net_contribution_gbp` first.
6. `channel-hours-consistency.csv` with columns: `channel`, `stated_hours_verbatim`, `last_updated_date`, `matches_actual_trading_hours`. `matches_actual_trading_hours` is `yes`, `no` or `not stated`. Every row where it is `no` or `not stated` is listed in `gaps.md`.
7. `hygiene-rating-display.csv` with columns: `nation_of_trading`, `display_compulsory`, `current_rating`, `rating_date`, `online_display_channel`, `placement_meets_fsa_principles`. `display_compulsory` is `yes` where the nation is Wales or Northern Ireland, `no` where it is England, and `not stated` otherwise. `placement_meets_fsa_principles` is `yes`, `no` or `not stated`.
8. `recommended-hours.csv` with columns: `hour_start`, `hour_end`, `day_of_week`, `current_status`, `recommended_status`, `net_contribution_gbp`, `reason`. `current_status` and `recommended_status` are each `open` or `closed`. `reason` names the row in `contribution-by-hour.csv` or `working-time-check.csv` that drove the recommendation.
9. `gaps.md` a numbered list of: every hour with fewer than four weeks of order data; every labour cost row with no employer National Insurance and pension confirmation; every worker whose wage does not meet the applicable minimum rate or whose age band is not stated; every worker whose average weekly hours exceed the 48 hour average with no signed opt out; every channel whose stated hours do not match actual trading or carry no confirmed update date; and any figure the owner supplied without a date.

## Rules
- Codex calculates, sorts, compares and records. It never decides which hours to open or close, never sets a wage, never decides whether an opt out is needed, and never writes the published hours text for any channel. Those were supplied.
- Never recalculate a per order contribution figure. Carry it in exactly as supplied from the owner's commission-maths file, and record a mismatch in `gaps.md` rather than adjusting either file.
- Never estimate a missing week of order data. An hour with fewer than four weeks supplied has its contribution marked incomplete rather than calculated from what exists.
- Never apply a minimum wage rate that is not the one supplied with its effective date. A rate read once and reused past its effective period is recorded in `gaps.md`, not corrected silently.
- Never treat a verbal agreement as a Working Time Regulations opt out. Only a signed document with a file reference supports `opt_out_signed` of `yes`.
- Never write a typical peak hour, a typical delivery order pattern, or any industry benchmark into any file. No such figure exists for a single independent UK venue and none is to be recorded.
- Use British English, GBP written as `GBP` or the pound sign, and DD Month YYYY dates. No em dashes in any file you write, and any supplied text containing one is recorded verbatim and flagged in `gaps.md`.
- Every channel name, stated hours text and worker name is copied exactly as supplied, including its punctuation and capitalisation.
- Every file ends with this line: this is a working document prepared for the owner to check against their own order data and payroll, and for their accountant on labour cost and their employment law adviser on rostering and the Working Time Regulations. It applies supplied figures to a draft plan and is not legal advice, payroll advice or a ruling that the rota complies.

## Return
The absolute path of every file written, the row count of each CSV, the number of hours with at least four weeks of data against the number still incomplete, the count of loss making hours and the days and times they fall on, the count of workers failing the minimum wage check and their names, the count of workers exceeding the 48 hour average with no signed opt out, the count of channels whose stated hours do not match actual trading, the hygiene rating display conclusion for the premises' nation, and the `gaps.md` item count.

Built from the best public work on this

Sources for delivery-hours

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

1. Food Standards Agency and GOV.UK, "FHRS: Displaying your rating"

https://www.gov.uk/government/publications/fhrs-displaying-your-rating/fhrs-displaying-your-rating, updated 10 July 2026, read 23 September 2026.

This is the source for the display duty in step 8, and it draws a sharp line between three nations rather than one UK-wide rule. The duty is stated as absolute for two of them: "Food businesses in Northern Ireland and Wales must display the rating sticker sent to them. It is the law", and it must be "displayed at or near the entrance to your business in a place where your customers can easily see it." No equivalent compulsory sentence exists for England on this page, which is itself the evidence for treating the physical sticker as voluntary there.

The three online placement principles used in step 8 come from the same page: the rating should "appear prominently on your website so that it is readily seen when your customer accesses a page", "be adequately sized so that it is easily read by your customer", and "appear anywhere prior to the point where your customer selects food or places an order". These are placement principles for a business that chooses to display its rating online, and the page does not state that online display is itself compulsory anywhere in the UK, which is why source 2 is needed to settle the current legal status rather than the recommended layout.

Where the skill departs: the page also covers the process for requesting a replacement sticker and the right to request a re-visit before a rating is published, neither of which bears on an hours decision and neither of which is repeated here.

2. Food Standards Agency, "Future of Food Regulation report to the FSA Board: September 2026"

https://www.gov.uk/government/publications/food-standards-agency-september-2026-board-meeting/future-of-food-regulation-report-to-the-fsa-board-september-2026, published September 2026, read 23 September 2026.

This is the source that stops step 8 overclaiming. It lists, among the outcomes the FSA's programme is working towards rather than among rules already in force, "mandatory Food Hygiene Rating Display online across the UK and in-store in England (it is already mandatory in Wales and Northern Ireland)". The parenthetical confirms source 1's position for Wales and Northern Ireland from the regulator's own current reporting, and the surrounding sentence confirms that mandatory online display, and mandatory in-store display in England, are both still future work with no legislated date attached as of this report. A search for a firmer timeline found only that FSA research and consultation planning around this question was continuing through 2026, with no commencement date published, so the skill records the position as not yet in force rather than guessing when it might commence.

Where the skill departs: the wider report covers the FSA's full regulatory reform programme across several workstreams unrelated to hygiene rating display, and only the one sentence bearing on step 8 is used.

3. GOV.UK, "National Minimum Wage and National Living Wage rates"

https://www.gov.uk/national-minimum-wage-rates, rates effective from 1 April 2026, read 23 September 2026.

This is the source for step 5. The page states the current hourly rates: £12.71 for workers aged 21 and over, £10.85 for 18 to 20 year olds, and £8 for under 18s and for apprentices, and confirms that "rates change on 1 April every year". Because these rates were set for 1 April 2026 and the skill is being used on 23 September 2026, they are the rates in force on the date of use, and the skill records that effective date on every row rather than only the figure, so that a file reopened after the next 1 April shows immediately which rows are stale.

Where the skill departs: the page also covers apprentice rate eligibility rules and the accommodation offset, which affect payroll calculations this skill does not perform, and are left to the owner's payroll process.

4. The Working Time Regulations 1998, SI 1998/1833, regulation 4

https://www.legislation.gov.uk/uksi/1998/1833/regulation/4, read 23 September 2026.

This decides step 4. Regulation 4 states the limit in the form the skill applies it: "a worker's working time, including overtime, in any reference period which is applicable in his case shall not exceed an average of 48 hours for each seven days." The reference period is normally 17 weeks, so a single busy fortnight does not by itself put a worker over the limit, which is why the check needs the average over the period rather than a single week's rota. A worker may agree in writing to work beyond the average, and the employer is expected to keep a record of who has done so, which is the basis for the skill's insistence on a signed opt out with a file reference rather than a remembered verbal agreement.

Where the skill departs: the Regulations also set separate rules for night work, rest breaks and young workers, all of which matter to a kitchen rostering late hours and none of which are reproduced here. An owner adding genuinely late hours should read those provisions directly or take the question to an employment law adviser, and the skill's rule section says so.

5. Deliveroo, "Deliveroo Partners Terms and Conditions"

https://merchants.deliveroo.com/en-GB/legal/terms, page states last updated 14 January 2021 with later dated sections, read 23 September 2026.

This is the source for the contractual half of step 6. The obligation is stated for each of Deliveroo's three commercial models in near identical wording, that a partner must "Ensure that all relevant menu items are available to be ordered by a customer in a Delivery Order during your opening hours", against a stated target that "You should be available for orders for 98% of your opening hours on the Platform" and an instruction to "Use reasonable endeavours to reject less than 1% of Delivery Orders received through the Platform". The skill reads these together to make the point that quietly going offline during a stated hour is not a neutral act: it is measured against both the availability percentage and, from the customer's side, indistinguishable from a rejected order.

Where the skill departs: the terms also carry a Marketer platform eligibility threshold under which marketing tool access is suspended once the average rejection rate reaches a stated level, which belongs to platform-listing's ranking and visibility material rather than to an hours decision, and is not repeated here.

6. Uber, "Uber Eats Merchant Terms and Conditions" (Great Britain)

https://www.uber.com/gb/en/legal/uber-eats-merchant-terms-and-conditions/, page states last modified 16 June 2025, read 23 September 2026.

This is Uber's version of the same obligation, drafted differently and worth citing separately because the consequence is structured differently. Section 3(a) states that "Merchant will make Items available for purchase through the Uber Eats App during its normal business hours." The consequence sits in the Success Score Policy referenced at section 2, under which "Merchant's access to certain Uber Tools, including but not limited to advertising and promotional offer tools, may be restricted or removed if Merchant's Success Score falls below minimum thresholds", and in the most serious case "Uber UK reserves the right to deactivate Merchant's account and terminate this Agreement". The terms incorporate the Success Score Policy by reference rather than stating its specific thresholds in the document itself, so the skill records that the policy exists and what it can lead to, without inventing a percentage the terms do not state.

Where the skill departs: the terms also define a Substandard Item Delivery Fee and other charge mechanisms used in commission-maths, and are not repeated here.

The best public prompt found

The closest public artefact remains the `campaign-plan` skill in Anthropic's `knowledge-work-plugins` repository, raw source at https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/main/marketing/skills/campaign-plan/SKILL.md, loaded successfully on 23 September 2026. Its repository star count, read from https://api.github.com/repos/anthropics/knowledge-work-plugins on 23 September 2026, was 25,466.

It has nothing to say about rostering, minimum wage or platform availability standards, but its dependency ordering is the same discipline this skill relies on: a decision about one hour cannot be made honestly before the labour cost for that hour and the legal ceiling on the person working it are both on the table, in the same way that skill insists a landing page exists before an advert can point at it.

What was deliberately not copied. No public prompt or skill was found in the anthropics/knowledge-work-plugins or anthropics/skills repositories, or in a wider GitHub search for hospitality rostering or shift profitability tools, that combines order data, labour law and a food platform's own contractual availability standard into one decision. The nearest adjacent material is generic shift scheduling software marketing, which assumes a benchmark occupancy curve the skill explicitly refuses to invent, and which never touches the Working Time Regulations or the platform's own rejection standard at all.

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.