Skip to content

Professions

Every job in the town, who does it, and how it ties into the tick pipeline.

A profession is a deterministic schedule + a behavioral archetype, not a class.

Profession Table (v1)

ProfessionCountExample NPCPrimary LocationSchedule
Baker1Anna SchmidtBakery06:00–14:00
Publican1Sam O'BrienPub14:00–01:00
Café owner1Lila WongCafé07:00–18:00
General store owner1Henry LawsonGeneral Store08:00–19:00
Greengrocer1Maria EspositoMarket07:00–14:00
Florist1Yuki TanakaMarket07:00–14:00
Fishmonger1Old JackMarket07:00–14:00
Pharmacist1Sarah KimPharmacy09:00–18:00
Chief doctor1Michael ChenHospital09:00–17:00
Surgeon1Aisha PatelHospital09:00–17:00
Nurse2Daniel Park, Carla ReyesHospitalShift-based
Hospital orderly1Tom WhitfieldHospital22:00–06:00
Police officer2Ben Foster, Priya SinghPolice StationShift-based
Police sergeant1Joe WilliamsPolice Station09:00–17:00
Mayor1Patricia HollowayTown Hall09:00–17:00
Clerk1Robert NgTown Hall09:00–17:00
Priest1Father MarcusChurch08:00–18:00
Teacher1James CarterSchool08:00–15:00
School principal1Helen WalkerSchool08:00–17:00
Conductor1Frank MillerTrain Station06:00–18:00
Retired (varied)6Eleanor, Margaret, etc.Home / TownLoose
Children (students)5Tommy, Sophie, etc.School08:00–15:00

Total: 30 NPCs.


How Professions Drive Behavior

A profession is more than "where you work". It defines:

1. Default Schedule

Each profession has a work window. Outside this window, the NPC is free to make autonomous decisions (within their personality).

2. Need Priorities

Different professions care about different things:

  • 🍞 Baker → cares about flour stock, weather (rain hurts foot traffic)
  • 👮 Police officer → cares about town safety, crime events
  • 🍻 Publican → cares about evening footfall, beer stock
  • 👨‍⚕️ Doctor → cares about patient health, hospital capacity

3. Conversation Topics

NPCs talk about what they know. A doctor mentions patients. A baker mentions bread. A publican mentions last night's rowdy crowd.

4. Social Network

Certain professions cluster:

  • Hospital staff hang out with each other (off-shift)
  • Market traders argue over stall placement
  • Night-shift workers form their own social circle

5. Diary Voice

The LLM is prompted with the NPC's profession as part of context. This subtly influences diary tone — a baker writes about flour, a doctor writes about patients.


Shift Work

Two locations have shifts:

Hospital

  • Day shift: 09:00–17:00 — Michael, Aisha, Sarah (part)
  • Evening shift: 17:00–22:00 — Daniel, Carla
  • Night shift: 22:00–06:00 — Tom, one nurse on rotation

Police Station

  • Day shift: 09:00–17:00 — Joe + one officer
  • Evening shift: 17:00–01:00 — one officer
  • Night shift: 01:00–09:00 — one officer

Shift rotation is deterministic per week so NPCs have stable routines.


Children & Non-Workers

  • Children (ages 8–16): Mandatory school attendance 08:00–15:00. Outside that, free time.
  • Retirees: No fixed schedule. Spend days at home, walking, at the pub, etc. They are emergent-story powerhouses because their time is unstructured.

Multi-Job NPCs

One NPC — Sarah Kim — works both at the pharmacy and at the hospital. Her schedule splits her day:

  • 09:00–13:00 — Pharmacy
  • 14:00–18:00 — Hospital

This kind of multi-location work is rare in v1 but supported by the data model.


Profession Data Model

ts
interface Profession {
  id: string;
  name: string;
  defaultLocationId: string;
  workWindows: TimeWindow[];   // when they're "supposed" to be at work
  needPriorities: Record<NeedType, number>;  // 0-1 weight
  conversationTopics: string[];
  socialAffinity: Record<ProfessionId, number>;  // -1 to 1
  diaryToneHints: string[];
}

See the runtime NPC database for full definitions.

Last updated:

Released under the MIT License.