Pre-production

Once your breakdown is committed, pre-production is everything you do before the first shoot day: lock the schedule, build the budget, scout and capture locations, gather props, plan shots, log every document. This page walks each module top-to-bottom. Most of these pages also launch a short in-app spotlight tour the first time you open them (replay any of them from the gear menu, "Show guide"), so this written guide is a companion to what Grace shows you in-product.

Schedule

/dashboard/pre-pro/schedule. The strip-based shooting schedule.

Schedule

A freshly committed script gives you an empty schedule and a pool of scenes. Press GRACE: AUTO-SCHEDULE to have Grace lay them out for you. It is a greedy, location-first packer: it groups scenes by location, puts INT before EXT on the same day, and fills roughly 4 pages per day. Grace-placed strips carry a blue outline (Grace-suggested); the moment you drag one it becomes yours. Treat it as a first pass, not a solver. Grace does not check cast availability, day/night turnaround, or minor-hours clashes for you, so you finish the board by hand. From here you drag strips between days, add lunch strips, add company-move strips, add second-unit / stunt-rehearsal / travel rows.

Each strip carries:

  • Strip type - scene / lunch / second_meal / company_move / day_start / second_unit / stunt_rehearsal / travel / custom.
  • Scene reference - for scene strips, the FK to the scene.
  • Duration - minutes. Auto-computed from pageCount × pace, override-able.
  • Color - INT-DAY / EXT-DAY / INT-NIGHT / EXT-NIGHT for scene strips; user-set for non-scene.
  • Notes - free-form, surfaces on call sheets.

Day clock

Each day's wrap time is computed from generalCall + sum(strip durations + prep/move overlap). The total includes per-scene prep (lighting / makeup / art-dept / grips-rigging), which is what makes the wrap time honest. Pre-2.5 versions counted shoot-only and under-estimated mornings; current code includes prep + shoot per scene strip.

Versioning

Behind the scenes, the schedule lives in a schedule_versions row. Every production gets an empty v1 baseline at script commit time. If you fork the schedule on a revision commit (or via the artifact version bar on the page), you create v2 / v3 / etc. - useful for "what if we shoot the diner scene before the gas station scene" what-if planning. Only one version is active per production at a time.

Budget

/dashboard/pre-pro/budget.

Budget

Committing a script does not seed a budget. It creates an empty budget version (v1). The first time you open the budget page for a version, Grace asks you to pick a starting point:

  • Grace Budget - reads your breakdown, pre-populates union scale rates, and auto-adds every cast and crew member as a priced line. The fastest start.
  • Minimum Grace - every department, no template rates, but your cast and crew still auto-fill as priced lines. You add the rest.
  • Empty - every department, zero line items, no sync. Fully manual.

The structure is four levels:

category → account → line → item

Items hold the actual numbers (units, rate, fringe percent). Lines group items. Accounts group lines. Categories group accounts.

Where the numbers come from

Grace's rates are a maintained union / scale rate table (LA / West-Coast studio, current tier). They are scale minimums, so every Grace-priced number is a starting point you can override. Employer fringes (union health / pension, payroll taxes, workers' comp) are derived per person from their union affiliation.

Pull cast & crew (person-as-line)

