User data structures

Each visitor to the platform may have a profile associated with them. The profile will depend on a) whether they have an account and b) the type of problem(s) they have.

Account or user profile

The account profile is the standard Drupal user account profile. This profile contains the information necessary to log in. This includes:

  • username

  • UID (user id)

  • password

  • email

  • mobile number

  • created (date created)

  • changed (date of last change)

Problem Profile

The problem profile is the container that contains core information about a user’s problem. A user may have multiple problem profiles, depending on how many problems they identify and store in the system.

For example, a user may have a a problem profile for “Debts” and a problem profile for “Divorce”; the user may have multiple debt problems but the metadata in the problem profile is shared across all of these.

This custom entity contains the core problem profile information:

Field name

Type

Description

profile_id

Auto number

Unique ID for the profile

uid

integer

User ID for the account associated with the profile

type

varchar

Type of problem; this will be the entity name that contains more specific data about the problem

zip_code

varchar

Zip code of the problem

created

timestamp

Date problem profile created

changed

timestamp

Date problem profile was last changed

changed

timestamp

Date problem profile was last changed

terms_accepted_time

timestamp

Timestamp when TOS was accepted

privacy_policy _accepted

timestamp

Timestamp when privacy policy was accepted

in_illinois

integer

0 or 1 depending on whether person in Illinois

city

varchar

City where the legal problem is located

county

varchar

County of the problem

zip_suffix

varchar

Suffix for a postal code

user_associated_with _profile

int

User ID of the person tied to the profile

problem_type

varchar

String of problem type

status

int

Drupal system published/not published status

profile_metadata

term reference

Term references to the user profile metadata taxonomy; unlimited

Problem type identifies the broad probleme entity involved (like debt problem)

Note

The problem profile contains only very high level information to identify the more specific entity that will contain the actual problem information. While we initially are building this platform for debt, we may expand to support other problem types. If the user has a debt problem, the type will be “debt” which would then invoke the debt_problem_entity which contains specific debt problem metadata. If they had a divorce problem, there would be a divorce_problem_entity.

Expert system responses

This entity tracks data sent to and received back from any expert system (for example, the use of DialogFlow, Guided Navigation, or Landbot to perform filtering or triage)

Field name

Type

Description

ID

Auto number

Unique ID for the data record

profile_id

integer required

Problem profile the expert system data is associated with

expert_system

varchar

name or url of the system

expert_system_id

varchar

id of the expert system path used

expert_system_uuid

varchar

unique id associated with the specific instance of the expert system

response_value

JSON/text

JSON representation of data received from the expert system

created

timestamp

Timestamp of when record created

changed

timestamp

Timestamp of when record last changed

uid

integer

User ID of the person associated with the response, if known

