My personal AI agent called Wiz went from a Notion-based task system to a native macOS app in three weeks.
Here is what happened.
Week 1: Notion (broken immediately)
Tasks managed through Notion API. Latency issues made it unusable for agent workflows. The agent was waiting 2-3 seconds for every task update.
Week 2: Obsidian markdown (better, still not enough)
Switched to local markdown files. Fast reads, but the agent could not lock tasks properly. Race conditions when multiple sessions ran in parallel.
February 11: Built WizBoard v1 in one session
Minimal FastAPI backend with SQLite and vanilla JavaScript frontend. Five task statuses: Backlog, Next, Now, Waiting, Done. Tracks whether Wiz has claimed each task.
Every two minutes, a LaunchD service polls for assigned work, starts Claude Code sessions, manages task completion. This fixed the race conditions.
February 18: Native SwiftUI app because ADHD
Browser tab switching caused too much friction. Built a native macOS and iOS app with Focus Mode — displays active task name and timer directly in the menu bar.
80 Swift files. ~16,000 lines of code. Built partly with Wiz assistance.
What the infrastructure looks like now
- Model routing: Haiku for execution (95%), Sonnet for content (4%), Opus for planning (1%)
- Failure handling: Four layers with rate-limit cascading and concurrent session isolation
- Integration: Claude Code + Codex, depending on task type
- State: Everything persists across sessions via SQLite
The lesson: agent infrastructure needs to be designed for agents, not for humans. Notion and Obsidian work for people. They break under autonomous load.
Originally published on Digital Thoughts — where I write about building AI agents in the real world.
Top comments (0)