Demo
Sync every source into one store, safely
A small animation studio keeps its work in four tools. This console pulls them into one store: each run takes a lock, reads page by page and saves a checkpoint after every page, so a run that stops or crashes can be picked up without losing or doubling anything. Project status and time by category are read from the store at the end.
This is a simulation. The studio, its projects, its people, the four sources and every record are invented, and the sources are made-up stand-ins for real tools. The time limit, the crash and the slow down reply are scripted, and the console has its own clock, not yours. No AI model runs here. Nothing you do leaves your browser or is kept, and reloading the page starts again.
Console
Day 6, 06:00:00 on the console clock
Nothing has run yet. Choose a source and run it.
Things to try
- Run the task board. It stops before the 60 second limit with a checkpoint saved; run it again and it carries on from there.
- Choose the help desk and start two runs at once: one takes the lock and the other is refused. When the help desk says slow down, the run waits and asks again.
- Choose the ledger and run and crash midway. Run it again: the lock is still held, so it is refused. Wait 5 minutes and run it: the stale lock is taken over and the record written before the crash drops as a duplicate.
- The help desk sends a username nobody has linked yet. Merge it into the right person in the people panel.
- Run the calendar, then read the project status and time by category charts.
Sources
Task board
Projects, tasks and time entries, in three phases.
- Status
- Not synced yet.
- Checkpoint
- Start: projects, page 1 of 1
- Lock
- Free
- Records
- 0 read, 0 stored, 0 dropped as duplicates
Help desk
Time spent on client replies. It asks callers to slow down now and then.
- Status
- Not synced yet.
- Checkpoint
- Start: replies, page 1 of 2
- Lock
- Free
- Records
- 0 read, 0 stored, 0 dropped as duplicates
Ledger
The hours agreed for each project.
- Status
- Not synced yet.
- Checkpoint
- Start: budgets, page 1 of 1
- Lock
- Free
- Records
- 0 read, 0 stored, 0 dropped as duplicates
Calendar
Project meetings, one record for each person at each meeting.
- Status
- Not synced yet.
- Checkpoint
- Start: meetings, page 1 of 2
- Lock
- Free
- Records
- 0 read, 0 stored, 0 dropped as duplicates
Store and people
Every record is kept once, by its source plus its own id, so a record read twice is dropped. Each time record is indexed into the hours it covers as it is stored.
- Read
- 0
- Stored
- 0
- Duplicates dropped
- 0
- Time records
- 0
- Hour blocks
- 0
- People with time
- 0
Person records
The identity table maps each username in each tool to one person. It never guesses from a similar name.
- Wren: task board wren, help desk wren, calendar wren
- Robin: task board robin, calendar robin
- Ivy: task board ivy, calendar ivy
- Rowan: task board rowan, calendar rowan
Dashboards
No source has finished yet, so the charts show only what is stored so far.
Project status
Hours logged against each project’s budget, on a scale of 0 to 48 hours. The upright line, which stands out above and below the bar, is the budget.
Time by category
Hours across all three projects, on a scale of 0 to 30 hours.
The charts add up hour blocks, not raw records: 0 blocks from 0 time records so far.
Run log
Every lock, page, stop, crash and merge is written here with the console clock time.
What the demo shows
- Runs that resume. Each source is read in pages, in phases, and a checkpoint is saved after every page. A run that would pass the 60 second limit stops cleanly, and the next run starts at the checkpoint instead of the beginning.
- One run per source at a time. A run takes its source’s lock first. When two ask at the same moment, one gets it and the other is refused.
- Crashes that do not block the next run. A crashed run leaves its lock behind. Once its holder has shown no sign of life for 5 minutes, the lock is stale and the next run takes it over.
- Reruns that never double count. Every record is keyed by its source plus its own id, so pages read again after a crash or a recheck add nothing twice.
- Backing off when asked. When a source says slow down, the run waits the time it asks for, inside its time limit, and asks again.
- One person, many usernames. An identity table maps each tool’s username to a person. A username it does not know becomes a new person record until someone merges it; nothing is matched by a similar name.
- Charts from small indexes. Time records are indexed into hour blocks as they arrive, and the project status and time by category charts add up the blocks. No chart ranks or scores any person.
The studio and its projects, Lighthouse, Orchard and Comet, are not real, and neither are Wren, Robin, Ivy and Rowan.