Profile
Read Rollup’s incrementally maintained model of the user with profile().
Profile returns precomputed, structured understanding built across the user’s history: preferences, affinities, recurring activities, routines, patterns, temporal trends, and recent changes.
Read persistent context#
TypeScript examples assume a server-side Rollup client authenticated for your application and bound to a consented user. Use the same application user ID supplied to the iOS SDK; keep secret credentials on your backend.
const profile = await rollup.profile()
Optionally scope by domain#
const profile = await rollup.profile({ domains: ["food", "travel", "style"] })
Domains are optional scopes over the same user understanding. Omit domains to read all context available to your application, or request only what a feature needs. Scoping narrows the response; it never expands the user’s consent or your application’s access.
Understanding over time#
{ "preferences": { "food": [ { "concept": "japanese", "strength": 0.91, "confidence": 0.94, "supporting_moments": 41 }, { "concept": "specialty_coffee", "strength": 0.84, "confidence": 0.89 } ], "travel": [ { "concept": "walkable_cities", "strength": 0.88, "confidence": 0.90 } ] }, "behaviors": [ { "concept": "running", "frequency": "2-3x/week", "trend": "increasing", "confidence": 0.88, "supporting_moments": 31 } ], "patterns": [ { "concept": "weekends_are_more_social", "confidence": 0.86, "supporting_moments": 54 } ], "coverage": { "state": "ready", "history_months": 38, "moments_processed": 624, "freshness": "current", "updated_at": "2026-09-14T18:22:00Z" } }
Use Profile for frequent personalization#
Read Profile when ranking recommendations, setting useful defaults, or adapting an interface to stable preferences. It avoids running new inference for every product request.
Profile is cacheable within your application’s consent and freshness requirements. Refresh as coverage changes and clear cached context on disconnect. Use query() when the feature needs a new, question-specific answer, and search() when it needs local moments or media.