Sidefy is adding an on-device engagement learning pipeline—Create ML training, NLModel inference, and implicit signal collection—that learns RSS interest from how you browse, with no cloud uploads.
Sidefy is adding on-device behavior learning (Engagement Learning) — a Core ML pipeline that infers RSS interest from how you actually browse, without explicit ratings or cloud training.
Note: This is an experimental feature. Choose Enable Experimental Features from the Help menu, then open Experimental Features from the menu bar (under ADVANCED). Turn on Enable Behavior Learning inside that window. Disabling experimental features turns behavior learning off immediately; collected samples and the trained model are kept until you tap Clear.
The Problem
Timeline feeds grow faster than manual curation. Rules help, but they are static. We wanted a layer that adapts to your habits while keeping all data and inference on your Mac.
The Stack
- Signal collection —
BubbleEngagementTrackerturns implicit actions into weighted samples: selection dwell, confirm-open, page turns, reader engagement, and more. Positive and negative signals roll up into local SQLite records. - Create ML training —
BehaviorModelTrainerbuilds anMLTextClassifier(maxEnt) from event title + notes prefix. Training starts at 25 samples; with an existing model, 10 new samples since the last run can trigger automatic retraining. - NLModel inference —
BehaviorClassifierServiceloads the compiled model via NaturalLanguage, scores each event (interest − disinterest), and applies presentation in the bubble: smart sort and dim low-interest rows — no network round trip.
Samples, model, and inference all stay on device.
What It Learns From
Signals are behavioral, not explicit thumbs-up/down:
- Lingering on an event vs. quick page turns
- Opening an item vs. dismissing the bubble immediately
- Time spent in the reader (optional via Include Reader Signals)
Currently scoped to RSS plugin events only — calendar and reminders are excluded.
How to Use It
In Experimental Features → Behavior Learning:
| Option | What it does |
|---|---|
| Enable Behavior Learning | Master toggle; must be on for collection or apply |
| Collect Only | Collect samples without reordering or dimming bubble rows |
| Collect and Apply | Collect samples and sort + dim rows inside the event bubble |
| Include Reader Signals | Add reader dwell and navigation to the sample mix |
| Automatic / Manual training | Retrain on a schedule, or tap Train / Retrain (manual mode only) |
| Clear | Delete all samples and the trained model |
Sample Stats shows a total count only (e.g. 42 samples) — not individual records or interest/disinterest breakdown. Manual mode surfaces brief train success/failure messages; automatic training runs in the background.
What Changes on Screen
- Bubble — In Collect and Apply mode, event order and row opacity inside the popover follow the learned interest score. Dimming applies here only.
- Timeline color bar — Sorting may change segment order within a group because events are reordered at the data layer. The bar itself is not dimmed.
Risk Notice
Warning: With Collect and Apply enabled, the model may reorder bubble rows and dim low-interest items based on your browsing habits. With few samples or noisy signals, results can feel unexpected — or like the bubble is slipping out of your control.
Use Collect Only if you want background sampling without changing bubble presentation; settings will only show whether the sample total is growing. Switch to Collect and Apply when you are ready for sort/dim behavior. You can change modes, disable experimental features, or Clear samples and the model at any time.
Shipping as an experimental feature in an upcoming Sidefy release.