Workflow automation
The assistant that proposes — and learns from what you decline.
The real problem
A proactive assistant is a good idea that becomes unbearable very fast. The threshold is low: two irrelevant proposals are enough to get the feature switched off forever.
The reflex is to put restraint in the prompt — "only propose if it is genuinely useful". That does not hold: the model has no memory of its own past rejections, and no way to count.
How I solve it
A five-stage loop where the guardrail lives in code, never in the prompt:
- Usage journal — private by default: first 256 characters plus a SHA-256 fingerprint, enough to detect repetition without storing the text
- Nightly habit mining — recurring patterns extracted offline
- Proposal cards — under a hard cap: 3 per session, never more
- Auto-distillation — what is accepted becomes a capability
- Feedback loop — a rejection is final for that (habit, kind) pair; an acceptance buys 30 days of silence; three rejections in a row mute a whole category for 14 days
The model receives the aggregate as informative data. Never as a decision.
A trap learned in the field
The initial temptation was to let the model arbitrate its own frequency — it has the context, it should know. It does not. A stateless model cannot count its own interruptions, and a moderation instruction in the prompt is renegotiated every turn.
Moving the counter into code fixed it in one pass. The general rule: anything that must be guaranteed is not asked of the model, it is imposed around it.
What it delivers, measured
- Five bricks shipped and deployed, each proven end to end before the next began
- Hard cap of 3 proposals per session, not bypassable
- Fingerprinted journal: repetition detection without retaining the text
- File-watching agent in production, reconciliation every 6 h
Where it runs in production
- Assistant proactif — Observe → propose loop
- SampleBrain — Incremental sample indexer
- Klody Core — Control plane
Your data cannot leave the building?
That is precisely the problem I solve. A 30-minute call is enough to scope an audit.