Cadence Orchestrating Life

Fewer actions in. More useful signal out.

Scroll to explore

The Problem

Most task trackers are isolated checkboxes

Check a box in a normal to-do app and nothing else happens. The box doesn't know it's related to other boxes. It doesn't remember when you last checked it, or how often you tend to. It certainly doesn't adjust its own schedule based on what you actually do.

This project treats tasks as a graph, not a list. Log one thing and updates ripple through every parent category it belongs to. Scheduling adapts from real behavior. Exercise is the clearest place to see it (the hierarchy is deep and the tags are dense), but the same engine runs household cleaning, plant care, hygiene, and wellness routines.

Exercise Household Cleaning House Plants Hygiene Wellness

The Insight

One log can update an entire graph

Log one exercise (say, a kettlebell Bulgarian split squat) and the system walks up every parent it belongs to. That single log updates "legs," "unilateral," "kettlebell," "strength," and "exercise" all at once. One action, dozens of nodes touched.

Exercise is the best place to see this because the tagging runs six dimensions deep: movement pattern, muscles, equipment, energy system, objective, type. The graph below lets you explore the full hierarchy.

Interactive Category Hierarchy

Click any segment to zoom in. Click center to zoom back out. This exercise subset contains 353 nodes across 6 dimensions.

Propagation is recursive, not symbolic

The animation below shows what happens when one task fires: the update climbs every path to the root. Same thing happens when you log a cleaning task, water a plant, or check off a morning routine. One action, many updates.

Cascade Animation

Example shown: one "KB Bulgarian Split Squat" log ripples through multiple parent paths and converges at the top-level Exercise node.

0
Logged action
0
Nodes touched
0
Parent links traversed
0
Nodes in this graph

Single-example blast radius from the cascade view. Immediate updates are dozens deep inside a graph with hundreds of nodes.

In Practice

Same data, multiple interfaces

You can use a table UI, a desktop coding workflow, or mobile chat. All three write to the same underlying task graph and frequency model.

The mobile workflow is especially useful when away from a computer, including building climbing workouts on the go with climbing-specific logging guidance.

Task table view with sortable urgency and frequency columns
Manual Table Workflow Full-table control for filtering, urgency sorting, and one-click logging when you want explicit oversight.
Desktop AI-assisted workflow using MCP tools
Desktop Agent Workflow Assistant calls MCP tools directly in-session so planning and logging happen inside the same conversation loop.

Mobile, Full Context

Two real mobile snapshots showing why this matters: the same task graph and tools are available away from your desk.

Mobile AI workflow for querying tasks and getting suggestions
On-the-Go Daily Guidance Query current state, get next-task suggestions, and log updates immediately while out and about.
Mobile climbing workout planning example
Climbing Workout Build-Out Uses climbing-specific logging conventions to structure sessions while preserving per-attempt granularity.

Evolution

From spreadsheet to conversation

This started as a Google Sheet in 2016. I logged tasks by hand, tuned cadences by feel, and it worked well enough for years. Then the sheet became code: a Python engine with recursive logging and adaptive scheduling. Then the code got an interface: MCP tools that let an AI assistant log tasks, check urgency, search the graph, and build plans — all inside a conversation.

Each phase meant less typing and better decisions. The current version feels like talking to someone who remembers what you did, knows what's overdue, and can help you plan the next week.

2016+
Google Sheets Era
Manual tracking and cadence tuning by hand.
2024
Programmatic Core
Recursive parent logging and adaptive frequency automation.
Now
MCP + Agent Tools
Assistant executes tool calls and helps plan around goals, profile, and context.

Key shift: MCP turns task management from "I log everything" into "the agent helps execute and orchestrate."

Trust

Automation with control

The agent can execute task operations, but the system is built to stay inspectable and reversible. You can review current state, see why a recommendation was made, and correct individual entries without breaking the broader history.

Human Override
Suggestions are optional and final decisions stay with you.
Auditable History
Logs, notes, and parent propagation produce a traceable decision path.
Reversible Actions
Accidental log entries can be corrected without rebuilding the entire system.
General Agent Understands goals, context, and natural-language intent.
MCP Tools Log, query, search, update, and retrieve current state.
Specialist ML Model Next-task ranker optimized for selection prediction.
Task Graph + DB Hierarchy, frequencies, logs
Output Plan, recommendation, and optional execution.

Architecture pattern: a general intelligence agent orchestrates tools and calls specialized models where they outperform broad language models.

Model Strategy

Let the generalist orchestrate, let the specialist predict

The AI assistant understands what you're asking and decides which tools to call. But when it comes to predicting which task you'll pick next, it hands off to a dedicated ML ranker trained on your actual behavior history. The ranker is better at that one narrow job than any general model.

One layer for conversation and reasoning. Another for precision scoring. The assistant decides when to use the ranker, then blends its output with everything else it knows about your goals and context.

General Agent (LLM)
Broad reasoning, goal interpretation, plan composition, and natural-language interaction.
Specialist Predictor (ML)
Scores and ranks likely next tasks from behavior traces. Stronger at this narrow objective than a general model alone.

The predictor is one tool in the agent's toolkit, not a replacement for general reasoning.

The Mechanism

Frequency evolves from behavior

Frequency is measured in days between expected completions. A higher frequency value means the task is due less often; a lower value means it is due more often.

Each task starts from a baseline cadence. Then the system adapts using completion timing and non-completion: chosen before due date -> divide by 1.382 (surfaces more often), ignored until late/overdue -> multiply by 1.382 (surfaces less often).

Survival of the chosen: the tasks you actively choose keep earning attention, while neglected tasks gradually drift outward.

Frequency Evolution Over Time

Illustrative mixed-domain tasks with realistic divergence. Choosing tasks early pulls their interval down (/1.382); repeatedly ignoring tasks pushes it up (x1.382).

The multiplier is intentionally bounded and symmetric so cadence adapts quickly without becoming unstable.

Before & After

Left: near-uniform starting cadence. Right: the same task IDs after adaptation. Each bar represents one task.

Results

Better structure makes prediction easier

Structure the data well and prediction becomes almost easy. When every log carries hierarchy, timing, and frequency context, patterns emerge that a flat to-do list would never reveal. The model can learn that after you climb, you tend to stretch. That you clean the kitchen on Sundays. That when urgency spikes on three plant tasks at once, you handle them together.

The specialist ranker scores likely next tasks from your behavior history. The assistant decides when to consult it, mixes in its own reasoning about your goals and schedule, and surfaces a recommendation.

~75%
Hit@1 Accuracy
1,399+
Active Tasks
149K+
Log Events

Tech Stack

Python SQLite scikit-learn MCP ML Ranker D3.js Knowledge Graph Adaptive Scheduling
View Source → ← All Projects