# A superstar ticket on-sale (and why it melts down)

> A process map exported from forks.world (https://forks.world). Author: Brian. Source: https://forks.world/p/cmv0kpge10011jn06wxv2lrp6
> 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

- 20 steps across 2 layers
- Persona: Fans, Bots and scalpers, The artist team
- Technology / systems: Ticketing site, Resale market

## Pain points

Where this process hurts, worst first:

- **Automated buyers try to grab tickets first** (A superstar ticket on-sale (and why it melts down); painful): Bots and scalpers compete with fans for the same seats

## 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`.

## A superstar ticket on-sale (and why it melts down)

Lanes:
- Fans: person / role (id `fans`)
- Ticketing site: technology / system (id `site`)
- Bots and scalpers: person / role (id `bots`)
- The artist team: person / role (id `team`)
- Resale market: technology / system (id `resale`)

Steps, in the order they run:

1. **A tour is announced** [start; The artist team; id `t1`]
   - then Millions sign up for presale codes
2. **Millions sign up for presale codes** [task; Fans; id `t2`]
   - then Verified fans get codes and a queue spot
3. **Verified fans get codes and a queue spot** [task; Ticketing site; id `t3`]
   - then On-sale day: everyone arrives at once
4. **On-sale day: everyone arrives at once** [subprocess; Ticketing site; id `t4`], opens the detail layer "The virtual waiting room"
   - then Does the site hold up under the load?
5. **Does the site hold up under the load?** [decision; Ticketing site; id `t5`]
   - if "Yes" go to Automated buyers try to grab tickets first; if "No" go to Errors, frozen pages and frantic refreshes that make it worse
6. **Automated buyers try to grab tickets first** [task; Bots and scalpers; id `t6`] ⚠ PAIN POINT (painful): Bots and scalpers compete with fans for the same seats
   - then Do you get through the queue?
7. **Do you get through the queue?** [decision; Fans; id `t7`]
   - if "Yes" go to Pick seats before the timer runs out; if "No" go to Sold out before you reach the front
8. **Pick seats before the timer runs out** [task; Fans; id `t8`]
   - then Pay and receive the ticket
9. **Pay and receive the ticket** [task; Ticketing site; id `t10`]
   - then Resale prices appear almost instantly
10. **Resale prices appear almost instantly** [task; Resale market; id `t11`]
   - then Outrage on social media
11. **Outrage on social media** [task; Fans; id `t12`]
   - then Statements, extra shows and calls for reform
12. **Statements, extra shows and calls for reform** [end; The artist team; id `t13`]
13. **Sold out before you reach the front** [task; Fans; id `t9`]
   - then Resale prices appear almost instantly
14. **Errors, frozen pages and frantic refreshes that make it worse** [task; Fans; id `t5a`]
   - then Pause the sale and add capacity
15. **Pause the sale and add capacity** [task; Ticketing site; id `t5b`]
   - then Automated buyers try to grab tickets first

```mermaid
flowchart LR
  subgraph l_fans["Fans"]
    n_t2["Millions sign up for presale codes"]
    n_t5a["Errors, frozen pages and frantic refreshes that make it worse"]
    n_t7{"Do you get through the queue?"}
    n_t8["Pick seats before the timer runs out"]
    n_t9["Sold out before you reach the front"]
    n_t12["Outrage on social media"]
  end
  subgraph l_site["Ticketing site"]
    n_t3["Verified fans get codes and a queue spot"]
    n_t4[["On-sale day: everyone arrives at once"]]
    n_t5{"Does the site hold up under the load?"}
    n_t5b["Pause the sale and add capacity"]
    n_t10["Pay and receive the ticket"]
  end
  subgraph l_bots["Bots and scalpers"]
    n_t6["Automated buyers try to grab tickets first"]
  end
  subgraph l_team["The artist team"]
    n_t1(["A tour is announced"])
    n_t13(["Statements, extra shows and calls for reform"])
  end
  subgraph l_resale["Resale market"]
    n_t11["Resale prices appear almost instantly"]
  end
  n_t1 --> n_t2
  n_t2 --> n_t3
  n_t3 --> n_t4
  n_t4 --> n_t5
  n_t5 -->|"Yes"| n_t6
  n_t5 -->|"No"| n_t5a
  n_t5a --> n_t5b
  n_t5b --> n_t6
  n_t6 --> n_t7
  n_t7 -->|"Yes"| n_t8
  n_t7 -->|"No"| n_t9
  n_t8 --> n_t10
  n_t9 --> n_t11
  n_t10 --> n_t11
  n_t11 --> n_t12
  n_t12 --> n_t13
```

### The virtual waiting room (detail of step "On-sale day: everyone arrives at once")

Lanes:
- Ticketing site: technology / system (id `site`)

Steps, in the order they run:

1. **Put every visitor in a waiting room** [start; Ticketing site; id `q1`]
   - then Random order or first come?
2. **Random order or first come?** [decision; Ticketing site; id `q2`]
   - if "Random" go to Everyone who arrived in the window gets a fair shot; if "First come" go to The fastest connections win
3. **Everyone who arrived in the window gets a fair shot** [task; Ticketing site; id `q3`]
   - then Let people in a few thousand at a time
4. **Let people in a few thousand at a time** [end; Ticketing site; id `q5`]
5. **The fastest connections win** [task; Ticketing site; id `q4`]
   - then Let people in a few thousand at a time

```mermaid
flowchart LR
  subgraph l_site["Ticketing site"]
    n_q1(["Put every visitor in a waiting room"])
    n_q2{"Random order or first come?"}
    n_q3["Everyone who arrived in the window gets a fair shot"]
    n_q4["The fastest connections win"]
    n_q5(["Let people in a few thousand at a time"])
  end
  n_q1 --> n_q2
  n_q2 -->|"Random"| n_q3
  n_q2 -->|"First come"| n_q4
  n_q3 --> n_q5
  n_q4 --> n_q5
```

## Full data (JSON)

```json
{
  "title": "A superstar ticket on-sale (and why it melts down)",
  "maps": {
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "fans",
          "name": "Fans",
          "type": "person"
        },
        {
          "id": "site",
          "name": "Ticketing site",
          "type": "system"
        },
        {
          "id": "bots",
          "name": "Bots and scalpers",
          "type": "person"
        },
        {
          "id": "team",
          "name": "The artist team",
          "type": "person"
        },
        {
          "id": "resale",
          "name": "Resale market",
          "type": "system"
        }
      ],
      "steps": [
        {
          "id": "t1",
          "kind": "start",
          "lane": "team",
          "next": [
            {
              "to": "t2"
            }
          ],
          "uses": [],
          "label": "A tour is announced"
        },
        {
          "id": "t2",
          "kind": "task",
          "lane": "fans",
          "next": [
            {
              "to": "t3"
            }
          ],
          "uses": [],
          "label": "Millions sign up for presale codes"
        },
        {
          "id": "t3",
          "kind": "task",
          "lane": "site",
          "next": [
            {
              "to": "t4"
            }
          ],
          "uses": [],
          "label": "Verified fans get codes and a queue spot"
        },
        {
          "id": "t4",
          "kind": "subprocess",
          "lane": "site",
          "next": [
            {
              "to": "t5"
            }
          ],
          "uses": [],
          "child": "m_queue",
          "label": "On-sale day: everyone arrives at once"
        },
        {
          "id": "t5",
          "kind": "decision",
          "lane": "site",
          "next": [
            {
              "to": "t6",
              "label": "Yes"
            },
            {
              "to": "t5a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Does the site hold up under the load?"
        },
        {
          "id": "t5a",
          "kind": "task",
          "lane": "fans",
          "next": [
            {
              "to": "t5b"
            }
          ],
          "uses": [],
          "label": "Errors, frozen pages and frantic refreshes that make it worse"
        },
        {
          "id": "t5b",
          "kind": "task",
          "lane": "site",
          "next": [
            {
              "to": "t6"
            }
          ],
          "uses": [],
          "label": "Pause the sale and add capacity"
        },
        {
          "id": "t6",
          "kind": "task",
          "lane": "bots",
          "next": [
            {
              "to": "t7"
            }
          ],
          "pain": {
            "note": "Bots and scalpers compete with fans for the same seats",
            "level": 2
          },
          "uses": [],
          "label": "Automated buyers try to grab tickets first"
        },
        {
          "id": "t7",
          "kind": "decision",
          "lane": "fans",
          "next": [
            {
              "to": "t8",
              "label": "Yes"
            },
            {
              "to": "t9",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Do you get through the queue?"
        },
        {
          "id": "t8",
          "kind": "task",
          "lane": "fans",
          "next": [
            {
              "to": "t10"
            }
          ],
          "uses": [],
          "label": "Pick seats before the timer runs out"
        },
        {
          "id": "t9",
          "kind": "task",
          "lane": "fans",
          "next": [
            {
              "to": "t11"
            }
          ],
          "uses": [],
          "label": "Sold out before you reach the front"
        },
        {
          "id": "t10",
          "kind": "task",
          "lane": "site",
          "next": [
            {
              "to": "t11"
            }
          ],
          "uses": [],
          "label": "Pay and receive the ticket"
        },
        {
          "id": "t11",
          "kind": "task",
          "lane": "resale",
          "next": [
            {
              "to": "t12"
            }
          ],
          "uses": [],
          "label": "Resale prices appear almost instantly"
        },
        {
          "id": "t12",
          "kind": "task",
          "lane": "fans",
          "next": [
            {
              "to": "t13"
            }
          ],
          "uses": [],
          "label": "Outrage on social media"
        },
        {
          "id": "t13",
          "kind": "end",
          "lane": "team",
          "next": [],
          "uses": [],
          "label": "Statements, extra shows and calls for reform"
        }
      ],
      "title": "A superstar ticket on-sale (and why it melts down)",
      "parent": null
    },
    "m_queue": {
      "id": "m_queue",
      "lanes": [
        {
          "id": "site",
          "name": "Ticketing site",
          "type": "system"
        }
      ],
      "steps": [
        {
          "id": "q1",
          "kind": "start",
          "lane": "site",
          "next": [
            {
              "to": "q2"
            }
          ],
          "uses": [],
          "label": "Put every visitor in a waiting room"
        },
        {
          "id": "q2",
          "kind": "decision",
          "lane": "site",
          "next": [
            {
              "to": "q3",
              "label": "Random"
            },
            {
              "to": "q4",
              "label": "First come"
            }
          ],
          "uses": [],
          "label": "Random order or first come?"
        },
        {
          "id": "q3",
          "kind": "task",
          "lane": "site",
          "next": [
            {
              "to": "q5"
            }
          ],
          "uses": [],
          "label": "Everyone who arrived in the window gets a fair shot"
        },
        {
          "id": "q4",
          "kind": "task",
          "lane": "site",
          "next": [
            {
              "to": "q5"
            }
          ],
          "uses": [],
          "label": "The fastest connections win"
        },
        {
          "id": "q5",
          "kind": "end",
          "lane": "site",
          "next": [],
          "uses": [],
          "label": "Let people in a few thousand at a time"
        }
      ],
      "title": "The virtual waiting room",
      "parent": {
        "map": "m_root",
        "step": "t4"
      }
    }
  }
}
```
