Skip to main content

Personalizer overview

Nimbus middleware is the product wedge: a Bayesian personalization head for frozen neural / foundation embeddings. Encoders stay external. Apps consume thin BrainState outputs. One-liner: anything that can encode(X) → Z plugs in; Nimbus owns personalization, uncertainty gating, and cheap online updates — not the trunk. One API across many trunks: frozen encode(X)→Z, Personalizer Bayesian head, BrainState intent + UQ One Personalizer API across trunks — from the Universal Personalizer manuscript (Paper 1b).
Classical CSP / bandpower / Riemann features still work. Use Personalizer(encoder=None) or the standalone heads (NimbusLDA, …) documented under Models.

Start Here

Encoder contract

wrap → Personalizer → save/load rules.

BrainState

App-facing intents, presets, and bridges.

Evidence

Cost bake-off, FT comparison, transfer map.

Python Quickstart

Fit a Personalizer in a few minutes.

Minimal example

Integrator checklist

  1. When to adapt — factory works → little lift; gated stress → head adaptation; cost bake-off favors head before full FT. See Evidence.
  2. Gate decisionspreset="research" / "consumer"; inspect BrainState.rejected, need_more_data, uncertainty. See BrainState.
  3. Head stability — after online updates, use calibration_sufficient on an unlabeled pool.
  4. Encoder swap — freeze trunk; match embedding_dim; never pass logits as embeddings; keep model_id consistent across save / load. See Encoder contract.

Next Read

Encoder contract

BrainState

API Reference

Heads / Models