Profiles
Profiles are essential for delivering maximum value to both your users and your content
Profiles are essential for delivering maximum value to both your users and your content. The more the system can learn about a user, the better it can personalize their experience, prepare engaging content, and drive meaningful interactions.
Bosca Profiles are structured as a top-level profile with multiple attributes that provide further details about the user. These attributes can originate directly from the user (e.g., their date of birth) or be derived from system observations of user behavior.
Key Features
- Incremental Development: There’s no need to burden users with lengthy onboarding flows. Instead, allow them to engage with the system naturally, offering opportunities to gradually share information about their preferences, interests, and dislikes.
- Implicit Insights: Through Bosca Analytics, user feedback and system observations are processed to generate implicit attributes. For instance, if a user frequently enjoys specific types of content, the system can generate recommendations or curated collections aligned with their preferences.
By combining explicit user inputs with implicit system-derived data, Bosca Profiles evolve dynamically, enabling tailored experiences seamlessly via the AI/ML enabled workflows that can interact with the data as it flows through the system.
Data Model
type Profile {
attributes: [ProfileAttribute!]!
id: String!
name: String!
slug: String
visibility: ProfileVisibility!
}
type ProfileAttribute {
attributes: JSON
confidence: Int!
expires: DateTime
id: String!
metadata: Metadata
priority: Int!
source: String!
typeId: String!
visibility: ProfileVisibility!
}
type ProfileAttributeType {
description: String!
id: String!
name: String!
visibility: ProfileVisibility!
}
type ProfileAttributeTypes {
all: [ProfileAttributeType!]!
}
Profile Bookmarks
create table profile_bookmarks
(
id bigserial not null,
profile_id uuid not null,
metadata_id uuid,
metadata_version int,
collection_id uuid,
created timestamp with time zone default now(),
primary key (id),
foreign key (profile_id) references profiles (id) on delete cascade,
foreign key (metadata_id) references metadata (id) on delete cascade,
foreign key (collection_id) references collections (id) on delete cascade,
check ( (metadata_id is not null and metadata_version is not null) or collection_id is not null ),
unique (profile_id, metadata_id, metadata_version, collection_id)
);
Profile Ratings
create table profile_ratings
(
id bigserial not null,
profile_id uuid not null,
metadata_id uuid not null,
metadata_version int,
collection_id uuid,
created timestamp with time zone default now(),
rating int not null,
primary key (id),
foreign key (collection_id) references collections (id) on delete cascade,
foreign key (profile_id) references profiles (id) on delete cascade,
check ( (metadata_id is not null and metadata_version is not null) or collection_id is not null ),
foreign key (metadata_id) references metadata (id) on delete cascade,
unique (profile_id, metadata_id, metadata_version, collection_id)
);
Profile Guide Progress / History
create table profile_guide_progress
(
profile_id uuid not null,
metadata_id uuid not null,
version int not null,
attributes jsonb,
started timestamp with time zone default now(),
modified timestamp with time zone default now(),
completed timestamp with time zone,
primary key (profile_id, metadata_id, version),
foreign key (profile_id) references profiles (id),
foreign key (metadata_id) references metadata (id)
);
create table profile_guide_progress_steps
(
profile_id uuid not null,
metadata_id uuid not null,
version int not null,
step_id bigint not null,
primary key (profile_id, metadata_id, version, step_id),
foreign key (profile_id, metadata_id, version) references profile_guide_progress (profile_id, metadata_id, version) on delete cascade,
foreign key (metadata_id, version, step_id) references guide_steps (metadata_id, version, id)
);
create table profile_guide_history
(
id bigserial not null,
profile_id uuid not null,
metadata_id uuid not null,
version int not null,
attributes jsonb,
completed timestamp with time zone,
primary key (id),
foreign key (profile_id) references profiles (id),
foreign key (metadata_id) references metadata (id)
);