# From script to opening weekend: how a blockbuster gets made

> A process map exported from forks.world (https://forks.world). Author: Brian. Source: https://forks.world/p/cmv0kpddq0007jn06ld0drndf
> It describes who does what, in what order, and with which technology. Read the plain-language sections first; the JSON at the end is the exact, complete data.

## Summary

- 38 steps across 5 layers
- Persona: Writers, The studio, Cast and crew, The audience, Marketing

## Pain points

Where this process hurts, worst first:

- **Reshoot, recut or change the ending** (From script to opening weekend: how a blockbuster gets made; painful): Reshoots can cost a fortune and push the release date

## How to read this file

- A process is made of **layers**. The main layer is the top level; any step of kind `subprocess` opens a detail layer with its own lanes and steps.
- **Lanes** are either persona (people/roles) or technology (systems). Each step belongs to one lane; `using` lists tools a person uses for that step.
- Step kinds: `start`, `task`, `decision` (its arrows carry the answer as a label), `subprocess`, `end`.

## From script to opening weekend: how a blockbuster gets made

Lanes:
- Writers: person / role (id `writer`)
- The studio: person / role (id `studio`)
- Cast and crew: person / role (id `crew`)
- The audience: person / role (id `audience`)
- Marketing: person / role (id `mkt`)

Steps, in the order they run:

1. **A writer pitches an idea or a script** [start; Writers; id `b1`]
   - then Greenlight?
2. **Greenlight?** [decision; The studio; id `b2`]
   - if "Yes" go to Attach a director and big names; if "No" go to The project sits in development hell, or is shelved
3. **Attach a director and big names** [task; The studio; id `b3`]
   - then Set the budget and the release date
4. **Set the budget and the release date** [task; The studio; id `b4`]
   - then Pre-production: sets, costumes, storyboards
5. **Pre-production: sets, costumes, storyboards** [subprocess; Cast and crew; id `b5`], opens the detail layer "Pre-production"
   - then Shoot the film
6. **Shoot the film** [subprocess; Cast and crew; id `b6`], opens the detail layer "A day on set"
   - then Post-production: editing, visual effects, music
7. **Post-production: editing, visual effects, music** [subprocess; Cast and crew; id `b7`], opens the detail layer "Post-production"
   - then Test screenings
8. **Test screenings** [task; The audience; id `b8`]
   - then Do test audiences like it?
9. **Do test audiences like it?** [decision; The studio; id `b9`]
   - if "Yes" go to The trailer drops and the internet reacts; if "No" go to Reshoot, recut or change the ending
10. **The trailer drops and the internet reacts** [subprocess; Marketing; id `b10`], opens the detail layer "The trailer moment"
   - then Press tour, premieres, posters on every bus
11. **Press tour, premieres, posters on every bus** [task; Marketing; id `b11`]
   - then Opening weekend
12. **Opening weekend** [task; The audience; id `b12`]
   - then Does it beat expectations?
13. **Does it beat expectations?** [decision; The studio; id `b13`]
   - if "Yes" go to Word of mouth carries it: a long run, sequel talk; if "No" go to It becomes a write-down, then a streaming title
14. **Word of mouth carries it: a long run, sequel talk** [task; The audience; id `b14`]
   - then The box office total is in
15. **The box office total is in** [end; The studio; id `b16`]
16. **It becomes a write-down, then a streaming title** [task; The studio; id `b15`]
   - then The box office total is in
17. **Reshoot, recut or change the ending** [task; Cast and crew; id `b9a`] ⚠ PAIN POINT (painful): Reshoots can cost a fortune and push the release date
   - then Test screenings
18. **The project sits in development hell, or is shelved** [task; The studio; id `b2a`]
   - then Rewrite, attach a star, pitch another studio
19. **Rewrite, attach a star, pitch another studio** [task; Writers; id `b2b`]
   - then Greenlight?

```mermaid
flowchart LR
  subgraph l_writer["Writers"]
    n_b1(["A writer pitches an idea or a script"])
    n_b2b["Rewrite, attach a star, pitch another studio"]
  end
  subgraph l_studio["The studio"]
    n_b2{"Greenlight?"}
    n_b2a["The project sits in development hell, or is shelved"]
    n_b3["Attach a director and big names"]
    n_b4["Set the budget and the release date"]
    n_b9{"Do test audiences like it?"}
    n_b13{"Does it beat expectations?"}
    n_b15["It becomes a write-down, then a streaming title"]
    n_b16(["The box office total is in"])
  end
  subgraph l_crew["Cast and crew"]
    n_b5[["Pre-production: sets, costumes, storyboards"]]
    n_b6[["Shoot the film"]]
    n_b7[["Post-production: editing, visual effects, music"]]
    n_b9a["Reshoot, recut or change the ending"]
  end
  subgraph l_audience["The audience"]
    n_b8["Test screenings"]
    n_b12["Opening weekend"]
    n_b14["Word of mouth carries it: a long run, sequel talk"]
  end
  subgraph l_mkt["Marketing"]
    n_b10[["The trailer drops and the internet reacts"]]
    n_b11["Press tour, premieres, posters on every bus"]
  end
  n_b1 --> n_b2
  n_b2 -->|"Yes"| n_b3
  n_b2 -->|"No"| n_b2a
  n_b2a --> n_b2b
  n_b2b --> n_b2
  n_b3 --> n_b4
  n_b4 --> n_b5
  n_b5 --> n_b6
  n_b6 --> n_b7
  n_b7 --> n_b8
  n_b8 --> n_b9
  n_b9 -->|"Yes"| n_b10
  n_b9 -->|"No"| n_b9a
  n_b9a --> n_b8
  n_b10 --> n_b11
  n_b11 --> n_b12
  n_b12 --> n_b13
  n_b13 -->|"Yes"| n_b14
  n_b13 -->|"No"| n_b15
  n_b14 --> n_b16
  n_b15 --> n_b16
```

### Pre-production (detail of step "Pre-production: sets, costumes, storyboards")

Lanes:
- Cast and crew: person / role (id `crew`)
- The studio: person / role (id `studio`)

Steps, in the order they run:

1. **Scout locations and build sets** [start; Cast and crew; id `p1`]
   - then Hold casting and rehearsals
2. **Hold casting and rehearsals** [task; Cast and crew; id `p2`]
   - then Is the schedule realistic?
3. **Is the schedule realistic?** [decision; The studio; id `p3`]
   - if "Yes" go to Everyone knows their call time; if "No" go to Cut scenes or add shooting days
4. **Everyone knows their call time** [end; Cast and crew; id `p4`]
5. **Cut scenes or add shooting days** [task; The studio; id `p3a`]
   - then Is the schedule realistic?

```mermaid
flowchart LR
  subgraph l_crew["Cast and crew"]
    n_p1(["Scout locations and build sets"])
    n_p2["Hold casting and rehearsals"]
    n_p4(["Everyone knows their call time"])
  end
  subgraph l_studio["The studio"]
    n_p3{"Is the schedule realistic?"}
    n_p3a["Cut scenes or add shooting days"]
  end
  n_p1 --> n_p2
  n_p2 --> n_p3
  n_p3 -->|"Yes"| n_p4
  n_p3 -->|"No"| n_p3a
  n_p3a --> n_p3
```

### Post-production (detail of step "Post-production: editing, visual effects, music")

Lanes:
- Cast and crew: person / role (id `crew`)

Steps, in the order they run:

1. **An editor assembles a first cut** [start; Cast and crew; id `o1`]
   - then Visual effects artists build the impossible shots
2. **Visual effects artists build the impossible shots** [task; Cast and crew; id `o2`]
   - then A composer scores the film
3. **A composer scores the film** [task; Cast and crew; id `o3`]
   - then Mix the sound and grade the color
4. **Mix the sound and grade the color** [end; Cast and crew; id `o4`]

```mermaid
flowchart LR
  subgraph l_crew["Cast and crew"]
    n_o1(["An editor assembles a first cut"])
    n_o2["Visual effects artists build the impossible shots"]
    n_o3["A composer scores the film"]
    n_o4(["Mix the sound and grade the color"])
  end
  n_o1 --> n_o2
  n_o2 --> n_o3
  n_o3 --> n_o4
```

### A day on set (detail of step "Shoot the film")

Lanes:
- Cast and crew: person / role (id `crew`)

Steps, in the order they run:

1. **Call time before dawn** [start; Cast and crew; id `s1`]
   - then Film the scene several ways
2. **Film the scene several ways** [task; Cast and crew; id `s2`]
   - then Does the director have the take?
3. **Does the director have the take?** [decision; Cast and crew; id `s3`]
   - if "Yes" go to Move to the next setup; if "No — go again" go to Film the scene several ways
4. **Move to the next setup** [task; Cast and crew; id `s4`]
   - then Wrap for the day
5. **Wrap for the day** [end; Cast and crew; id `s5`]

```mermaid
flowchart LR
  subgraph l_crew["Cast and crew"]
    n_s1(["Call time before dawn"])
    n_s2["Film the scene several ways"]
    n_s3{"Does the director have the take?"}
    n_s4["Move to the next setup"]
    n_s5(["Wrap for the day"])
  end
  n_s1 --> n_s2
  n_s2 --> n_s3
  n_s3 -->|"Yes"| n_s4
  n_s3 -->|"No — go again"| n_s2
  n_s4 --> n_s5
```

### The trailer moment (detail of step "The trailer drops and the internet reacts")

Lanes:
- Marketing: person / role (id `mkt`)
- The audience: person / role (id `audience`)

Steps, in the order they run:

1. **Cut a teaser for the first look** [start; Marketing; id `t1`]
   - then Does the internet notice?
2. **Does the internet notice?** [decision; The audience; id `t2`]
   - if "Yes" go to Fans break down every frame online; if "No" go to Release a bigger trailer or a viral stunt
3. **Fans break down every frame online** [task; The audience; id `t3`]
   - then Hype builds toward release
4. **Hype builds toward release** [end; Marketing; id `t4`]
5. **Release a bigger trailer or a viral stunt** [task; Marketing; id `t2a`]
   - then Does the internet notice?

```mermaid
flowchart LR
  subgraph l_mkt["Marketing"]
    n_t1(["Cut a teaser for the first look"])
    n_t2a["Release a bigger trailer or a viral stunt"]
    n_t4(["Hype builds toward release"])
  end
  subgraph l_audience["The audience"]
    n_t2{"Does the internet notice?"}
    n_t3["Fans break down every frame online"]
  end
  n_t1 --> n_t2
  n_t2 -->|"Yes"| n_t3
  n_t2 -->|"No"| n_t2a
  n_t2a --> n_t2
  n_t3 --> n_t4
```

## Full data (JSON)

```json
{
  "title": "From script to opening weekend: how a blockbuster gets made",
  "maps": {
    "m_pre": {
      "id": "m_pre",
      "lanes": [
        {
          "id": "crew",
          "name": "Cast and crew",
          "type": "person"
        },
        {
          "id": "studio",
          "name": "The studio",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "p1",
          "kind": "start",
          "lane": "crew",
          "next": [
            {
              "to": "p2"
            }
          ],
          "uses": [],
          "label": "Scout locations and build sets"
        },
        {
          "id": "p2",
          "kind": "task",
          "lane": "crew",
          "next": [
            {
              "to": "p3"
            }
          ],
          "uses": [],
          "label": "Hold casting and rehearsals"
        },
        {
          "id": "p3",
          "kind": "decision",
          "lane": "studio",
          "next": [
            {
              "to": "p4",
              "label": "Yes"
            },
            {
              "to": "p3a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Is the schedule realistic?"
        },
        {
          "id": "p3a",
          "kind": "task",
          "lane": "studio",
          "next": [
            {
              "to": "p3"
            }
          ],
          "uses": [],
          "label": "Cut scenes or add shooting days"
        },
        {
          "id": "p4",
          "kind": "end",
          "lane": "crew",
          "next": [],
          "uses": [],
          "label": "Everyone knows their call time"
        }
      ],
      "title": "Pre-production",
      "parent": {
        "map": "m_root",
        "step": "b5"
      }
    },
    "m_post": {
      "id": "m_post",
      "lanes": [
        {
          "id": "crew",
          "name": "Cast and crew",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "o1",
          "kind": "start",
          "lane": "crew",
          "next": [
            {
              "to": "o2"
            }
          ],
          "uses": [],
          "label": "An editor assembles a first cut"
        },
        {
          "id": "o2",
          "kind": "task",
          "lane": "crew",
          "next": [
            {
              "to": "o3"
            }
          ],
          "uses": [],
          "label": "Visual effects artists build the impossible shots"
        },
        {
          "id": "o3",
          "kind": "task",
          "lane": "crew",
          "next": [
            {
              "to": "o4"
            }
          ],
          "uses": [],
          "label": "A composer scores the film"
        },
        {
          "id": "o4",
          "kind": "end",
          "lane": "crew",
          "next": [],
          "uses": [],
          "label": "Mix the sound and grade the color"
        }
      ],
      "title": "Post-production",
      "parent": {
        "map": "m_root",
        "step": "b7"
      }
    },
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "writer",
          "name": "Writers",
          "type": "person"
        },
        {
          "id": "studio",
          "name": "The studio",
          "type": "person"
        },
        {
          "id": "crew",
          "name": "Cast and crew",
          "type": "person"
        },
        {
          "id": "audience",
          "name": "The audience",
          "type": "person"
        },
        {
          "id": "mkt",
          "name": "Marketing",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "b1",
          "kind": "start",
          "lane": "writer",
          "next": [
            {
              "to": "b2"
            }
          ],
          "uses": [],
          "label": "A writer pitches an idea or a script"
        },
        {
          "id": "b2",
          "kind": "decision",
          "lane": "studio",
          "next": [
            {
              "to": "b3",
              "label": "Yes"
            },
            {
              "to": "b2a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Greenlight?"
        },
        {
          "id": "b2a",
          "kind": "task",
          "lane": "studio",
          "next": [
            {
              "to": "b2b"
            }
          ],
          "uses": [],
          "label": "The project sits in development hell, or is shelved"
        },
        {
          "id": "b2b",
          "kind": "task",
          "lane": "writer",
          "next": [
            {
              "to": "b2"
            }
          ],
          "uses": [],
          "label": "Rewrite, attach a star, pitch another studio"
        },
        {
          "id": "b3",
          "kind": "task",
          "lane": "studio",
          "next": [
            {
              "to": "b4"
            }
          ],
          "uses": [],
          "label": "Attach a director and big names"
        },
        {
          "id": "b4",
          "kind": "task",
          "lane": "studio",
          "next": [
            {
              "to": "b5"
            }
          ],
          "uses": [],
          "label": "Set the budget and the release date"
        },
        {
          "id": "b5",
          "kind": "subprocess",
          "lane": "crew",
          "next": [
            {
              "to": "b6"
            }
          ],
          "uses": [],
          "child": "m_pre",
          "label": "Pre-production: sets, costumes, storyboards"
        },
        {
          "id": "b6",
          "kind": "subprocess",
          "lane": "crew",
          "next": [
            {
              "to": "b7"
            }
          ],
          "uses": [],
          "child": "m_shoot",
          "label": "Shoot the film"
        },
        {
          "id": "b7",
          "kind": "subprocess",
          "lane": "crew",
          "next": [
            {
              "to": "b8"
            }
          ],
          "uses": [],
          "child": "m_post",
          "label": "Post-production: editing, visual effects, music"
        },
        {
          "id": "b8",
          "kind": "task",
          "lane": "audience",
          "next": [
            {
              "to": "b9"
            }
          ],
          "uses": [],
          "label": "Test screenings"
        },
        {
          "id": "b9",
          "kind": "decision",
          "lane": "studio",
          "next": [
            {
              "to": "b10",
              "label": "Yes"
            },
            {
              "to": "b9a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Do test audiences like it?"
        },
        {
          "id": "b9a",
          "kind": "task",
          "lane": "crew",
          "next": [
            {
              "to": "b8"
            }
          ],
          "pain": {
            "note": "Reshoots can cost a fortune and push the release date",
            "level": 2
          },
          "uses": [],
          "label": "Reshoot, recut or change the ending"
        },
        {
          "id": "b10",
          "kind": "subprocess",
          "lane": "mkt",
          "next": [
            {
              "to": "b11"
            }
          ],
          "uses": [],
          "child": "m_trailer",
          "label": "The trailer drops and the internet reacts"
        },
        {
          "id": "b11",
          "kind": "task",
          "lane": "mkt",
          "next": [
            {
              "to": "b12"
            }
          ],
          "uses": [],
          "label": "Press tour, premieres, posters on every bus"
        },
        {
          "id": "b12",
          "kind": "task",
          "lane": "audience",
          "next": [
            {
              "to": "b13"
            }
          ],
          "uses": [],
          "label": "Opening weekend"
        },
        {
          "id": "b13",
          "kind": "decision",
          "lane": "studio",
          "next": [
            {
              "to": "b14",
              "label": "Yes"
            },
            {
              "to": "b15",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Does it beat expectations?"
        },
        {
          "id": "b14",
          "kind": "task",
          "lane": "audience",
          "next": [
            {
              "to": "b16"
            }
          ],
          "uses": [],
          "label": "Word of mouth carries it: a long run, sequel talk"
        },
        {
          "id": "b15",
          "kind": "task",
          "lane": "studio",
          "next": [
            {
              "to": "b16"
            }
          ],
          "uses": [],
          "label": "It becomes a write-down, then a streaming title"
        },
        {
          "id": "b16",
          "kind": "end",
          "lane": "studio",
          "next": [],
          "uses": [],
          "label": "The box office total is in"
        }
      ],
      "title": "From script to opening weekend: how a blockbuster gets made",
      "parent": null
    },
    "m_shoot": {
      "id": "m_shoot",
      "lanes": [
        {
          "id": "crew",
          "name": "Cast and crew",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "s1",
          "kind": "start",
          "lane": "crew",
          "next": [
            {
              "to": "s2"
            }
          ],
          "uses": [],
          "label": "Call time before dawn"
        },
        {
          "id": "s2",
          "kind": "task",
          "lane": "crew",
          "next": [
            {
              "to": "s3"
            }
          ],
          "uses": [],
          "label": "Film the scene several ways"
        },
        {
          "id": "s3",
          "kind": "decision",
          "lane": "crew",
          "next": [
            {
              "to": "s4",
              "label": "Yes"
            },
            {
              "to": "s2",
              "label": "No — go again"
            }
          ],
          "uses": [],
          "label": "Does the director have the take?"
        },
        {
          "id": "s4",
          "kind": "task",
          "lane": "crew",
          "next": [
            {
              "to": "s5"
            }
          ],
          "uses": [],
          "label": "Move to the next setup"
        },
        {
          "id": "s5",
          "kind": "end",
          "lane": "crew",
          "next": [],
          "uses": [],
          "label": "Wrap for the day"
        }
      ],
      "title": "A day on set",
      "parent": {
        "map": "m_root",
        "step": "b6"
      }
    },
    "m_trailer": {
      "id": "m_trailer",
      "lanes": [
        {
          "id": "mkt",
          "name": "Marketing",
          "type": "person"
        },
        {
          "id": "audience",
          "name": "The audience",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "t1",
          "kind": "start",
          "lane": "mkt",
          "next": [
            {
              "to": "t2"
            }
          ],
          "uses": [],
          "label": "Cut a teaser for the first look"
        },
        {
          "id": "t2",
          "kind": "decision",
          "lane": "audience",
          "next": [
            {
              "to": "t3",
              "label": "Yes"
            },
            {
              "to": "t2a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Does the internet notice?"
        },
        {
          "id": "t2a",
          "kind": "task",
          "lane": "mkt",
          "next": [
            {
              "to": "t2"
            }
          ],
          "uses": [],
          "label": "Release a bigger trailer or a viral stunt"
        },
        {
          "id": "t3",
          "kind": "task",
          "lane": "audience",
          "next": [
            {
              "to": "t4"
            }
          ],
          "uses": [],
          "label": "Fans break down every frame online"
        },
        {
          "id": "t4",
          "kind": "end",
          "lane": "mkt",
          "next": [],
          "uses": [],
          "label": "Hype builds toward release"
        }
      ],
      "title": "The trailer moment",
      "parent": {
        "map": "m_root",
        "step": "b10"
      }
    }
  }
}
```
