# How the Electoral College picks a president

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

- 23 steps across 4 layers
- Persona: Voters, State governments, Electors, Congress

## Pain points

Where this process hurts, worst first:

- **Most states give all their electors to the statewide winner** (How the Electoral College picks a president; painful): Debated: winner-take-all means a candidate can win the presidency while losing the national popular vote

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

## How the Electoral College picks a president

Lanes:
- Voters: person / role (id `voters`)
- State governments: person / role (id `states`)
- Electors: person / role (id `electors`)
- Congress: person / role (id `congress`)

Steps, in the order they run:

1. **Citizens vote in each state** [start; Voters; id `e1`]
   - then Each state counts its votes
2. **Each state counts its votes** [task; State governments; id `e2`]
   - then Most states give all their electors to the statewide winner
3. **Most states give all their electors to the statewide winner** [subprocess; State governments; id `e3`] ⚠ PAIN POINT (painful): Debated: winner-take-all means a candidate can win the presidency while losing the national popular vote, opens the detail layer "Handing out electors"
   - then There are 538 electors; 270 are needed to win
4. **There are 538 electors; 270 are needed to win** [task; Electors; id `e4`]
   - then Electors meet in December and cast their votes
5. **Electors meet in December and cast their votes** [subprocess; Electors; id `e5`], opens the detail layer "The electors vote"
   - then Congress counts the votes in January
6. **Congress counts the votes in January** [task; Congress; id `e6`]
   - then Does anyone have 270?
7. **Does anyone have 270?** [decision; Congress; id `e7`]
   - if "Yes" go to That candidate is the next president; if "No" go to The House picks the president, one vote per state delegation
8. **That candidate is the next president** [end; Congress; id `e8`]
9. **The House picks the president, one vote per state delegation** [subprocess; Congress; id `e9`], opens the detail layer "When nobody reaches 270"
   - then The Senate picks the vice president
10. **The Senate picks the vice president** [end; Congress; id `e10`]

```mermaid
flowchart LR
  subgraph l_voters["Voters"]
    n_e1(["Citizens vote in each state"])
  end
  subgraph l_states["State governments"]
    n_e2["Each state counts its votes"]
    n_e3[["Most states give all their electors to the statewide winner"]]
  end
  subgraph l_electors["Electors"]
    n_e4["There are 538 electors; 270 are needed to win"]
    n_e5[["Electors meet in December and cast their votes"]]
  end
  subgraph l_congress["Congress"]
    n_e6["Congress counts the votes in January"]
    n_e7{"Does anyone have 270?"}
    n_e8(["That candidate is the next president"])
    n_e9[["The House picks the president, one vote per state delegation"]]
    n_e10(["The Senate picks the vice president"])
  end
  n_e1 --> n_e2
  n_e2 --> n_e3
  n_e3 --> n_e4
  n_e4 --> n_e5
  n_e5 --> n_e6
  n_e6 --> n_e7
  n_e7 -->|"Yes"| n_e8
  n_e7 -->|"No"| n_e9
  n_e9 --> n_e10
```

### The electors vote (detail of step "Electors meet in December and cast their votes")

Lanes:
- Electors: person / role (id `electors`)
- State governments: person / role (id `states`)

Steps, in the order they run:

1. **Meet in their own states on a set date** [start; Electors; id `m1`]
   - then Cast one vote for president and one for vice president
2. **Cast one vote for president and one for vice president** [task; Electors; id `m2`]
   - then Does every elector vote as pledged?
3. **Does every elector vote as pledged?** [decision; Electors; id `m3`]
   - if "Yes" go to Sealed certificates are sent to Congress; if "No — a faithless elector" go to Rules differ: some states void the vote or penalize it
4. **Sealed certificates are sent to Congress** [end; State governments; id `m4`]
5. **Rules differ: some states void the vote or penalize it** [task; State governments; id `m5`]
   - then Sealed certificates are sent to Congress

```mermaid
flowchart LR
  subgraph l_electors["Electors"]
    n_m1(["Meet in their own states on a set date"])
    n_m2["Cast one vote for president and one for vice president"]
    n_m3{"Does every elector vote as pledged?"}
  end
  subgraph l_states["State governments"]
    n_m5["Rules differ: some states void the vote or penalize it"]
    n_m4(["Sealed certificates are sent to Congress"])
  end
  n_m1 --> n_m2
  n_m2 --> n_m3
  n_m3 -->|"Yes"| n_m4
  n_m3 -->|"No — a faithless elector"| n_m5
  n_m5 --> n_m4
```

