Gate 1 mockups · Taskmaster · September 17, 2026

A task list you can talk to.

On the September 16 dev call Seth asked for a "Task List": the mini version of Project Management that ships in the $500 tier, on the same schema, with a private list, items you share by tagging a name, and group lists. Jon reframed it as an AI assistant that runs the list for you, Seth said that was the better idea and named it Taskmaster. These are three genuinely different ways to build that, on its own page, with chat and voice, each on the live chrome and each seeded with the same morning. After MJ's review the direction is one integrated set, the Band-Aid off: the home you can hear and talk to, and Taskmaster in To Do's place as the one list, with the conversation beside it. Open the home first, or read on.

Direction after MJ's review, September 17

MJ leaned to option 1 with parts of option 3, then asked for the Band-Aid off: one integrated feature set, full width, with the list on the left and the conversation on the right. The sidebar item after Dashboard is now Taskmaster. Bella speaks it.

The earlier step, the pick, was conversation-first; MJ's review moved the list to the left and the conversation to the right, and dropped the bottom dock that hid the rows. The three options further down are the round that led here. Navigation between the two pages is real: the sidebar, the pinned strip, the Team room, and the logo.

Does it replace To Do's?Yes. The sidebar item after Dashboard becomes Taskmaster and this is its page. One list per person: what you add, what people share with you, your group lists, and everything the platform hands you (project tasks, comment to-dos, approvals, bookings, meeting action items). That last set is today's To Do's feed, kept whole as the Everything tab with its Today, This week, This month windows, so nothing users rely on disappears. One Home item, no new one; the basic tier gets the same page with fewer sources.
Does it tie into Rippler?Yes, and the code already leans that way: Ask Rippler is the agent that proposes create_task and update_task and waits for your confirm. Taskmaster is that same agent session with task tools added (share, lists, nudges), its own page, and Bella's voice. One brain, one confirm loop, one audit trail. The top-bar pill stays the way in from any page: on the pick, click Rippler and send "add a follow-up for the Meridian quote next Tuesday". It lands on the list marked "Rippler added it from the Estimator page".
Bella's voiceEvery reply, both rundowns, the overnight strip, and the tour are spoken by Bella, the ElevenLabs voice the Academy videos use, rendered once into the prototype so no key is near the browser. In the real build the worker streams the reply text through ElevenLabs the way the Academy pipeline does, metered per character.

New: get up to speed fast, and Taskmaster inside Rippler

Three more concept pages, built on the same engine and the same morning. The push came from a Slack mobile clip: the owner blitzes his unread with "Catch Up", one card at a time, and every thread hides an action item nobody tracked. These translate that mechanic into Taskmaster, and show how it lives inside the Rippler chat pop-out. Talk to each one; the switch at the bottom tags what the backend serves today.

The name, still open

MJ went with Taskmaster for the sidebar and the page. The brainstorm stays open: the Name switcher in the bar at the bottom of any page re-labels the sidebar item, the page header, the conversation, and the Team room in place, so a candidate can be read in context. Bella's clips still say "Taskmaster" in two tour lines.

NameThe angle
TaskmasterSeth's name from the call. A job title, like Digital Receptionist and Estimator.
RipplerNo second name. The assistant you already have in the top bar, now with your list. To Do's stays the page name.
ForemanContractor-native. The one who says what's next and chases the crew. Risk: the customer's real foreman is in the same conversation.
DispatchHands out the work and follows up. Everyone in field service knows the word, and "tell Dispatch" reads well out loud.
RippleDeskWhat's on my desk. The surface is the desk; the assistant keeps it clear. Sits beside RipplePad.
RippleRunnerIt runs your list and your processes. Short and active.
RippleNextThe question people actually ask it: what's next?
PunchThe punch list, the list every contractor already keeps. Risk: in the trade it means the closeout list, not the daily one.

Two things to hold the name to. It has to be said out loud in a truck ("tell Dispatch...", "ask Foreman..."), and it should not fight Rippler in the top bar. A job title sits beside Digital Receptionist and Estimator; a Ripple-family name sits beside RipplePad. The one-name option is Rippler itself, with To Do's as the page and no assistant name at all.

One conversation, the mark, the corner bubble, and how a record opens

