A command center for a day that starts after everyone else’s
Where a to-do list stops being a list and becomes an order. A personal project, designed and built with Claude. It’s open source, so you can copy it and make it your own.
Type
Personal project
Platform:
Web, runs as a Claude artifact
Status:
Open source (MIT)
Built with
Claude, HTML, CSS, JavaScript
Preview
Key decision
A strict 1-to-N order, not priority tags
Code

01
Two lists, same work
Here is the to-do list I started with:
❌ Finalize onboarding copy review High
❌ Bank transfer screens: fixes High
❌ Send banner variations to Nina High
And here is the same work, on the same day:
✅ 1 Finalize onboarding copy review
✅ 2 Bank transfer screens: fixes
✅ 3 Send banner variations to Nina
The first list describes the work. The second tells me where to start. Nothing about the tasks changed. What changed is that the order was decided once, instead of every time I looked at the list.
02
The first hour went on finding the start
I work from New York with teams in the Gulf and Asia. By the time my day starts, most of theirs is over, and what they need from me is spread across Slack threads, Jira tickets, meeting recordings, calendar invites, and the odd WhatsApp message. I kept losing the first hour working out what to do first.
So I built the page I wanted to open every morning. The first version had to answer three questions:
1 What’s next?
2 What’s waiting on me?
3 Where are my open hours across time zones?

Today: the morning brief, the next meeting on a live countdown, and what needs me now.
03
Tags describe. Numbers decide.
Tagged: priority is a label.
Numbered: priority is an order.
Tags sort tasks into piles, and I still had to pick from the pile. So every task gets a number, from 1 up, and I work the list top down. Type a new number, drag, or use the arrows, and the rest of the list shifts. A Now panel keeps me on number one.

The Now panel: one task in front of me, and the next few waiting behind it.
The tradeoff is effort. Ranking asks more of me than tagging, because I have to decide whether something is fourth or fifth. That effort is the point: the decision gets made once, when the task goes in, instead of every time I look at the list.

To-do: one ranked list, with the Now panel holding the first task.
04
Five sources, one queue
Requests reach me through Slack, Jira, meeting notes, calendar invites, and chat apps. Now everything lands in a single queue, the Clearinghouse, where I approve each request as a ranked task or ignore it. For a WhatsApp, Telegram, or email message, I paste it in and Claude picks out the action items.
Nothing becomes a task without me, and nothing leaves without me either. The page never posts to Slack, comments on Jira, or emails anyone.
Slack thread ─┐
Jira ticket ─┤
Meeting notes ─┼─→ Clearinghouse ─→ ✅ Approve → ranked task
Calendar invite ─┤ ─→ ❌ Ignore
Pasted message ─┘
Requests coming from five places need one place to land.

Every request in one queue: approve it as a task, or ignore it.

My cities, live clocks, and the overlap window with each office.
05
Four rules that aren’t optional
1. One order, no ties
Every task has a number, from 1 up. There is no high, medium, or low to hide behind.
2. Nothing becomes a task without me
Requests wait in the queue until I approve them or ignore them.
3. Nothing leaves without me
The page never posts to Slack, comments on Jira, or emails anyone. The one thing it writes is a focus block on my calendar, and only after I confirm it.
4. Loading costs no AI tokens
The connectors are called directly. Claude only runs when I press a draft button, and every draft is grounded in the records the page loaded.
06
The weekly update writes itself
I used to write my weekly update from memory. Now it builds itself from what I actually finished, ready to paste into Slack.
It pulls completed tasks, resolved Jira tickets, work in progress, approvals I’m waiting on, and meeting time into one message. Compiling it uses no Claude tokens. Polishing it does.

Built from finished work, then copied into Slack in one click.
07
It’s open source. Copy it.
I built it with Claude and approached it like any product: work out the real problem, test with real use, iterate. Most of the changes came from showing it to colleagues and listening to how they’d use it.
It is shaped around my tools and my hours, and yours will be different. So the whole thing is open source under the MIT license: one HTML file, with no build step, no server, and no account. Fork it, change anything, and run it with your own tools.
To run it with your own data:
1 Connect your tools in Claude (calendar, Jira, Slack…)
2 Download index.html and artifact.json from the repo
3 Attach both in Claude and ask it to publish the artifact
4 Pick your role, tools, hours, and cities
To change how it works, search index.html for these five sections:
CFG defaults and connector names
Fetch the queries sent to each tool
buildInbox what counts as a request, and how urgent
ROLES role presets
BLUEPRINT SKIN colours, type, and grid
All names, numbers, and dates in these screenshots are demo data.