The headline budget interaction is PULL CAST & CREW. Turn it on and every cast and crew member becomes its own priced budget line under their department account, priced day-rate × work days (or the roster's per-day rate) with fringe from that person's union. Change someone's work days, rate, or union and the line re-cascades. The button reads CAST & CREW SYNCED once it is on; click it again to re-pull. Manual and locked lines are respected, and a person line already referenced by a PO is frozen, not deleted.

The dot on every line

Every budget line carries a trust dot. This is the same three-color model Grace uses everywhere:

  • Blue - Grace produced it and it is not yet verified (a rate lookup or an estimate). Visible and editable.
  • Gold - a human's hard manual override. It breaks the cascade (Grace stops managing that cell) and is sticky: it never auto-flips. Only you can move it back to blue (let Grace manage again) or to green (accept it as verified). A verified document that conflicts with a gold value raises a warning, never an auto-flip.
  • Green - a verified value. Green only ever upgrades a blue, two ways: confirmed by a real production source (a signed / executed deal memo, contract, or PO), or derived entirely from trusted (gold / green) inputs. A locked line renders gold, not green.

For a cast or crew line, uploading and executing a signed deal memo (see Documents) flips both the roster row and its budget person-line green.

Grace read the script

When Grace parses your script it also writes a content profile: a set of blue GRACE READ THE SCRIPT chips on the top sheet (production tier, shape tags, union posture, size estimate). These are always blue and never dollars. They only pre-fill your production size so you are not starting from a blank field.

Budget vs script + burn forecast

Two intelligence panels sit on the top sheet:

  • BUDGET vs SCRIPT - a reconciliation radar that flags structural gaps between what the script implies and what the budget contains (for example, stunts in the breakdown with no stunt line).
  • BURN FORECAST - once POs start landing, it projects your committed spend against the budget so you can see if you are on pace to exceed it.

Export

The header folds every PDF variant into one EXPORT dropdown: this view, full budget, an actualized top sheet (with the PO actuals column), and a Movie Magic top-sheet layout.

Versioning

Same artifact-version pattern as schedule. Each production has a budget version. From the version bar you can start a new version (Grace / Minimum Grace / duplicate / empty) to model "let's see what cutting day 18 would do to total." Only one version is active at a time.

Actuals

POs roll up to budget actuals automatically. The Budget Snapshot card on the per-production dashboard shows total committed (PO sum) vs total budget. Hover the percent bar for breakdown.

DOOD (Day Out of Days)

/dashboard/pre-pro/dood.

DOOD

Cast-by-day grid. Each row is a cast member; each column is a shoot day. Cells use the industry letter codes, derived from cast.workDays and the schedule:

  • SW - Start Work (first work day).
  • W - Work (a work day between start and finish).
  • WF - Work Finish (last work day).
  • SWF - Start-Work-Finish (a single-day role, start and finish on the same day).
  • H - Hold (inside the work span but not shooting that day).
  • blank - off, outside the cast member's work span.

Useful for confirming nobody is scheduled when they shouldn't be (e.g., a minor exceeding daily-hours, an actor with a hold day in their contract). A SYNC ALL TO GRACE button re-derives every cast member's days from the current schedule.

Locations

/dashboard/pre-pro/locations.

Locations

One row per location. Address, geocoded lat/lon (Nominatim, browser-side to avoid rate limiting), nearest hospital (auto-resolved from a "emergency room hospital near {lat,lon}" Google Maps Text Search + blacklist filter), permit info, parking notes, power availability, generator notes, rental fee.

The lat/lon drives the WeatherStrip on the Set Dashboard. The hospital fallback drives the SafetyBulletin emergency contacts strip.

Auto-resolution

When you type an address and tab out, Grace geocodes via Nominatim (free OpenStreetMap service). The result populates lat/lon and resolves the nearest hospital using a name-blacklist filter to skip nursing homes / hospices / urgent-care clinics in favor of an actual emergency room.

Props

/dashboard/pre-pro/props.

Props

Master inventory of physical props (or prop variants - Hero / Breakaway / Wet / Stunt). Linked to scene elements via case-insensitive name match (no FK - props can be renamed without breaking scene links).

Each prop tracks:

  • Name + version type - "Coffee mug" + "Hero" / "Breakaway" / "Wet" etc.
  • Physical status - needed / sourced / rented / made / approved.
  • Physical location - needed / truck / set / safe / vendor / missing.
  • Vendor + rental cost - linked to the vendors master.
  • Photo - uploaded reference.

Shot list

/dashboard/pre-pro/shot-list.

Shot list

Per-scene shot rows. Each shot has:

  • Shot number - 1, 2, 3 within the scene.
  • Size - XCU / CU / MCU / MS / MWS / WS etc.
  • Angle - eye level / high / low / over-shoulder etc.
  • Lens - focal length.
  • Movement - static / pan / tilt / dolly / handheld / steadicam etc.
  • Camera - A / B / C.
  • Description - free text.

VFX shots get an additional vfx_shot_requirements row attached (clean plate, tracking, HDRI, etc.). See VFX flagging + turnover.

Director and DP share this list. Once you start shooting, takes get logged against shots (Script Sup workflow).

Vendors + Purchase Orders

/dashboard/pre-pro/vendors and /dashboard/pre-pro/purchase-orders.

Vendors POs

Vendors is the master list - name, contact, payment terms, W-9 status. Used by both props (rental vendor) and POs (vendor for an estimate / receipt).

POs are the actual budget commitments. Each PO ties to (account, line, item?) - usually item-specific for clarity. Status cycles pendingapprovedpaid (or rejected). Estimated amount + actual amount + receipt PDF upload.

POs roll up to budget actuals via computeBudgetActuals() - see the Budget Snapshot dashboard card.

Documents

/dashboard/pre-pro/documents.

Documents

Catch-all for production paperwork: deal memos, location agreements, insurance certs, permits, the script PDF itself, and the 8 compliance documents Grace generates server-side (Exhibit G, turnaround waiver, meal penalty acknowledgment, etc.).

Generate a standard document

Grace can generate 8 standard, pure-data forms in-app: crew and cast deal memos, a cast talent release, an NDA, and location / appearance / personal / crowd releases. Pick one, Grace fills it from your roster and production data, you get an inline-editable preview, and it flows straight into the signature composer. Counsel review of the generated wording is a standing recommendation, not a blocker.

Generate a document

Send for signature (e-sign)

Any non-executed PDF (a Grace-generated form, a compliance doc, or your own uploaded contract) can be sent for signature. SEND FOR SIGNATURE opens the signature composer, a drag-and-drop overlay where you place signature, date, name, initials, and free-text boxes on the real PDF and assign each field to a recipient (grouped by cast / crew). Grace routes the request through Documenso and emails each signer from an @graceproductionos.com address. Grace never signs for you: it places the fields and collects the signatures, the humans sign.

Status

Status cycles: draftpending_signatureexecutedexpired / superseded. A document lands as draft. Sending it for signature moves it to pending_signature. A completed signature (or an uploaded already-signed copy) flips it to executed, and for a deal memo that executed transition greens the roster row and its budget person-line. Documents stay accessible after status changes - you can always pull an executed deal memo even after wrap.

Creative refs

/dashboard/production/creative (in the sidebar this lives under Creative Prep alongside Shot List + Props).

Creative refs

Mood boards, frame references, previs, lookbooks. Per-asset tagging by scene IDs (an asset can reference multiple scenes). Per-department access: T1 gets full access, T2 gets read by default (narrowable to specific departments), T3 capped at read on their own department.

Video / image assets stream progressively so mobile Safari can preview without downloading the whole file.

What's next

Pre-production is iterative - schedule, budget, locations, shot list will all change as you scout, do read-throughs, and lock cast. Once the schedule is firm and you're within a week of shoot start, the 1st AD takes over and starts building call sheets.