Overview
The User Profile is a structured document Synap maintains for every end user of your instance: a set of critical attributes you define (typed fields like a customer’s budget, preferred language, or purchase timeline), a short narrative overview, and an extras bucket for stable facts that fall outside your schema. Profiles are built exclusively from what users actually said in ingested conversations, extracted, never inferred. If a conversation never touched an attribute, that attribute stays blank. Every populated attribute carries its own confidence, timestamp, and the ID of the conversation it came from. The profile is designed for conversation-start injection: one low-latency fetch returns the profile (plus recent conversation summaries) ready to paste into your agent’s system prompt; see Context Fetch anduser.get_profile.
Availability and enabling
The feature ships platform-wide and is on by default for every instance, and its model call is included in that document’s ingestion charge. Without any configuration, Synap maintains the narrative overview and theextras bucket for
each user. To get the full value, define your critical attributes in the instance’s
configuration: contact your Maximem team or use your dashboard’s instance
configuration.
Turning it off applies to future ingestions only. The setting is read when a
document is ingested, so switching it on does not backfill profiles from
documents already processed, and switching it off leaves existing profiles in
place. Either way, the next ingestion is the first one affected.The setting is per instance, not per account: each instance carries its own
user_profile block, so one instance can run profiles while another does not.enabled: false; that
choice is preserved across configuration regenerations.
Defining critical attributes
Each attribute is a typed field:
A realistic schema for a sales assistant:
How the profile is built
The profile updates as a by-product of normal ingestion; there is no separate API call to maintain it:- Your application pushes a conversation (for example with
conversation.ingest_transcript) and moves on; everything below is asynchronous and off your hot path. - Synap’s ingestion pipeline extracts long-term memories from the transcript.
- At the end of the pipeline, the profile step loads your instance’s attribute schema
and merges newly extracted, conversation-grounded values into the user’s profile
document, updating only attributes the conversation actually evidenced, respecting
allowed_values, and rewriting the narrative overview. - Each write bumps the profile’s version and records, per attribute, the source conversation ID and timestamp. Unrelated attributes are never touched, and concurrent ingestions for the same user merge safely.
extras object rather than discarded. Client-supplied analysis passed with the
transcript is used as extraction hints only; the transcript remains the source of
truth.
Attribute-schema edits take effect on new ingestions within a few minutes (configuration
is cached briefly). Existing profile values are preserved; new and changed attributes
populate as subsequent conversations provide evidence.
Reading the profile
At conversation start, fetch the profile together with recent conversation summaries in one call:user.get_profile for response details and
Response Shapes for the typed models.