### Handing out electors (detail of step "Most states give all their electors to the statewide winner")

Lanes:
- State governments: person / role (id `states`)

Steps, in the order they run:

1. **Does the state use winner-take-all?** [start; State governments; id `a1`]
   - if "Yes" go to All electors go to the statewide winner; if "No — Maine and Nebraska" go to Some electors follow congressional districts
2. **All electors go to the statewide winner** [task; State governments; id `a2`]
   - then The state certifies its electors
3. **The state certifies its electors** [end; State governments; id `a4`]
4. **Some electors follow congressional districts** [task; State governments; id `a3`]
   - then The state certifies its electors

```mermaid
flowchart LR
  subgraph l_states["State governments"]
    n_a1(["Does the state use winner-take-all?"])
    n_a2["All electors go to the statewide winner"]
    n_a3["Some electors follow congressional districts"]
    n_a4(["The state certifies its electors"])
  end
  n_a1 -->|"Yes"| n_a2
  n_a1 -->|"No — Maine and Nebraska"| n_a3
  n_a2 --> n_a4
  n_a3 --> n_a4
```

### When nobody reaches 270 (detail of step "The House picks the president, one vote per state delegation")

Lanes:
- Congress: person / role (id `congress`)

Steps, in the order they run:

1. **Each state delegation gets one vote** [start; Congress; id `k1`]
   - then Does a candidate reach a majority of states?
2. **Does a candidate reach a majority of states?** [decision; Congress; id `k2`]
   - if "Yes" go to That candidate is elected; if "No" go to Keep voting
3. **That candidate is elected** [end; Congress; id `k3`]
4. **Keep voting** [task; Congress; id `k2a`]
   - then Does a candidate reach a majority of states?

```mermaid
flowchart LR
  subgraph l_congress["Congress"]
    n_k1(["Each state delegation gets one vote"])
    n_k2{"Does a candidate reach a majority of states?"}
    n_k2a["Keep voting"]
    n_k3(["That candidate is elected"])
  end
  n_k1 --> n_k2
  n_k2 -->|"Yes"| n_k3
  n_k2 -->|"No"| n_k2a
  n_k2a --> n_k2
```

## Full data (JSON)

