The layer system is the foundation of everything in Tempo. If events aren't categorized, there's nothing to analyze. So getting the categorization mechanism right wasn't an aesthetic decision — it was the core product challenge.
We tried three approaches before landing on the one that's in the product today.
Approach 1: Per-Event Category Assignment
The first approach: when you create or edit an event, you assign it a category from a dropdown. Simple, explicit, accurate. The problem was immediately obvious in testing — it required too much manual work, and people simply wouldn't do it. Most calendar events are created quickly or imported from external sources. Adding a required categorization step to every event creation killed the flow entirely.
Approach 2: AI Auto-Categorization
The second approach: let AI infer categories from event titles and descriptions. We built this and tested it extensively. Two problems emerged. First, the accuracy was surprisingly low — event titles are often ambiguous or meaningless ('Sync,' 'Call,' '1:1'), and without additional context, the AI guessed wrong frequently. Second, and more importantly, users didn't trust it. When an event was miscategorized and they didn't catch it, the analytics became silently wrong. That erosion of trust was worse than having no analytics at all.
A categorization system you don't trust is worse than no system. You can't act on data you're not sure is right.
Approach 3: Layers as a Lens
The third approach was the one that worked. Instead of categorizing events one at a time or delegating to AI, we designed layers as a persistent lens that you apply in batch. You define your categories once (Client Work, Business Dev, Admin, Personal — whatever maps to your actual life). You assign events in batch, using the batch-assign tool that groups similar events together. The assignments persist — 'all events with this title go in this layer.'
Why This Works
The key insight was that calendar events cluster. Most people have a finite set of recurring event types — their standing meetings, their work categories, their regular activities. Assign the category once to the event type, and it propagates to all past and future instances. The initial setup takes fifteen to thirty minutes. After that, maintenance is near-zero.
The Principle That Guided It
A layer system you don't maintain is useless. The entire design of the layer mechanism was optimized for one outcome: make the ongoing maintenance cost as close to zero as possible without sacrificing accuracy. Batch assignment, persistent rules, and a UI that shows you unassigned events without making you hunt for them — all of it is in service of that constraint.