A real, named individual (a specific customer, interviewee, teammate, or stakeholder) as distinct from the abstract persona.
A person is a specific human being: a named individual with a real calendar, real availability, and a real set of skills. The graph treats the person as distinct from the role they hold, and that separation is the whole point. People rotate between roles, hold several at once, go on leave, and leave the company; the responsibilities they carry should not vanish or scatter when they do.
Modelling the individual apart from their function is a long-standing convention in organisational data. HR systems separate the employee record from the position; the position from the jobJobUserJob To Be Done: what the user is trying to accomplishView reference →; the job from the grade. Each layer changes on a different clock, and conflating them produces well-known failures: lose the position-versus-person distinction and a resignation deletes the work, a promotion rewrites history, a maternity cover looks like a duplicate employee.
Product practice imported the same discipline through the responsibility assignment matrix. RACI charts (responsibility charting, traceable to the 1950s and named through the 1970s, Perfony) deliberately assign roles, not named people, to tasksTaskProduct SpecificationA unit of work within a story or epicView reference →, so that a chart survives a reorganisation. The person is the late binding: you fill the role with a name only when you needNeedUserA user need, pain, desire, or constraintView reference → to know whose calendar to check.
The refinement worth keeping is that a person is real where a personaPersonaUserAn archetype representing a user segmentView reference → is invented. The two words sit one letter apart and get muddled constantly, but they answer opposite questions. A persona is a research-derived composite that stands for a segment of users. A person is one actual employee on the building team. The graph never confuses them, because they live in different regions and connect to different things.
A platform team has five people. One of them, call her Priya, holds the engineering manager role and also, for one quarter, an interim tech-lead role on a spun-up payments initiativeInitiativeStrategyA large coordinated effort to achieve a strategic goalView reference →. The graph records Priya once, as a person, and connects her to two roles. When she takes four weeks of leave, the tech-lead role reassigns to a colleague; Priya's node is untouched, her EM responsibilities are flagged as covered, and the payments work keeps its owner. A naive model that pinned the work directly to "Priya" would have stranded it the day she logged off. A query for "who is overloaded" can now count roles per person and surface that Priya is carrying two before the burnout does.
In the Unified Product Graph, PersonTeam & OrganisationA person entity sits in the Operations & Quality region within the personteam_org domain. Its defining edge is any entityowned byPersoncross-domain: any node can name a specific human as its owner. That edge exists alongside node_owned_by_personany entityowned byRolecross-domain, and the choice between them is meaningful. Point ownership at a person when you genuinely need the individual (the only one who knows the legacy billing code); point it at a role when you want the work to survive a rotation. Separating person from role is what lets the graph answer both "who personally owns this" and "what does this role own" without forcing one to stand in for the other.node_owned_by_role
Type-specific fields on BaseNode
emailstringPrimary contact email. Stable identifier for de-duplication.
role_titlestringFree-text job title. Distinct from the structured `role` entity.
time_zonestringIANA time zone (e.g. "Europe/Berlin"). Useful for capacity / on-call planning.
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering