I'm the product manager for a research platform that study teams use to collect survey and sensor data from participants' phones. The role is wider than the title. Working with our developer, I debug platform code issues and manage the building of new features. I also run the group's operations. That means email from study teams, a pipeline of prospective partners, pricing, contracts and renewals, and keeping up with the research assistants and the engineer.
Those jobs have nothing in common. Most of my time went into switching between them and working out what mattered, with busy work around each one. I built a team of AI agents to take that over. My hours now go to the work that needs a person. That means decisions, judgment and the human touch.
Here is what runs, what each agent reads, which commands drive it and when it runs.

How a weekday starts
At 8AM Eastern on weekdays a cloud routine starts without me. It first reads a kill switch, and a switch it cannot read counts as paused. It checks that it has not already run today. Then it runs the agents for the day in parallel. When they finish, it checks what they returned, saves the results and publishes one report page. I get a Slack message and an app notification only when something needs me today or a source is down. A quiet morning is silent on purpose.
Not every agent runs every day.
- Hermes and Scribe run every weekday, and Scribe's Zoom digest also runs nightly.
- Saga, Heimdall and Fortuna run on Mondays.
- Taskrunner works the task board after the morning's agents finish.
- Hephaestus and Study Data run when I call them by hand.
Odin, the orchestrator
Odin is the project itself and the name for the layer on top of the agents. It runs them and validates what they return. The one question it answers is what actually needs me today.
- Reads the newest validated result from each scheduled agent, plus my task list and calendar.
- Commands are
/odin-morningfor the routine,/briefingfor a prioritized view of the day,/task-addfor new tasks and/logoffto close a session. - Owns task deduplication, so the same task is never added twice.
- If an agent is stale or missing, the briefing lists it under "Not checked".
Hermes, email
- Reads my inbox through the mail client and a library of past replies and FAQ answers.
- Keeps a registry across runs, so a thread I already handled does not come back.
- Produces a numbered triage list grouped by who each thread is for, with a separate table for anything it did not triage.
- Drafts a reply only for three templated kinds of email, and only into the drafts folder. I send it myself.
- Command is
/hermes. - Runs every weekday in the morning routine.
Scribe, meetings and Zoom
- Reads today's calendar.
- Finds the right Notion note for each meeting, whether that is a client's study page, a CRM page or a one-to-one note.
- Adds a short numbered agenda at the end of that note as a dated toggle, in purple so I can tell it from my own lines. It never edits or reorders anything already there.
- Checks Slack, mail and GitHub before listing anything as open. Other agents' results can be a week old.
- Also handles Zoom. A nightly cloud routine runs
/zoom-digest. It reads the Zoom AI summary emails and classifies each one. It files only the ones it is confident about, and it never stops to ask. One-to-one summaries are merged into the person's own note as purple lines, without touching my text. - Commands are
/meeting-prepand/zoom-digest, and/transcript-digestfor a meeting with no Zoom summary. - The agendas run every weekday in the morning routine, and the Zoom digest runs nightly.
Saga, partner pipeline
- Reads the Notion based CRM, searches mail address by address for leads that have gone quiet, and reads my meeting notes.
- Flags any lead untouched for three weeks, after checking mail and meetings first. The record is usually what fell behind.
- Proposes corrections to Last Touch dates and never applies them. I apply them myself.
- Command is
/saga. - Runs on Mondays.
Heimdall, the team
- Reads GitHub, mail, Slack and Notion for each research assistant and for our software engineer, over the last 30 days.
- Reports what each person did and what each is waiting on me for, with absolute dates.
- Proposes nothing and writes nothing outside its own report.
- Command is
/heimdall. - Runs on Mondays. An older standalone Tuesday routine was turned off so Monday's run is the only one.
Fortuna, contracts and pricing
- Downloads the contracts spreadsheet from Google Drive. That is the only source it can read from the cloud.
- Looks for contracts ending inside 60 days with no renewal, active contracts past their end date, launches that slipped, and quotes that never became a contract.
- Prices a study from four parameters when I ask. It can turn that into a finished quote or agreement document.
- Commands are
/fortuna,/quote,/mou,/extension-pricing,/letter-of-supportand/revenue-summary. - The weekly check runs on Mondays and is read-only. Quotes and documents are made by hand.
Hephaestus, platform engineering
- Reads the six code repositories behind the platform on GitHub.
- Has two speeds. A 14-day report on assigned issues, and a six-month deep dive that clusters recurring problems into a knowledge base.
- Searches every repository before anything new is filed. A bug becomes a comment on the issue that already exists.
- Commands are
/hephaestus,/hephaestus full,/bug-triage,/feature-planand/github-updates. - Runs when I call it.
Study Data, the research platform
- Reads the platform's own servers, driven by a registry that maps each study to its server and collection window.
- Reports adherence, retention and completion rates per study, and flags participants by days since their last upload.
- It is the only agent that touches participant data.
- Commands are
/study-report,/study-diagnosticsand/passive-check. - Runs when I call it.
Taskrunner, the task board
- Works from a Notion board with the columns Todo, In Progress, Human Review, Rework, Done and Blocked.
- I add a card in Notion or with
/queue. Taskrunner prepares it and the result waits in Human Review until I move it to Done or send it back to Rework with feedback. - Only five kinds of card run. They are research briefs, bug triage, feature plans, CRM lookups and general lookups. Anything else is blocked.
- Every card ends with a visible status, so none disappears.
- Commands are
/queueand/task-run. - Runs on weekdays after the morning's agents.
Where the memory lives
Every agent ends with a structured result. Code checks it before anything is saved. Each source has to be declared with an honest status. A mailbox that could not be read shows up as not checked.
State sits in three small Notion databases. One holds the shared email registry and the kill switch. One is a ledger of every run. One is a ledger of every draft and what became of it. The laptop and the cloud read the same registry. A thread I skip at my desk stays skipped in the morning run.
Notion is where I read reports when I am away from the laptop. A cloud run's sandbox is thrown away when it ends.
What it cannot do
The routine cannot send email, forward it, accept a calendar invite or delete anything. Those tools are denied at the platform level. The same goes for the GitHub tools a cloud session is handed by default. They would let it comment on a repository without me.
Posting to GitHub and sending email both need an exact approval phrase from me. A near miss does not count. I chose a deliberately awkward phrase because a casual yes is how an unreviewed message escapes.
Card text on the task board is treated as data. Anyone with access to the page can edit it.
The product work
When a study team reports a bug, my first question is whether it already exists. The agents search all six repositories, draft the comment or the issue, and hold it for me. For a feature request they return feasibility, a plan and an effort estimate. I read it and decide.
What broke early
An early agent invented its own run times. The ids it chose matched on only two of 25 items from one run to the next. A date in a file name was in UTC. The lookup used Eastern time. Each of those became a check in code. The shared code now has 685 tests.
What changed
Replying to a study team now updates the partner record in the same motion. Nothing on my list waits for me to notice it first. What I still do is decide. The last thing between a draft and someone's inbox is me typing three words.