Film and television production
Count the heads at the truck,
not from memory on Friday.
Crew tap an RFID badge at the catering line or the craft truck. The production is billed, never the person. That tap becomes a headcount you can commit to a caterer, a cost you can set against the day’s budget line, and an invoice you can settle from evidence instead of from whoever sounds more certain on the phone.
Prep is free. Nothing is metered until the first meal is actually served.
01
The unit of work
A shoot day is not a calendar date. It is an interval of instants from general call to wrap, and it crosses midnight routinely.
| 15:00 | General call | |
|---|---|---|
| 15:30 | Breakfast | open · 96 tapped |
| 21:10 | First meal | committed 118 · tapped 104 |
| 02:45 | Second meal | committed 118 · tapped 111 |
| 05:20 | Wrap | next calendar day |
Every meal on that strip belongs to the day that started before it, even though the clock rolled over twice. CrewFuel expresses the whole schedule as instants and decides which day a service belongs to by containment, so a night shoot does not silently split across two dates and get counted twice in the week it is billed for.
Today is the production’s own time zone, never the reader’s. Someone checking the numbers from another country reads exactly what the AD standing on set reads.
02
The argument this settles
At the end of a week the production and the caterer disagree about how many people ate. Today that is settled from memory, on a phone call, and whoever sounds more certain wins.
Every piece of evidence needed to settle it properly is already recorded somewhere — the caterer’s own declared count, the tap log, and the headcount they were held to. Nothing has ever put the three on one screen next to each other. The invoice at the end is the easy part; the variance with both parties’ names on it is the part worth having.
- Billed on the greater, not on what was eatenbilling_basis
- A caterer told to cook for eighty who sees sixty turn up is paid for eighty. They bought and prepared eighty meals, and the shortfall is the production’s to wear. Engineers reliably guess “you pay for what you ate” and produce a figure a caterer will reject — so the basis is recorded per commitment and read back, never assumed.
- Priced from what was agreedorg.rate_card_item
- Where an engagement cites a rate card, the rate in force at the service’s own start is the one that prices it. A rate agreed in week six prices week six and leaves week one exactly as it was invoiced.
- A tap nobody could place is not a rounding errorapp.tap_queue
- An unknown card is served anyway and lands in a queue. Until someone says who it was, that meal sits on the caterer’s invoice and on no person’s account, and every per-person and per-department figure is short by exactly that many heads. Each tap arrives with ranked candidates and the evidence for each one stated, because a suggestion whose reasoning is invisible is one nobody can check.
- Yesterday, before this morning’s meetinghot costs
- The question a UPM asks before the 7am production meeting is not “what did we spend” but “against what”. Yesterday’s catering and craft set against the budgeted figure for that day, the variance, and the cumulative position — early enough that today can still be changed.
03
Inside a production
The sidebar is built from your grants, so no two people on the show see the same console.
A caterer signing in gets the timetable they are cooking to, the menus, the rates they agreed and the invoices they are owed — scoped to their own engagement, and nothing else on the show. A craft operator gets the truck and its stock and not the catering line. The office gets all of it. A menu link that leads nowhere is worse than a menu that is short, so a section you cannot reach is not drawn.
- Overview
- Today at a glance
- Crew
- The roster and each person
- Meal services
- The timetable, day by day
- Locations
- Where each unit is, day by day
- Menus & allergens
- What is served, and what it conflicts with
- Craft catalogue
- What the truck stocks, and what it costs
- Craft stock
- Par, counts, variance, restock
- Stations & devices
- Tablets, tokens and craft stations
- Unmatched taps
- Cards nobody could place
- Rates
- What each supplier is paid, and when it changed
- Invoices
- Declared against tapped, and what is owed
- Budget & hot costs
- Yesterday against budget, and the trend
- Daily limits
- How much one person takes
- Reports
- Cost, headcount, exports
04
Rules we do not bend
Most of these override the obvious engineering instinct. Each one is here because the obvious version is wrong on a set.
- i
Nobody is ever turned away.
Every canteen system outside film enforces limits at the counter, and adopting that model is the fastest way to get this one unplugged. A grip taking a sixth bottle of water in August is doing their job; a runner carrying six coffees is carrying them for other people. A limit here observes and flags on the daily report — the person still gets their coffee. The single thing enforced at the line is one meal per person per service, which is a definition rather than a limit.
- ii
The production pays, never the person.
There is no wallet, no balance and no payment anywhere in this product. A person’s account is the record of what the show provided them, not a tab to be settled. Building it as a wallet is the single most tempting wrong turn in this domain.
- iii
No price ever appears at a kiosk.
They are not paying. A number on the screen invites an argument that does not exist, in front of a queue, with an operator who cannot resolve it.
- iv
Never report clear for something that was not checked.
A dietary requirement is free text typed by a coordinator; a menu is codes. Where the two cannot be reconciled the screen says check this by hand, loudly, and never quietly. A green tick over an unmatched allergy is worse than no screen at all, because it ends the conversation that would have caught it.
- v
A failed write says so, in words.
If something did not record, the screen tells the operator in language they can act on. A blank or green screen over a write that did not land is the worst defect this product can ship.
- vi
A rate is superseded, never edited.
Amending a rate writes a new row starting later and leaves the old one exactly as it was. If a rate were editable, agreeing a rise in week six would silently restate weeks one to five — invoices already reconciled, already approved, possibly already paid — and no screen anywhere would show that the number had moved.
- vii
Unknown is not zero.
A craft station that has never been counted has an unknown position, and the screen says unknown. A first count is an opening count and its variance is zero by definition. Reporting four units of shrinkage because the arithmetic started from nothing would discredit the one number that screen exists to produce.
05
The screens outside the office
A tablet at a serving point does not sign in. It pairs once with a device token from the production office and from then on authenticates as itself.
The readers are USB HID devices: they type the badge UID and press Enter, so the screen’s entire input model is a keyboard. A tap on the catering line returns the person’s name and moves the counter, or tells the operator plainly that this card has already been served, or that the card is unknown — serve them anyway and the tap is queued for someone to place later.
06
Where the product actually is
CrewFuel is early software. The console draws only sections that are built, and this page will not describe ones that are not.
Not built yet
There is no background worker. Daily limits are evaluated while a page is open rather than by a job, and only at production-wide, per-shooting-day scope. Narrower scopes are stored and shown but not evaluated, and the screen says so rather than reporting them clear.
Hot costs are computed live, not published. app.hot_cost_daily exists and is a background job’s output; no job writes it yet. Every figure on the budget screen is recomputed on read from the same sources invoicing uses, and the screen states that a published snapshot count of zero is a fact about the worker rather than about the show.
Craft consumption flags stay empty until that worker exists to write durable, policy-snapshotted rows — which is what an auditor eventually needs and a live computation cannot give.
- Signing in does not put you on a roster. Committing a headcount to a caterer is pinned by policy to a person on the show, so an account has to claim its own roster row first — an explicit act, never inferred from an access grant, because inflating the feeding list from the access-control table would quietly overstate every forecast built on it.
- What CrewFuel charges for CrewFuel is metered by the week and the mechanism is built, but the figures on the band ladder are placeholders pending commercial sign-off and are not published anywhere — including here. The pricing page says exactly how far that has got.
Create the company, create the production, paste the call sheet, issue a card. That card opens the catering line under the person’s name.