Example JSON from initial triage (not debt prioritization)

 {{
"id": 417400267,
"problem_profile_id": null,
"source": "https://cdn.landbot.io/landbot-3/preview.html?ts=1733866006523&config=https%3A%2F%2Fstorage.googleapis.com%2Flandbot.pro%2Fv3%2FH-2656275-4RASN8SAA0QV0NNO%2Findex.json",
"profile_address": "5 E Chestnut St, Coal City, IL 60416, USA",
"profile_city": "Coal City",
"profile_county": "Grundy",
"profile_zip_code": 60416,
"profile_zip_suffix": null,
"debt_type": "130051",
"debt_problem_type": "130116",
"debt_creditor_name": "Midland Credit Management, Inc.",
"debt_creditor_type": "collection_agency",
"debt_is_debt_collector": "True",
"debt_last_payment_date": "2018/12/11"
}

Example JSON from initial triage (debt prioritization)

When debt prioritization is included, it returns the term IDs for the types of debts in the debt_prioritization array.

 {
 "id": 417400267,
 "problem_profile_id": 16,
 "source": "https://cdn.landbot.io/landbot-3/preview.html?ts=1731020055069&config=https%3A%2F%2Fstorage.googleapis.com%2Flandbot.pro%2Fv3%2FH-2646298-YIU9M453YSZ8TGVE%2Findex.json",
 "debt_prioritization": [
   "130006",
   "130016",
   "129996",
   "130101"
 ]
}

User solutions

This entity tracks the options for a specific problem.

Field name

Type

Description

entity_id

auto number

Unique id for the data record

nid

integer

Node id of the option

node_type

varchar

Type of the node

problem_id

integer; required

Debt problem profile associated with the option

type

varchar; required

Problem type

status

varchar

Status of the solution

created

timestamp

Timestamp of when record was created

changed

timestamp

Timestamp of when record was last changed

uid

integer

User ID of the person associated with the solution

description

longtext

Status

Status options are:

  • Available - the system thinks the option may apply

  • Unavailable - the system thought the option might have applied but further filtering ruled it out

  • Yes - the user has identified this as their preferred option

  • No - the user has ruled it out

  • Maybe - the user is not sure but wants to hold on to the option

  • Complete - the user has completed the specific option

  • In progress - the user is actively working on the option

User option progress

This entity tracks the specific step activity for an option referenced in the user solution data entity.

Field name

Type

Description

entity_id

number

Unique id for the data record

option_id

integer; required

Entity ID of the option from user solution data

step_id

integer; required

paragraph ID of the step block

status

varchar

Status of the solution

created

timestamp

Timestamp of when record was created

changed

timestamp

Timestamp of when record was last changed

uid

integer

User ID of the person associated with the solution

description

longtext

Statuses here are:

  • Not started

  • In progress

  • Completed

Problem type specific entities

While the platform is focusing on consumer debt, ILAO envisions replicating this to other types of problems. The entities defined above are generic while those below are tied to specific problem groups.

Consumer debt

Debt problem entity

This entity contains all of the metadata for a user’s specific debt problem but not information on specific debts. Specific debt information is in debt entities. A debt problem may have multiple debts attached.

Note

We currently envision a 1-1 relationship between debt problem and debts but the system is structured to accommodate the potential 1-many relationship in the future.

Field name

Type

Description

entity_id

auto number

Unique entity id

profile_id

integer

Profile associated with the problem

current_problem

integer

Term reference to the problem taxonomy

current_focus

integer

Entity id of the debt being focused on, if applicable

credit_score

integer

Credit score of the individual

created

timestamp

Timestamp of when the record was first created in the system

changed

timestamp

Timestamp of when the record was last changed in the system

uid

integer

User id of the person; 0 if anonymous

status

integer

0 for unpublished / archived 1 for new / active

archived

timestamp

Timestamp of when a debt problem was archived

summary_nid

integer

node ID of the matching summary template

Debt entity

Debt entities are for specific debts. Different debt types may have different data associated with them. Debt entities are then tied to specific debt profiles.

Field name

Type

Description

debt_id

auto number

unique identifier for the debt

label

varchar

Name of the debt, as defined by user

debt_problem_id

integer; required

id of the debt problem entity

created

timestamp

Timestamp of when the record was first created in the system

changed

timestamp

Timestamp of when the record was last changed in the system

amount

float

Amount of the debt

last_payment_date

varchar / date

Date of last payment

interest_rate

float

Interest rate, if known

debt_type

integer

Term reference to debt type taxonomy

creditor_name

varchar

Name of the creditor, if known

creditor_type

varchar

Type of creditor

is_debt_collector

integer/boolean

1 or 0; is creditor a debt collector

status

integer

published / not published

uid

integer

user ID associated with the debt

debt_metadata

term reference

Term references to the user profile metadata taxonomy; unlimited

Debt entities in prioritization

Debt prioritization does not factor in specific debt details but orders debt types based on general properties. As such, much of the problem and debt data is missing.

When a user completes prioritization, for each debt type included in the prioritization matrix:

  • A debt_problem entity is created for each debt type in the prioritization matrix with:

    • profile_id added

    • created and changed timestamps set

  • A debt entity is created:

    • debt_id is automatically generated

    • debt_problem_id is set to the debt_problem entity just created

    • created and timestamp are set

    • debt_type is set to the taxonomy term prioritized

    • all other fields are ignored

  • The debt_problem entity is updated to set the current_focus = to the debt entity ID