Four more calls from MJ's review, each switchable in place so it is judged in context rather than in a list.

One conversation, everywhere.Taskmaster's chat is one thread per user. Start it on the home, continue it on the Taskmaster page, pick it up tomorrow. The mocks keep the thread and the list across pages; the real build keeps them in the agent conversation and the tasks table, the way Ask Rippler already keeps its conversation id. "Reset" in the bar clears the mock's copy.
The corner bubble is Taskmaster.It replaces the generic "Chat" circle in the corner on every page: hover says "Talk to Taskmaster", a red ring pulses while it listens, the badge counts what is late. Team chat keeps its sidebar room and its door in the Team room.
A mark in RipplePad's family.The mark page has five original, custom-drawn statement pieces, each a check meeting the DataRipple ripple, next to the retire-this T. The Wake, the Rip-Check, the Crest, the Pulse, the Roster, plus a lockup and a slogan the way RipplePad has "Scribble to done." Not a T in a circle.

Drawer or centered window, honestly: a drawer keeps the list in view and lets you open five records in a row without losing your place, which is how a to-do list gets used. A centered window is better when the record is the job: a long form, an approval with a signature. Taskmaster's record is short and you skim several, so the drawer wins. Keep the centered window for the approval and booking records that come in from the feed, where the full form matters. The "Detail" switch in the bar flips between the two so you can feel the difference.

The mark is drawn to sit beside RipplePad. RipplePad is "The Rip", a ripped page rippling out, under "Scribble to done." Taskmaster's marks are the same hand: a task done, rippling out. The Wake is the lead, a bold check with a wake of ripples; the Rip-Check is the literal sibling. Pick one on the mark page and every page wears it.

What the call asked for

The short version of the transcript, so the mocks can be checked against the ask rather than against memory.

The askWho, whenWhere it is in the mocks
Call it "Task List", not the PM feature. Same schema as Project Management. No onboarding, no migration.Seth, 15:26 and 16:32Every row in every option is a tasks row. Open any row: the record shows the real column behind each field. A PM task assigned to you sits on your list without being copied.
A per-user private list. Today you only see what is assigned to you.Seth, 16:32"My list" in all three. The one schema change is letting a task exist without a project.
Tag a person and it shows up on both lists.Seth, 17:50"Share it with Luis" by voice or text, or the tag button on a row. The record's "Shared with" line.
Group lists, like a Marketing list, with members.Seth, 18:58Marketing and Shop & trucks tabs. "Start a Safety list with Tyler" makes one.
A mini Trello. "Rip off Trello but use our same data schema."Seth and Matt, 18:58Option 2's Simple list and Board view. Nothing exhaustive.
An AI assistant called Taskmaster, one of the AI employees, an executive assistant that tracks anything you give it and works it through a pipeline.Jon, 20:16. Seth: "much better idea than what I had", 21:59The conversation in all three. Option 3 is Jon's pipeline, literally.
Many views of one data structure: list, table, calendar, Gantt.Jon and Matt, 21:59 to 23:09Option 2's Simple, Board, Calendar, Table switch. Same rows, no backend.
Import an existing task list by CSV.Seth, 23:09Not in the mocks. Gated in the table below; Jon's importer is the backend Seth named.
Chat plus voice, its own page.MJ, this morningThe mic on every composer uses the browser's own speech recognition in Chrome. Bella, the Academy voice, speaks the replies and the walkthrough.

Who this has to work for

Two people, same list. If a design works for both, it works.

The owner

Runs a $3.5 million company and started using QuickBooks this year. Remembers things in the truck, between jobs, and loses half of them by the time he gets back. He will talk to it. He will not learn a board.

The office manager

Lives in the list. Types faster than she talks. Wants to see everything on one screen, hand things to people, and know who has not done what. She will use the views.

1. Get it out of my head.Say it once, any way you'd say it to a person, and it is on the list with a day on it.
2. Don't let me forget.The late thing is first, in red, every morning, until it is done.
3. Who's got it?Hand it to Luis by name. See that he has not opened it. Nudge him without picking up the phone.

What exists today

The honest starting point in v3, from the code, not from memory.

