The Cast is hand-designed. Everyone else is generated: the Crowd gives Full 7 its volume (about 25,000 people across seven campuses), and campus companions give Core 3's two extra campuses their own people, since the Cast stays on the main campus.
- Generation is seeded, so the same inputs always produce the same people.
- Household shapes, ages, journeys, and personas follow the calibration profile.
- Names come from public-domain frequency data and never depend on photo ethnicity.
- Crowd households have no photos. About half of Core 3's companions get photos from the pool (see Datasets).
- Core 3's companions use a more involved connection status mix than the Crowd, set in the dataset manifest, so more of them attend, give, and join groups (decision 142). Core 1 and Core 3 also scale up checks as a payment method, so check batches and check images have enough to show (decision 143).
- Every generated person has a birth date. Measured age mixes count only people with a birth date, so the profile states the age mix as shares of all people, and validation grades it against people with a birth date, which is nearly all of them (decision 156).
- A child on their own, in a one-person family, is a student aged 12 to 17 (decision 157).
- Parents are 25 to 54. Adults without children take what is left of each adult band after the parents, so about 39% of them are 18 to 24 (decision 166).
- A couple is one man and one woman. A single adult's chance of being a woman is set for each age band, so each band's share of women matches the profile (decision 167).
- When the person installing gives a password, about 30% of active generated adults have a Rock login, and most people have none. Each adult's chance comes from their strongest reason in
configuration/logins.json, such as the church app, leading, or giving online, and every campus pastor has one (decision 179). See How logins load.
Full 7's manifest (datasets/full-7.json) sets how many households each campus gets (decision 136). Household shapes do not change by campus, so the counts alone set each campus's size. Each count stays under that campus's share of the address pool, with room for its businesses.
| Campus | Generated households | People, with the Cast and businesses |
|---|---|---|
| Phoenix | 3,450 | 5,338 |
| Chandler | 2,350 | 3,501 |
| Gilbert | 2,300 | 3,415 |
| Peoria | 2,250 | 3,367 |
| Scottsdale | 2,200 | 3,295 |
| Goodyear | 2,150 | 3,202 |
| Tempe | 2,100 | 3,175 |
| All seven | 16,800 | 25,293 |
Phoenix, the original and largest campus, also holds most of the Cast. Each other campus holds its campus pastor's family (decision 199). People are counted by primary campus, at the default seed.
Personas are behavior templates. Each household member gets one or more. The numbers inside each persona come from the calibration profile.
| Kind | Personas |
|---|---|
| Giving | One time, occasional, weekly, bi-weekly or twice monthly, monthly, quarterly, irregular, year-end, lapsing, new |
| Attendance | Core, regular, occasional, holiday-only, lapsing |
| Engagement | Group member, group leader, serving, serving lead |
Each giving persona defines its rhythm, amount pattern (steady or variable, round-number tendency), payment method mix, and scheduled versus one-time mix.
The generators live in the loader, so the Crowd is made fresh at install time: loader/generation/CrowdGenerator.cs makes the households, and the loaders in loader/loading/ turn personas into attendance and gifts.