DEV Community

Cristian Tala
Cristian Tala

Posted on

How AI Optimizes My 99 Daily Tasks (And Why It's Not Magic)

I manage 99 active tasks at any given moment. Content, community, courses, integrations, strategic planning.

Six months ago, my task system was chaos dressed up as productivity:

  • Priorities that changed based on my mood
  • Large tasks that never got started ("Create course" = blocked for 3 weeks)
  • Invisible blockers (waiting on something that was already done)
  • Multiple "sources of truth" (Asana, Notion, email, my brain)

Completion rate: 20% monthly. 80% of tasks died in the backlog.

Today, with automatic daily optimization, that number has risen to 42% completion rate. More than double.

It's not magic. It's a system designed to compensate for human limitations in task management.

Here's how it works (with code if you want to implement it).

The Problem: Humans Are Bad at Prioritizing

Recency bias: The task you saw 5 minutes ago feels more important than the one you added 3 days ago.

Novelty bias: New tasks are more interesting than boring ones (even if the boring ones generate more revenue).

False urgency: "Reply to email" feels urgent. "Create course that generates $2K/month" doesn't.

Granularity paralysis: "Create course" = abstract → you never start. "Write outline for module 1" = concrete → you do it.

Lost context: You marked a task as "Blocked" 2 weeks ago. Why? You can't remember.

The Solution: AI as Daily Auditor (Not Executor)

Key concept: AI doesn't do the tasks. It analyzes and suggests corrections.

My setup:

  • Task manager: NocoDB (self-hosted, free, PostgreSQL backend)
  • Daily analysis: Cron runs at 5:30 AM (before starting the day)
  • AI model: Opus (strategic thinking requires a top model)
  • Output: Markdown report in memory/YYYY-MM-DD.md

Cost: $9/month (Opus for strategic analysis is worth every cent vs losing 10+ hours/month on manual task management).

What the System Analyzes

1. Misaligned Priorities

Rule: Task priority must reflect project priority.

Detected example:

Task: "Write SEO post: pitch deck"
Current priority: P3 (low)
Project: Content Strategy (🔴 High)

❌ Problem: High-priority project, low-priority task
✅ Recommendation: Upgrade to P1
Enter fullscreen mode Exit fullscreen mode

Why it matters: High-priority projects (revenue-generating, critical deadline) can't have P3 tasks. If the project is 🔴 High, its tasks are P0 or P1.

2. Stale Tasks

Rule: If a task is "In Progress" for >7 days without updates, something's wrong.

Common causes:

  • Blocked but not marked as "Blocked"
  • You forgot it existed
  • Too large (should be atomized)

Detected example:

Task: "LinkedIn connection optimization"
Status: In Progress
Last update: 8 days ago

❓ Question: Still active or blocked?
Enter fullscreen mode Exit fullscreen mode

Action: The report forces me to make a conscious decision (mark blocked, add reason, or complete it).

3. Smart Atomization

Critical rule: Only atomize tasks when they're about to be executed.

Bad practices I avoid:

  • Atomize the entire backlog → 500 tasks, 90% never executed
  • Over-granular atomization → "Research X" in 5 tasks of 30 min = noise

Atomization criteria:

  • Task is In Progress (actively working)
  • Or due date ≤ 7 days
  • Or P0/P1 without a distant due date

Detected example:

Task: "Course: Complete content"
Priority: P0
Due: 3 days from now
Estimated: 18 hours

✂️ Suggestion: Break into 8 tasks × 1-3h each
Enter fullscreen mode Exit fullscreen mode

Result: 8 executable tasks vs 1 abstract task that never got started.

4. Blockers Without Reason

Rule: If you mark a task as "Blocked," you must specify why in the "Blocked By" field.

Why it matters: Without an explicit reason, you'll forget the blocker. Weeks later, the task is still "Blocked" even though the blocker was resolved.

5. P0 Overload

Rule: If >5 tasks are P0 (critical), something's wrong. Not everything can be critical.

Why it matters: P0 priority loses meaning if 20% of your tasks are P0. Real P0 = "if I don't do this today, there are serious consequences."

The Algorithm (Simplified)

def optimize_tasks():
    # 1. Fetch all active tasks from NocoDB
    tasks = nocodb.get_tasks(status=["Backlog", "To Do", "In Progress"])

    # 2. Load project priorities
    projects = read_file("projects/INDEX.md")

    # 3. Analyze each task
    issues = []

    for task in tasks:
        # Priority misalignment
        project = get_project(task.project_id)
        if project.priority == "High" and task.priority in ["P2", "P3"]:
            issues.append({
                "type": "priority_misalignment",
                "task": task,
                "recommendation": "Upgrade to P0 or P1"
            })

        # Stale tasks
        if task.status == "In Progress" and days_since_update(task) > 7:
            issues.append({
                "type": "stale",
                "task": task,
                "question": "Still active or blocked?"
            })

        # Atomization candidates
        if should_atomize(task):
            subtasks = suggest_atomization(task)
            issues.append({
                "type": "atomization",
                "task": task,
                "subtasks": subtasks
            })

        # Blocked without reason
        if task.status == "Blocked" and not task.blocked_by:
            issues.append({
                "type": "missing_blocker",
                "task": task
            })

    # 4. Check P0 overload
    p0_count = count_tasks_by_priority(tasks, "P0")
    if p0_count > 5:
        issues.append({
            "type": "p0_overload",
            "count": p0_count,
            "warning": "Not everything can be critical"
        })

    # 5. Generate report
    report = generate_markdown_report(issues)
    save_to_file(f"memory/{today}.md", report)
Enter fullscreen mode Exit fullscreen mode

NocoDB Schema

Tasks table fields:

Field Type Description
Title Text Task name
Status Select Backlog, To Do, In Progress, Done, Blocked, Cancelled
Priority Select P0 (critical), P1 (high), P2 (medium), P3 (low)
Value Number (1-10) Business impact score
Due Date Date Deadline (optional)
Project Link (Projects) Which project it belongs to
Blocked By Text Reason for blocking

Projects table:

Field Type Values
Name Text Project name
Priority Select High, Medium, Low, Paused
Status Select Active, Paused, Completed, Cancelled

Key principle: Project priority cascades to its tasks. High project → P0/P1 tasks.

Results: 42% Completion vs 20%

Stats (60 days):

  • Tasks created: 240
  • Tasks completed: 101
  • Completion rate: 42% (vs 20% before)
  • Tasks AI-optimized: 180
  • Priority misalignments corrected: 47
  • Stale tasks flagged: 23
  • Blockers resolved: 15
  • Tasks atomized: 8

Time saved:

  • Before: 30 min/day reviewing tasks manually
  • After: 5 min/day reading AI report
  • Savings: 25 min/day = 3 hours/week

The OpenClaw Cron Config

{
  "name": "Daily Task Optimization",
  "schedule": {
    "kind": "cron",
    "expr": "30 5 * * *",
    "tz": "America/New_York"
  },
  "payload": {
    "kind": "agentTurn",
    "message": "Optimize tasks in NocoDB. Read projects/INDEX.md for context. Identify: misaligned priorities, stale tasks, atomization candidates, blockers without reason, P0 overload. Save report in memory/YYYY-MM-DD.md.",
    "model": "opus",
    "timeoutSeconds": 300
  },
  "sessionTarget": "isolated"
}
Enter fullscreen mode Exit fullscreen mode

Why Opus (not a cheaper model):

Cheaper models do mechanical prioritization (just sort by due date), miss implicit blockers, atomize everything (generating 50+ micro-tasks = noise).

Opus detects nuance ("this depends on X which is blocked by Y"), atomizes intelligently (only when it's about to execute), and understands business context (revenue > vanity tasks).

Cost: ~$0.30/day ($9/month) — worth every cent for 1 hour/day saved.

Key Lessons

1. AI Doesn't Replace Decisions, It Informs Them

AI suggests. I decide.

Example:

  • AI says: "Upgrade task X to P1"
  • I know: "That task is waiting on client approval, can't move"
  • Decision: Mark as Blocked, add reason

The value: AI forces me to make a conscious decision. Without AI, the task rots in the backlog without me noticing.

2. Atomization Timing Is Critical

Wrong:

# Atomize EVERYTHING in the backlog
for task in backlog:
    if "create" in task.title or "write" in task.title:
        atomize(task)
# Result: 200 new tasks, 90% never executed
Enter fullscreen mode Exit fullscreen mode

Right:

# Atomize only when about to execute
for task in tasks:
    if task.status == "In Progress" or task.due_date <= 7_days:
        if is_large(task):
            atomize(task)
# Result: Granular work WHEN it matters
Enter fullscreen mode Exit fullscreen mode

3. 4 Hours Deep Work = Realistic Planning

Founders don't have 8 hours/day for tasks.

Reality:

  • Meetings: 1-2h
  • Email/messages: 1h
  • Firefighting: 1h
  • Deep work: 4h

Planning rule: If daily P0/P1 tasks are >4h estimated → something isn't really P0/P1.

Is It Worth It?

Item Cost
NocoDB $0/month (self-hosted)
PostgreSQL $0/month (same VPS)
AI cron $9/month
Total $9/month

ROI:

  • Time saved: 3h/week = 12h/month
  • At $100/hour = $1,200 value
  • Cost: $9
  • Net value: $1,191/month

Completion rate:

  • Before: 20%
  • After: 42%
  • Improvement: 110%

Yes, it's worth every cent.

Implementation Without OpenClaw

Option A: Manual Review (Free)

Every Monday morning:

  • Filter tasks In Progress >7 days
  • For each P0/P1: does it reflect project priority?
  • Large tasks near-term: atomize
  • Blocked without reason: add reason or unblock

Time: 15-20 min/week

Option B: Python Script + AI API

import openai
import requests

# 1. Fetch tasks from your task manager
tasks = fetch_tasks()

# 2. Prepare context
context = f"""
Analyze these {len(tasks)} tasks:
{json.dumps(tasks, indent=2)}

Identify:
1. Misaligned priorities
2. Stale tasks >7 days
3. Atomization candidates
4. Blockers without reason
5. P0 overload (>5 tasks)

Output: Markdown report
"""

# 3. Call AI
response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": context}]
)

# 4. Save report
with open(f"reports/{today}.md", "w") as f:
    f.write(response.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

Cost: ~$3-5/month (GPT-4 API)

Conclusion: AI as Copilot, Not Autopilot

This system does NOT do tasks for me. It audits them.

The value:

  • Forces conscious decisions
  • Detects patterns I miss during the day
  • Converts task management from "30 min/day" to "5 min reading report"

The result:

  • Completion rate up 110% (20% → 42%)
  • 3 hours/week saved
  • Less stress (I know nothing is falling through the cracks)

If you manage >30 active tasks, this system pays for itself immediately.

Do you use AI for task management? What frameworks or tools work for you? Share in the comments.

📝 Originally published in Spanish at cristiantala.com

Top comments (0)