B Buffy Agent
Buffy Agent Blog · Product & Architecture

The Activity Model: Habits, Tasks, and Routines as One System

Buffy uses a unified Activity model — habit, task, routine — so your behavior system can coordinate across channels without fragmenting into separate apps.

Most productivity tools split your life into silos:

  • habits live in a habit app
  • tasks live in a task app
  • routines live in your calendar or a doc

Then you become the integrator—trying to keep it all consistent while your day jumps between ChatGPT, Telegram, Slack, and whatever tools your work uses.

Buffy Agent is designed as a personal behavior agent: a behavior engine that treats everything you want to change as an activity (habits, tasks, and routines) and coordinates the lifecycle across channels.

What you’ll learn

  • How habit, task, and routine differ in Buffy—and why they share one Activity shape.
  • What gets written to event history and why that matters for reminders and reviews.
  • A five-minute recipe to try one routine without boiling the ocean.

Definition box: personal behavior agent

In this post, “personal behavior agent” means:

  • one behavior core that models habits, tasks and routines as activities
  • a memory system that remembers what actually happened over time
  • thin interfaces (ChatGPT, Telegram, Slack, internal bots) that all talk to the same core

The goal isn’t a smarter checklist. It’s a system that can sit next to you across your tools and help you change behavior over months, not days.

What is a personal behavior agent?

A personal behavior agent is an agent that:

  • models behavior as a durable system (not just a checklist)
  • stores what actually happened (event history), not only what was said
  • adapts reminders and suggestions based on context and patterns
  • can show up across channels without fragmenting state

Why a personal behavior agent (instead of “habits app + todo app”)?

Most productivity tools start with lists and calendars. Buffy starts with behavior. It is designed to sit next to you across channels you're already using — ChatGPT, Telegram, Slack and internal bots — and manage the full lifecycle of your habits, tasks and routines.

In practice, the “agent” part matters because behavior is not one surface:

  • You plan and reflect in longer conversations (often ChatGPT).
  • You execute via quick nudges and replies (often Telegram).
  • You coordinate work and team rituals (often Slack).

If your system can’t span those surfaces, it either becomes another app you forget to open—or a spam bot you mute.

A unified activity model

Under the hood, Buffy uses a single Activity model with three flavors: habit, task and routine. Each activity carries scheduling metadata (intervals, due dates, windows), priority and a simple status log. This uniform structure keeps the core small while still expressive enough to cover daily routines, one-off tasks and ongoing experiments.

The three activity types (how Buffy thinks about your day)

  • Habit: repeated behaviors you want to reinforce (“drink water”, “walk after lunch”).
  • Task: one-off actions with outcomes and often deadlines (“ship report by Friday”).
  • Routine: structured bundles of steps (“morning startup”, “weekly review”, “deep work block”).

The key: they share the same underlying structure (schedule + context + history), so the system can coordinate them instead of treating them as separate universes.

Which type should I use? (quick decision)

If you’re describing… Start with
Something you want to repeat on a cadence with no fixed “due” (“drink water weekdays”) Habit
Something with an outcome and usually a deadline (“send deck Friday 5pm”) Task
Several ordered steps in one window (“morning startup”, “weekly review”) Routine

You can refine later; the important part is one core records done / snooze / skip / defer the same way for all three.

Activity type properties

Property Habit Task Routine
Recurrence Interval (daily, weekdays, etc.) One-off (or recurring) Fixed cadence (daily, weekly)
Scheduling Time window (e.g. 7:30–8:00) Due date + optional window Time window with ordered steps
Sub-items None None Ordered list of habits/steps
Status per event done / skip / snooze done / deferred / cancelled started / partial / completed
Completion tracking Completion rate over interval Done or not Steps completed vs. total
Memory contribution Completion rate, timing, channel Due-date adherence Step-level patterns

How routines bundle habits

A routine is not just a label. It's a container for ordered steps, each of which can be a habit. The morning startup routine “water → planning → stretch” is one routine activity with three habit steps. This matters because:

  • One nudge opens the routine (not three separate habit nudges)
  • Completion is tracked at both the routine level and the step level
  • The agent can suggest “you usually skip the stretch — want to move it to a separate window?” using step-level data

Natural language to Activity model

When you say “Weekdays, remind me to drink water, do 10 minutes of planning, and stretch — between 7:30 and 8:00,” Buffy creates:

  1. A routine activity: “Morning startup”, weekdays, window 7:30–8:00
  2. Three habit activities inside it: water, planning, stretch
  3. A reminder config on the routine: one nudge at window open, one follow-up near close

You define intent in natural language. The Activity model structures it for execution.

