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

Diagram: requests from Slack, Jira, calendar, and meeting notes flow into one queue, then into a numbered list with the first task marked Now

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?

Command Center Today view in dark mode on a desktop monitor

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.

Close-up of the Now panel: task number one, with Done and Swap buttons and the next four tasks below

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.

Command Center To-do view in dark mode: seven tasks numbered 1 to 7 with the Now panel on task one

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.

Command Center Clearinghouse: a single queue of requests with Approve and Ignore actions

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

Command Center Global view: a globe, city clocks, and overlap windows

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.

Command Center weekly update generated from finished work

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.

© All rights reserved 2026.

© All rights reserved 2026.

© All rights reserved 2026.