# Hire the right person

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

- 25 steps across 2 layers
- Persona: Hiring manager, Recruiter, The candidate, Interview panel, HR
- Technology / systems: Applicant tracking system

## Pain points

Where this process hurts, worst first:

- **Screen resumes against the scorecard** (Hire the right person; painful): Hundreds of resumes screened by hand
- **Clean?** (Hire the right person; annoying): Background checks are slow

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

## Hire the right person

Lanes:
- Hiring manager: person / role (id `mgr`)
- Recruiter: person / role (id `rec`)
- The candidate: person / role (id `cand`)
- Interview panel: person / role (id `team`)
- Applicant tracking system: technology / system (id `ats`)
- HR: person / role (id `hr`)

Steps, in the order they run:

1. **Role approved and budget confirmed** [start; Hiring manager; id `h1`]
   - then Write the job description and the scorecard
2. **Write the job description and the scorecard** [task; Hiring manager; id `h2`]
   - then Post the job and source candidates
3. **Post the job and source candidates** [task; Recruiter; id `h3`], using Applicant tracking system
   - then Applies
4. **Applies** [task; The candidate; id `h4`]
   - then Screen resumes against the scorecard
5. **Screen resumes against the scorecard** [task; Recruiter; id `h5`] ⚠ PAIN POINT (painful): Hundreds of resumes screened by hand
   - then Strong match?
6. **Strong match?** [decision; Recruiter; id `h6`]
   - if "Yes" go to Phone screen; if "No" go to Send a kind rejection and keep them for future roles
7. **Phone screen** [task; Recruiter; id `h7`]
   - then Moves forward?
8. **Moves forward?** [decision; Recruiter; id `h8`]
   - if "Yes" go to Interview loop; if "No" go to Send a kind rejection and keep them for future roles
9. **Interview loop** [subprocess; Interview panel; id `h9`], opens the detail layer "The interview loop"
   - then Debrief together
10. **Debrief together** [task; Interview panel; id `h10`]
   - then Hire?
11. **Hire?** [decision; Interview panel; id `h11`]
   - if "Yes" go to Check references and background; if "No" go to Decline with useful feedback
12. **Check references and background** [task; HR; id `h12`]
   - then Clean?
13. **Clean?** [decision; HR; id `h14`] ⚠ PAIN POINT (annoying): Background checks are slow
   - if "Yes" go to Make an offer; if "No" go to Decline with useful feedback
14. **Make an offer** [task; Hiring manager; id `h15`]
   - then Accepts?
15. **Accepts?** [decision; The candidate; id `h16`]
   - if "Yes" go to Paperwork and a start date; if "No" go to Negotiate, or go to the runner-up
16. **Paperwork and a start date** [end; HR; id `h17`]
17. **Negotiate, or go to the runner-up** [task; Hiring manager; id `h18`]
   - then Make an offer
18. **Decline with useful feedback** [end; Recruiter; id `h13`]
19. **Send a kind rejection and keep them for future roles** [end; Applicant tracking system; id `h5a`]

```mermaid
flowchart LR
  subgraph l_mgr["Hiring manager"]
    n_h1(["Role approved and budget confirmed"])
    n_h2["Write the job description and the scorecard"]
    n_h15["Make an offer"]
    n_h18["Negotiate, or go to the runner-up"]
  end
  subgraph l_rec["Recruiter"]
    n_h3["Post the job and source candidates"]
    n_h5["Screen resumes against the scorecard"]
    n_h6{"Strong match?"}
    n_h7["Phone screen"]
    n_h8{"Moves forward?"}
    n_h13(["Decline with useful feedback"])
  end
  subgraph l_cand["The candidate"]
    n_h4["Applies"]
    n_h16{"Accepts?"}
  end
  subgraph l_team["Interview panel"]
    n_h9[["Interview loop"]]
    n_h10["Debrief together"]
    n_h11{"Hire?"}
  end
  subgraph l_ats["Applicant tracking system"]
    n_h5a(["Send a kind rejection and keep them for future roles"])
  end
  subgraph l_hr["HR"]
    n_h12["Check references and background"]
    n_h14{"Clean?"}
    n_h17(["Paperwork and a start date"])
  end
  n_h1 --> n_h2
  n_h2 --> n_h3
  n_h3 --> n_h4
  n_h4 --> n_h5
  n_h5 --> n_h6
  n_h6 -->|"Yes"| n_h7
  n_h6 -->|"No"| n_h5a
  n_h7 --> n_h8
  n_h8 -->|"Yes"| n_h9
  n_h8 -->|"No"| n_h5a
  n_h9 --> n_h10
  n_h10 --> n_h11
  n_h11 -->|"Yes"| n_h12
  n_h11 -->|"No"| n_h13
  n_h12 --> n_h14
  n_h14 -->|"Yes"| n_h15
  n_h14 -->|"No"| n_h13
  n_h15 --> n_h16
  n_h16 -->|"Yes"| n_h17
  n_h16 -->|"No"| n_h18
  n_h18 --> n_h15
```