```json
{
  "title": "How the Electoral College picks a president",
  "maps": {
    "m_meet": {
      "id": "m_meet",
      "lanes": [
        {
          "id": "electors",
          "name": "Electors",
          "type": "person"
        },
        {
          "id": "states",
          "name": "State governments",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "m1",
          "kind": "start",
          "lane": "electors",
          "next": [
            {
              "to": "m2"
            }
          ],
          "uses": [],
          "label": "Meet in their own states on a set date"
        },
        {
          "id": "m2",
          "kind": "task",
          "lane": "electors",
          "next": [
            {
              "to": "m3"
            }
          ],
          "uses": [],
          "label": "Cast one vote for president and one for vice president"
        },
        {
          "id": "m3",
          "kind": "decision",
          "lane": "electors",
          "next": [
            {
              "to": "m4",
              "label": "Yes"
            },
            {
              "to": "m5",
              "label": "No — a faithless elector"
            }
          ],
          "uses": [],
          "label": "Does every elector vote as pledged?"
        },
        {
          "id": "m5",
          "kind": "task",
          "lane": "states",
          "next": [
            {
              "to": "m4"
            }
          ],
          "uses": [],
          "label": "Rules differ: some states void the vote or penalize it"
        },
        {
          "id": "m4",
          "kind": "end",
          "lane": "states",
          "next": [],
          "uses": [],
          "label": "Sealed certificates are sent to Congress"
        }
      ],
      "title": "The electors vote",
      "parent": {
        "map": "m_root",
        "step": "e5"
      }
    },
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "voters",
          "name": "Voters",
          "type": "person"
        },
        {
          "id": "states",
          "name": "State governments",
          "type": "person"
        },
        {
          "id": "electors",
          "name": "Electors",
          "type": "person"
        },
        {
          "id": "congress",
          "name": "Congress",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "e1",
          "kind": "start",
          "lane": "voters",
          "next": [
            {
              "to": "e2"
            }
          ],
          "uses": [],
          "label": "Citizens vote in each state"
        },
        {
          "id": "e2",
          "kind": "task",
          "lane": "states",
          "next": [
            {
              "to": "e3"
            }
          ],
          "uses": [],
          "label": "Each state counts its votes"
        },
        {
          "id": "e3",
          "kind": "subprocess",
          "lane": "states",
          "next": [
            {
              "to": "e4"
            }
          ],
          "pain": {
            "note": "Debated: winner-take-all means a candidate can win the presidency while losing the national popular vote",
            "level": 2
          },
          "uses": [],
          "child": "m_alloc",
          "label": "Most states give all their electors to the statewide winner"
        },
        {
          "id": "e4",
          "kind": "task",
          "lane": "electors",
          "next": [
            {
              "to": "e5"
            }
          ],
          "uses": [],
          "label": "There are 538 electors; 270 are needed to win"
        },
        {
          "id": "e5",
          "kind": "subprocess",
          "lane": "electors",
          "next": [
            {
              "to": "e6"
            }
          ],
          "uses": [],
          "child": "m_meet",
          "label": "Electors meet in December and cast their votes"
        },
        {
          "id": "e6",
          "kind": "task",
          "lane": "congress",
          "next": [
            {
              "to": "e7"
            }
          ],
          "uses": [],
          "label": "Congress counts the votes in January"
        },
        {
          "id": "e7",
          "kind": "decision",
          "lane": "congress",
          "next": [
            {
              "to": "e8",
              "label": "Yes"
            },
            {
              "to": "e9",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Does anyone have 270?"
        },
        {
          "id": "e8",
          "kind": "end",
          "lane": "congress",
          "next": [],
          "uses": [],
          "label": "That candidate is the next president"
        },
        {
          "id": "e9",
          "kind": "subprocess",
          "lane": "congress",
          "next": [
            {
              "to": "e10"
            }
          ],
          "uses": [],
          "child": "m_contingent",
          "label": "The House picks the president, one vote per state delegation"
        },
        {
          "id": "e10",
          "kind": "end",
          "lane": "congress",
          "next": [],
          "uses": [],
          "label": "The Senate picks the vice president"
        }
      ],
      "title": "How the Electoral College picks a president",
      "parent": null
    },
    "m_alloc": {
      "id": "m_alloc",
      "lanes": [
        {
          "id": "states",
          "name": "State governments",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "a1",
          "kind": "start",
          "lane": "states",
          "next": [
            {
              "to": "a2",
              "label": "Yes"
            },
            {
              "to": "a3",
              "label": "No — Maine and Nebraska"
            }
          ],
          "uses": [],
          "label": "Does the state use winner-take-all?"
        },
        {
          "id": "a2",
          "kind": "task",
          "lane": "states",
          "next": [
            {
              "to": "a4"
            }
          ],
          "uses": [],
          "label": "All electors go to the statewide winner"
        },
        {
          "id": "a3",
          "kind": "task",
          "lane": "states",
          "next": [
            {
              "to": "a4"
            }
          ],
          "uses": [],
          "label": "Some electors follow congressional districts"
        },
        {
          "id": "a4",
          "kind": "end",
          "lane": "states",
          "next": [],
          "uses": [],
          "label": "The state certifies its electors"
        }
      ],
      "title": "Handing out electors",
      "parent": {
        "map": "m_root",
        "step": "e3"
      }
    },
    "m_contingent": {
      "id": "m_contingent",
      "lanes": [
        {
          "id": "congress",
          "name": "Congress",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "k1",
          "kind": "start",
          "lane": "congress",
          "next": [
            {
              "to": "k2"
            }
          ],
          "uses": [],
          "label": "Each state delegation gets one vote"
        },
        {
          "id": "k2",
          "kind": "decision",
          "lane": "congress",
          "next": [
            {
              "to": "k3",
              "label": "Yes"
            },
            {
              "to": "k2a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Does a candidate reach a majority of states?"
        },
        {
          "id": "k2a",
          "kind": "task",
          "lane": "congress",
          "next": [
            {
              "to": "k2"
            }
          ],
          "uses": [],
          "label": "Keep voting"
        },
        {
          "id": "k3",
          "kind": "end",
          "lane": "congress",
          "next": [],
          "uses": [],
          "label": "That candidate is elected"
        }
      ],
      "title": "When nobody reaches 270",
      "parent": {
        "map": "m_root",
        "step": "e9"
      }
    }
  }
}
```
