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.

Setting up a tablet at a serving pointCatering lineCraft truck

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.

One night-shoot day · illustrative
15:00General call
15:30Breakfastopen · 96 tapped
21:10First mealcommitted 118 · tapped 104
02:45Second mealcommitted 118 · tapped 111
05:20Wrapnext 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.