### The interview loop (detail of step "Interview loop")

Lanes:
- Interview panel: person / role (id `team`)
- Recruiter: person / role (id `rec`)

Steps, in the order they run:

1. **Each interviewer owns one competency** [start; Interview panel; id `l1`]
   - then Ask the same structured questions of everyone
2. **Ask the same structured questions of everyone** [task; Interview panel; id `l2`]
   - then Score against the scorecard right after
3. **Score against the scorecard right after** [task; Interview panel; id `l3`]
   - then All scores in before the debrief?
4. **All scores in before the debrief?** [decision; Interview panel; id `l4`]
   - if "Yes" go to No peeking at each other's scores until then; if "No" go to Chase the missing scorecards
5. **No peeking at each other's scores until then** [end; Interview panel; id `l5`]
6. **Chase the missing scorecards** [task; Recruiter; id `l3a`]
   - then All scores in before the debrief?

```mermaid
flowchart LR
  subgraph l_team["Interview panel"]
    n_l1(["Each interviewer owns one competency"])
    n_l2["Ask the same structured questions of everyone"]
    n_l3["Score against the scorecard right after"]
    n_l4{"All scores in before the debrief?"}
    n_l5(["No peeking at each other's scores until then"])
  end
  subgraph l_rec["Recruiter"]
    n_l3a["Chase the missing scorecards"]
  end
  n_l1 --> n_l2
  n_l2 --> n_l3
  n_l3 --> n_l4
  n_l4 -->|"Yes"| n_l5
  n_l4 -->|"No"| n_l3a
  n_l3a --> n_l4
```

## Full data (JSON)

