WORK IN PROGRESSDraft docs — content and examples are still being refined.
Information model

People & households

Before anything is owned or owed, there are people. Parties are their own flat array, a Case wraps the application, households group who is assessed together — and everywhere a person plays a part, they are referenced by id through a role, never nested.

The people layer

Four things that hold the applicants

01

Party — a person or an organization

Everyone in a case lives in state.parties[], each with its own id. partyKind discriminates INDIVIDUAL_PERSON (carries personalInformation — nin, name) from ORGANIZATION (carries organizationInformation).

02

Case — the application

One Case wraps the application: its purpose (PURCHASE, …), status, and the consents each party has given (e.g. CREDIT_CHECK).

03

Household — who shares an economy

households[] group parties that are assessed together: members with a personRole, a mainHousehold, and relationships. Affordability is computed per household.

04

Roles link people to things

A party is never nested inside a loan or a house. owners / accountRoles / mortgagors carry { partyId, role, share } — the same party id appears wherever they play a part.

How it looks

Parties on their own array, grouped by the case

Two applicants as parties, then the case that groups them into a household and records their consents. Hover a partyId to trace one person from parties[] into the household, stakeholders and consents.

state.parties[] + state.case
{
"parties": [
{
"partyKind": "INDIVIDUAL_PERSON",
"basicEntityInformation": {
"id": "party-1"
},
"personalInformation": {
"nin": "199008123456",
"firstName": "Alex",
"lastName": "Berg"
}
},
{
"partyKind": "INDIVIDUAL_PERSON",
"basicEntityInformation": {
"id": "party-2"
},
"personalInformation": {
"nin": "199203155678",
"firstName": "Sam",
"lastName": "Berg"
}
}
],
"case": {
"id": "case-1",
"status": "ACTIVE",
"purpose": {
"type": "PURCHASE"
},
"consents": [
{
"partyId": "party-1",
"consentType": "CREDIT_CHECK",
"consentStatus": true
}
],
"households": [
{
"householdId": "hh-1",
"mainHousehold": true,
"members": [
{
"partyId": "party-1",
"personRole": "HEAD_OF_HOUSEHOLD"
},
{
"partyId": "party-2",
"personRole": "MEMBER"
}
],
"relationships": [
{
"type": "PARTNER"
}
]
}
],
"stakeholders": [
{
"role": "APPLICANT",
"partyId": "party-1"
},
{
"role": "APPLICANT",
"partyId": "party-2"
}
]
}
}
The link

A person attaches through a role

Wherever a party plays a part — OWNER of a home, DEBTOR on a loan, MORTGAGOR on a deed — the entity holds a role that points back by partyId. Same ids as above; nothing about the person is copied in.

state.assets[0].basicAssetInformation.owners
[
{
"role": "OWNER",
"share": {
"numerator": 1,
"denominator": 2
},
"partyId": "party-1"
},
{
"role": "OWNER",
"share": {
"numerator": 1,
"denominator": 2
},
"partyId": "party-2"
}
]