Designer & builder
MeTime
Personal time-visibility app
Calendar in, honest week out. AI categorization, a capacity Sankey across five tabs, vibes plus a public booking link, and the same service layer exposed to Claude over MCP.
Project brief
Private alphaProblem
Calendar data is easy to collect and hard to turn into an honest picture of how time is spent.
Outcome
A dogfoodable time-visibility app with five tabs, capacity Sankey, vibes and public booking, plus FastMCP on the same FastAPI process so Claude uses the same service layer as the UI.
Evidence
- Five-tab AppShell (Today · Plan · Reflect · Connect · Explore) plus header Profile (ADR-0015).
- FastMCP mounts /mcp and /u/{id}/mcp on the same FastAPI app; tools call backend/services/* only.
- Categorizer never overwrites Event.user_corrected=True; ground truth is enforced in the agent and the rules path.
Key decisions
- Product first: legibility of the week (Sankey + tabs + vibes/booking) before social or monetization.
- One service layer: REST, MCP, and workers stay thin adapters so surfaces cannot diverge.
- Agent-native: a public Claude skill and per-tenant MCP are first-class, not a bolted-on API.
- Ground truth: hand-corrected categories are never overwritten by automation.
An honest picture of the week
Calendar data is easy to collect and hard to turn into an honest picture of how time is spent.
MeTime is the time-legibility layer for people who already track their life but cannot see the shape of their week.
It pulls calendar events, categorizes them with a small Claude agent (or a deterministic fallback when there is no LLM credit), and renders capacity as a Sankey on Today and Reflect (real category hours plus a synthetic Me Time remainder).
In the product



Five tabs, one week
The browser is a five-tab shell (Today, Plan, Reflect, Connect, Explore) with status vibes, a public /book/{username} page, and scoped friend profiles.
The browser client’s own wayfinding
- Today how are you spending today?
- Plan what does this week look like?
- Reflect what did this week feel like?
- Connect who do you want to see?
- Explore who’s around among friends
One layer, three surfaces
The product journey is calendar to category to Sankey to vibes and booking. One service layer sits behind the REST API, a FastMCP endpoint, and background workers, so a Claude agent answers whether I am free on Thursday through the same code the UI uses.
From an event to a category
Underneath, one service layer keeps the browser, agent tools, and workers from disagreeing.
Private by default
Personal fields are encrypted at rest.
Built with
Portfolio graph
Maps how the work here connects. Open the Portfolio graph →
- Professional
- Personal
- Skill
- Writing