The lifecycle: how activities behave over time

“Tracking” is the easy part. The hard part is the lifecycle:

  • creation (intent → structured activity)
  • execution (nudges + completions across channels)
  • adjustment (windows, cadence, channel choice, tone)
  • recovery (missed weeks, ramp-ups, smaller versions)

That’s what a behavior agent is for.

What gets logged (the event history)

Every interaction with an activity generates an event. The event log is what makes adaptation possible — without it, the system can’t tell the difference between a habit you abandoned and one you’re consistently doing at a different time.

Event type Triggered by What it records
completed User replies “done” Activity ID, timestamp, channel, response time
skipped User replies “skip” Activity ID, timestamp, reason (if given)
snoozed User replies “snooze Xm” Activity ID, snooze duration, resulting nudge time
no-reply Window closes without response Activity ID, window end time, last nudge time
modified User changes window / cadence Old config, new config, timestamp
partial Routine with some steps done Routine ID, completed steps, skipped steps

This log is the input to everything — briefings, adaptation suggestions, recovery messages. A habit tracker records streaks. A behavior agent records ground truth.

Separation of core vs. interfaces

Interfaces like ChatGPT or Telegram are thin adapters. They receive user messages, normalize them into a unified message format and send them into the behavior core. The core owns the logic for parsing intents, updating activities, scheduling reminders and generating insights, which is what allows Buffy to feel consistent across channels.

This separation prevents drift:

  • “snooze 20m” means the same thing in Telegram and Slack
  • completion semantics don’t fork per channel
  • the same history feeds the same reminder behavior everywhere

Built for long-term behavior change

The goal is not just to tick off more todos. The agent is designed for long-term behavioral change: noticing patterns, adapting reminders to your context and nudging you just enough without adding noise. The activity model, reminder engine and memory system all work together to support that outcome.

Example: one routine, one task, one habit in the same day

Suppose you use Buffy as your personal behavior agent for a single day:

  • Morning: You have a routine “Morning startup” (water, 10‑min planning, stretch) in a 7:30–8:00 window. Buffy nudges you in Telegram when the window opens; you reply “done” for water and “snooze 15” for the rest. The core logs completions and snoozes against the same activity model.
  • Midday: You add a task “Ship metrics review by Friday” in ChatGPT. The core stores it with a due date. Later, when you’re in Slack, you can ask “what’s due?” and get an answer from the same engine—no second app.
  • Evening: A habit “Evening walk” is in its window. The reminder engine sees you’ve been in back-to-back meetings (from context or from how you’ve been responding) and sends one nudge near the end of the window instead of spamming. When you skip, it’s recorded as data; next week the agent might suggest a shorter “5‑min stretch” variant.

One behavior core, one history, three activity types. That’s what “personal behavior agent for habits, tasks and routines” looks like in practice.

Anti-patterns (what not to build)

If you’re designing your own behavior tooling (or evaluating agent stacks), these patterns usually break:

Anti-pattern Why it hurts Better direction
A bot per channel Separate Telegram habit bot + Slack todo bot + planner GPT → fragmented state. One behavior core; adapters only (Building Multi-Channel Bots on Top of One Behavior Core).
Reminder-first design “Just ping more” → fatigue, mutes, abandonment. Windows, done/snooze/skip, end-of-window quiet (Designing Conversational Reminders That Don’t Annoy You).
Streak-only thinking Misses read as moral failure. Event history + smaller replan (Memory Architecture for Long-Term Behavioral Coaching).
No recovery path After a hard week, the UI only shows broken streaks. Offer a smaller cadence or fewer days; log choice as new intent.

Start small (a reliable 5-minute recipe)

If you want to feel this pattern quickly:

  1. Pick one routine (or one habit) that’s easy to succeed with.
  2. Define a time window (“between 7:30–8:00”) instead of a brittle alarm time.
  3. Choose an execution channel (Telegram for nudges, Slack for teams).
  4. Run it for a week, then ask: “should we shrink it, move the window, or change the channel?”

How the Activity model compares to other tools

The Activity model is what separates Buffy from single-surface tools:

Habit app Todo app Calendar scheduler Buffy (behavior agent)
Habits Limited
Tasks
Routines Limited
Event history (done/skip/snooze) Streaks only Done/not done Full event log
Multi-channel Calendar alerts ChatGPT + Telegram + Slack
Adaptation Reschedule only Memory-based adaptation

For specific comparisons: Habit Tracker vs. Personal Behavior Agent — or see the full comparison cluster: Buffy vs Habitica, Buffy vs Notion Habits, Buffy vs Motion.

Where to go next

Further reading