CactusBrain Personalize / Developer Preview

Personalization without user tracking or tracking databases.

Rank items to one user's behaviour on their own device. No models to train, no central telemetry to collect, and zero user data ever leaving the handset.

LOCAL INTERACTIONSTaps / Views
↓
TEMPORAL PROFILEHalf-life decay
↓
RANKED CANDIDATESPersonalized list
01

Temporal Profiles

Model user interests over time with configurable half-life decay curves and topic affinities.

02

On-Device Ranking

Score hundreds of candidates in sub-millisecond local execution without network calls.

03

Exploration Modes

Prevent echo chambers with built-in epsilon-greedy and contextual exploration algorithms.

04

Encrypted Persistence

Profile weights and observation history are stored atomically in encrypted device storage.

Immediate feedback loops without backend round-trips.

When a user interacts with content, their feed updates instantly. No batch pipelines, no vector database hosting costs.

import CactusBrainPersonalizeSDK

let personalizer = try await CactusBrainPersonalize.load(
    collection: "feed-ranking",
    profile: .decaying(halfLife: .hours(48))
)

// Observe local user interactions (opens, clicks, dwell time)
try await personalizer.observe(
    itemId: "article-892",
    affinity: .positive(weight: 1.0)
)

// Rank candidate items completely on-device
let rankedItems = try await personalizer.rank(
    candidates: candidateIds,
    mode: .hybrid(exploration: 0.15)
)

GDPR, CCPA, and ATT compliant by default.

Because personalization state stays on the client, you don't need complex consent flows for server-side user tracking. The data never leaves the operating system sandbox.