```json
{
  "title": "Hire the right person",
  "maps": {
    "m_loop": {
      "id": "m_loop",
      "lanes": [
        {
          "id": "team",
          "name": "Interview panel",
          "type": "person"
        },
        {
          "id": "rec",
          "name": "Recruiter",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "l1",
          "kind": "start",
          "lane": "team",
          "next": [
            {
              "to": "l2"
            }
          ],
          "uses": [],
          "label": "Each interviewer owns one competency"
        },
        {
          "id": "l2",
          "kind": "task",
          "lane": "team",
          "next": [
            {
              "to": "l3"
            }
          ],
          "uses": [],
          "label": "Ask the same structured questions of everyone"
        },
        {
          "id": "l3",
          "kind": "task",
          "lane": "team",
          "next": [
            {
              "to": "l4"
            }
          ],
          "uses": [],
          "label": "Score against the scorecard right after"
        },
        {
          "id": "l4",
          "kind": "decision",
          "lane": "team",
          "next": [
            {
              "to": "l5",
              "label": "Yes"
            },
            {
              "to": "l3a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "All scores in before the debrief?"
        },
        {
          "id": "l3a",
          "kind": "task",
          "lane": "rec",
          "next": [
            {
              "to": "l4"
            }
          ],
          "uses": [],
          "label": "Chase the missing scorecards"
        },
        {
          "id": "l5",
          "kind": "end",
          "lane": "team",
          "next": [],
          "uses": [],
          "label": "No peeking at each other's scores until then"
        }
      ],
      "title": "The interview loop",
      "parent": {
        "map": "m_root",
        "step": "h9"
      }
    },
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "mgr",
          "name": "Hiring manager",
          "type": "person"
        },
        {
          "id": "rec",
          "name": "Recruiter",
          "type": "person"
        },
        {
          "id": "cand",
          "name": "The candidate",
          "type": "person"
        },
        {
          "id": "team",
          "name": "Interview panel",
          "type": "person"
        },
        {
          "id": "ats",
          "name": "Applicant tracking system",
          "type": "system"
        },
        {
          "id": "hr",
          "name": "HR",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "h1",
          "kind": "start",
          "lane": "mgr",
          "next": [
            {
              "to": "h2"
            }
          ],
          "uses": [],
          "label": "Role approved and budget confirmed"
        },
        {
          "id": "h2",
          "kind": "task",
          "lane": "mgr",
          "next": [
            {
              "to": "h3"
            }
          ],
          "uses": [],
          "label": "Write the job description and the scorecard"
        },
        {
          "id": "h3",
          "kind": "task",
          "lane": "rec",
          "next": [
            {
              "to": "h4"
            }
          ],
          "uses": [
            "ats"
          ],
          "label": "Post the job and source candidates"
        },
        {
          "id": "h4",
          "kind": "task",
          "lane": "cand",
          "next": [
            {
              "to": "h5"
            }
          ],
          "uses": [],
          "label": "Applies"
        },
        {
          "id": "h5",
          "kind": "task",
          "lane": "rec",
          "next": [
            {
              "to": "h6"
            }
          ],
          "pain": {
            "note": "Hundreds of resumes screened by hand",
            "level": 2
          },
          "uses": [],
          "label": "Screen resumes against the scorecard"
        },
        {
          "id": "h6",
          "kind": "decision",
          "lane": "rec",
          "next": [
            {
              "to": "h7",
              "label": "Yes"
            },
            {
              "to": "h5a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Strong match?"
        },
        {
          "id": "h5a",
          "kind": "end",
          "lane": "ats",
          "next": [],
          "uses": [],
          "label": "Send a kind rejection and keep them for future roles"
        },
        {
          "id": "h7",
          "kind": "task",
          "lane": "rec",
          "next": [
            {
              "to": "h8"
            }
          ],
          "uses": [],
          "label": "Phone screen"
        },
        {
          "id": "h8",
          "kind": "decision",
          "lane": "rec",
          "next": [
            {
              "to": "h9",
              "label": "Yes"
            },
            {
              "to": "h5a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Moves forward?"
        },
        {
          "id": "h9",
          "kind": "subprocess",
          "lane": "team",
          "next": [
            {
              "to": "h10"
            }
          ],
          "uses": [],
          "child": "m_loop",
          "label": "Interview loop"
        },
        {
          "id": "h10",
          "kind": "task",
          "lane": "team",
          "next": [
            {
              "to": "h11"
            }
          ],
          "uses": [],
          "label": "Debrief together"
        },
        {
          "id": "h11",
          "kind": "decision",
          "lane": "team",
          "next": [
            {
              "to": "h12",
              "label": "Yes"
            },
            {
              "to": "h13",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Hire?"
        },
        {
          "id": "h13",
          "kind": "end",
          "lane": "rec",
          "next": [],
          "uses": [],
          "label": "Decline with useful feedback"
        },
        {
          "id": "h12",
          "kind": "task",
          "lane": "hr",
          "next": [
            {
              "to": "h14"
            }
          ],
          "uses": [],
          "label": "Check references and background"
        },
        {
          "id": "h14",
          "kind": "decision",
          "lane": "hr",
          "next": [
            {
              "to": "h15",
              "label": "Yes"
            },
            {
              "to": "h13",
              "label": "No"
            }
          ],
          "pain": {
            "note": "Background checks are slow",
            "level": 1
          },
          "uses": [],
          "label": "Clean?"
        },
        {
          "id": "h15",
          "kind": "task",
          "lane": "mgr",
          "next": [
            {
              "to": "h16"
            }
          ],
          "uses": [],
          "label": "Make an offer"
        },
        {
          "id": "h16",
          "kind": "decision",
          "lane": "cand",
          "next": [
            {
              "to": "h17",
              "label": "Yes"
            },
            {
              "to": "h18",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Accepts?"
        },
        {
          "id": "h18",
          "kind": "task",
          "lane": "mgr",
          "next": [
            {
              "to": "h15"
            }
          ],
          "uses": [],
          "label": "Negotiate, or go to the runner-up"
        },
        {
          "id": "h17",
          "kind": "end",
          "lane": "hr",
          "next": [],
          "uses": [],
          "label": "Paperwork and a start date"
        }
      ],
      "title": "Hire the right person",
      "parent": null
    }
  }
}
```