PieceTodayThe gap
To Do's page (Home)One unified feed: PM tasks, comment to-dos, drawing pins, approvals, social, support, bookings, meetings. Today, This Week, This Month.Adding a to-do there requires choosing a Project. There is no list that is just yours.
PM › My TasksYour project tasks by project, a week strip, reschedule and reassign, mark done.Only tasks with a project. One owner per task. Nothing to share with a second person.
Ask Rippler (top bar and hub)Reads the workspace, proposes a write, waits for your confirm, then does it. Already knows create_task and update_task.No share, no lists, no nudges, no daily pass. Text only.
VoiceThe Digital Receptionist talks on the phone, through Twilio.Nothing in the web app listens or speaks.
Groupsproject_groups are Gantt groupings inside a project. Chat rooms have members.No list a set of people share.

What the best tools do

The lists the owner and the office manager already have on their phones, and where each falls short for a five-person shop.

ToolsWhat they do wellWhere they fall short
Trello
the board everyone knows
Cards in columns, drag to move, share a board, a few automations. Nothing to learn.Knows nothing about your business. A card called "Meridian quote" cannot tell you the quote went quiet twelve days ago.
Todoist, Microsoft To Do, Google Tasks, Apple Reminders
personal lists
Type "call Luis tomorrow at 8" and the date parses. Shared lists. Siri and Alexa add items by voice.Your list and the company's projects are two different worlds. Nobody chases the person you shared with.
ClickUp, Asana, monday
work management
Every view of the same data: list, board, calendar, Gantt, table. AI summaries.Too much for a five-person shop, and the reason the full PM feature needs onboarding in the first place.
Motion, Reclaim
AI schedulers
Put your tasks on your calendar automatically and re-plan when things slip.Calendar-first and desk-first. No crew, no customer, no truck.

The gap nobody fills: an assistant that sits inside the contractor's own data. It can say "Luis hasn't opened it" and "Meridian hasn't answered your $31,000 quote" because the list, the projects, the people, and the quotes are the same tables. That is the slice all three options own.

What RippleCore's version does that they don't

It talks and listensType or tap the mic. Chrome's own speech recognition turns the sentence into text; turn on "Read replies out loud" and it answers back.
Same rows as Project ManagementA task assigned to you on the Shrub Botanical roof is on your list because it is the same row, not a copy. Seth's one hard rule.
It chasesIt notices what nobody opened, what has no name on it, and what is late, and it asks whether to text the person.
Shares by name"Share it with Luis" puts it on his list too. A Marketing list has members and shows up under their group lists.
Nothing is face valueEvery row, card, and underlined phrase opens the full record with what happened, who did it, and when. Click anything in the mocks.
Boomer-proof by defaultSimple list first, 17px rows, 44px buttons, red only for what needs you. Board, calendar, and table are a tab away for the people who want them.

The three options

Same morning, same chrome, same engine, three different pages. Open each one and talk to it. The switch at the bottom of every option tags each piece with what the backend serves today.

What all three share

Good, better, best: what is real today

Every piece in the mocks, traced to the table, route, or agent tool behind it. "Live today" means the route exists and the agent or page already calls it.

