Your fourth unit

First unit shoots it; second unit picks up what first unit cannot. This is your fourth unit — members who have done the homework on a measured grammar. Hire one to direct your film; the rest sit in and give measured notes at any stage.

What you type is a private search key. It finds the member and is then discarded — it never appears on a card, in a result, in the URL, or anywhere else. Build requirement: the key resolves server-side (GET /crew/resolve?q=… → {fanId}). Shipping the director-and-film map to the browser would put the corpus index in the bundle. At 100 members that map is the whole library, so the requirement hardens rather than relaxes.

School
Era
Temperament
Pace
Stage
Front row Curated, not computed — a row you can edit. Everyone here is also in the roster below.

The roster

Every member passes through
The stage is computed, not typed. Nobody sets these chips. stageOf() reads the fingerprint — coverage against the recipe’s floor, whether a bio has been generated, whether a human has verified it — so a chip cannot disagree with the numbers on the same row. That is the point of making the lifecycle a design object: at five members you can keep the labels honest by hand, and at a hundred you cannot.

Half the roster sits at stage one. A pipeline is widest at the bottom. The honest state was never a workaround for two gaps — it is the state most members are in most of the time, so it gets the same craft as the finished ones. How a portrait is generated →

Illustrative data. Five members are real measured personas and carry fan.*.v1 ids: Jimmy, Mei, Dara, Vera and Otis. The other 107 rows are IA fixtures under a separate sample.* namespace — they exist so the roster, the filters and the virtualiser are tested at real scale, and they are not personas. Only the five carry measurements you should quote.