PieceUsed inVerdictWhat is behind it
The Everything tab with Today, This week, This monthHome, To Do'sLive todayIt is today's To Do's feed, unchanged: the same sources and windows, rendered as rows on the same list.
Talking from the home pageHomeLive todayThe dock is the Ask Rippler agent session on the home route; the propose-and-confirm loop already exists. Only the UI is new.
The home rundown written from your list as well as the platformHomePartialThe home's sentence templates already write the platform half from the attention feed; the list half needs the my-tasks feed folded into the same template module. Half a day.
Project tasks assigned to you, on your list without a copyAllLive todayGET /api/pm/my-tasks returns them; tasks.project_id is the link back.
Add by sentence, move the date, mark done, reopenAllLive todayPOST /api/pm/tasks, PUT /api/pm/tasks/:id, and the move_task write My Tasks already uses. The Ask Rippler agent proposes create_task and update_task and waits for the confirm at /api/pm/agent/ask-ripple/confirm.
The people picker for taggingAllLive todayGET /api/team?fields=picker, the same call the To Do's page uses to reassign.
Board, Calendar, Table views2Live todaySame rows grouped client-side by status and due_at. No backend.
An item with no project: "My list"AllPartialtasks.project_id is NOT NULL. One migration: allow null and add list_id. The alternative, a hidden per-person project row, keeps every PM query working but pollutes Projects.
Share an item so it is on both listsAllPartialOne owner_team_member_id per row today. Needs task_shares(task_id, team_member_id, opened_at) and a JOIN in the my-tasks query. opened_at is what lets it say "Luis hasn't opened it".
Group lists with membersAllPartialNeeds task_lists and task_list_members. chat_room_members is the nearest pattern in the schema; project_groups is the wrong thing, it groups Gantt rows inside one project.
The morning rundown1, 3PartialWave 1 writes it from templates over the my-tasks feed, the way the home cockpit writes its summary line. A Rippler-written version is a later differentiator: read-only, capped cost, falls back to the templates.
"Text Luis" nudgesAllPartialPOST /dashboard/sms/send exists with the opt-out check. The agent needs a send tool and something that watches for the reply.
Listening: the micAllPartialNothing in the web app today. Chrome's Web Speech API turns speech into text with no backend and works on https, which is what the mocks use. Safari and Firefox are partial, so typing always stays. The receptionist's Twilio voice is phone-side and does not apply. Jon's Claude or Grok voice through the platform's MCP is the Wave 2 path.
Speaking: Bella's voiceAllPartialThe prototype plays clips rendered once with the Academy's Bella voice (ElevenLabs hpp4J3VqNfWAUOO0d1Us, eleven_multilingual_v2), so the key never reaches the browser. The real build adds one worker route that streams the reply text through ElevenLabs, with the key in Credential Manager locally and a Worker secret in production, metered per character. Dynamic replies in the mock fall back to a short generic clip.
Processes: "every Friday remind Tyler to..."3GatedNeeds a task_processes table and a runner (a cron trigger or Workflows). Nothing like it exists.
Import an existing list by CSVAllGated/api/pm/imports is schedule-only today. Jon's estimator importer is the backend Seth named for it; a task-list import type is its own issue.
Taskmaster's own daily pass (flagging late items, adding the quiet quote)AllGatedNeeds a scheduled job with the agent's read tools and a place to write its notes. The stale-quote example needs the Estimator's quote status, which the attention feed already exposes.

What this means for Wave 1

Recommendation: build the integrated set. To Do's becomes the page, with talk mode (the pick) and list mode (option 2); the home gets the voiced rundown and the dock; no new sidebar item.

The conversation is the page both people can use: the owner talks to it from the truck, the office manager flips to the rows, and the rail keeps the lists one click away. The three pipeline pieces are what make it an employee rather than a text box: it reports what it did overnight, it shows who is holding what up and what it will do about it, and it turns repeat asks into a process. Today's To Do's feed is kept whole as the Everything tab, so nothing users rely on disappears, and the home's rundown becomes the same sentence in both places.

Honest cost. Frontend: the To Do's route rebuilt as this page (two modes, the feed as a tab), the home's rundown and dock, the record drawer, the tag picker, the mic behind a feature flag, and a play button for Bella. About six dev days, desktop QA included. Backend: one migration (nullable project_id plus list_id, task_shares, task_lists and members), the my-tasks query, two agent tools (share_task, create_list), the list half of the rundown template, and one route that streams reply text through ElevenLabs. About four dev days.

What ships dark. Text nudges, "hasn't opened it", processes, CSV import, and the daily pass. Each renders as silence or a greyed line, never as a fake result.

Not a Rippler replacement. Taskmaster is the same agent with more tools, a page of its own, and Bella's voice. One assistant, one confirm loop, one audit trail; the top-bar pill is the way in from every other page.

Ideas we tried and dropped

Sample data, illustrative only, seeded with real gaps (a call 8 days late, a shared item nobody opened, a group item with no owner). Run locally with node mockups/taskmaster/_serve.mjs then open http://127.0.0.1:4340/. Add ?sim=1 to any option to force the simulated microphone, or ?clean=1 to hide the review bar. Bella's clips come from node mockups/taskmaster/_voice.mjs, which reads the ElevenLabs key from Credential Manager and writes voice.js. Built on the live v3 shell, Ubuntu type, and the June 2026 DataRipple tokens.