AI Officer Institute

The Coaching Agent

An hour before a live group coaching session, we pieced its state together by hand: who had signed up, which topics were real, whether the reminders had gone out. This plan turns every one of those manual steps into an agent that does them for every session.

PlanSession · September 24, 2026Manual steps → Schedule → AgentRules decide, Claude writesPosts once, never late
A worked example

This is a demonstration, not a build

We are not building this agent yet. It is published to show how to scope one: start from what you did by hand, decide what the rules own and what the model owns, and write the guardrails before the code.

Where it started
Hosts

Six things we did by hand, an hour before the session

  • Looked up the session, who had signed up, and the topics submitted.
  • Found that both topics were test posts from our own team, and removed them.
  • Posted the invite (time, hosts, Zoom link, certification reminder) to the team chats.
  • Noticed the session had no host set, and set it.
  • Found that the day-before reminder email had never gone out.
  • Spotted a late signup that the hosts didn’t know about.
💡
The lesson: the best agent spec is a list of what you just did by hand. Each line becomes a job.
1 The recommendation

A scheduled job inside the backend we already run

Fixed rules decide when to post and what to post. Claude writes only the host brief, and a plain template takes over if it fails. The agent can write only to its own log, and it never deletes anything.

Where
It runs

A Vercel cron job every 10 minutes, next to the reminder-email job that already exists. No laptop, no new service.

→ On the serverSame place as the app
Who
It posts as

The lead coach, through a Lark login approved once. The team hears from a person, not a bot.

→ In the coach’s voiceStops if the login expires
What
It can change

Only its own log. Deleting test topics, setting hosts and marking attendance stay with people.

→ Flags, never deletesPeople make the changes
2 The schedule

The same seven moments around every session

Each one goes out once. If the moment has passed, it is skipped and logged, never sent late.

T − 48h
Team chats

Ask for topics, if there are none

A short post with a link to submit a topic. Nothing is sent if topics are already in.

“Thursday’s coaching has no topics yet. What are you stuck on with AI at work? Add a topic and we’ll build the session around it.”
T − 24h
Team chats

The invite

Time in local time, the hosts, the Zoom link, how many have signed up, and the certification reminder: four coaching sessions are required.

08:30 on the day
Team chats

A second ask for topics, if there are still none

T − 2h
Hosts

The host brief, written by Claude

Who’s coming and how far along their certification they are, the topics grouped by theme with a suggested order, likely test topics marked, and a suggested opener if there are no topics.

📊
Data used:the session, its signups, the submitted topics, each learner’s certification progress.
T − 60m
Team chats

“Starting in an hour,” with the Zoom link

T − 15m
Hosts

Final check

The Zoom link, and anyone who signed up after the brief went out.

T + 2h
Lead coach

Attendance check

If no one has been marked as attended, the hosts get a reminder. Attendance is what counts toward certification.

3 Each run

Four questions before anything is sent

Every 10 minutes the job loads the sessions starting in the next 48 hours, alerts the lead coach if one has no host or Zoom link, then asks these questions of each scheduled message.

Due?
Not yet

The moment hasn’t arrived.

→ WaitA later run picks it up
Sent?
Already

The action log already has it.

→ Do nothingNo double posts
Late?
Moment passed

The next moment has already started.

→ Skip and logNever out of order
Applies?
Not this time

For example, a topic ask when topics are already in.

→ Skip and logRules, not judgment
Send
All clear

Fill the template, or have Claude write the host brief.

→ Post, then logWith the Lark message ID
A Dry run
Test

Everything goes to the lead coach’s DMs

How it runs for its first two sessions, so a bad message is caught before the team sees it.

B Live
Agent

Posts as the lead coach

To the team chats or the hosts’ DMs, depending on the moment.

If a post fails

Alert the lead coach, try again next run

If the Lark login has expired or a chat rejects the post, the agent stops and says so once a day. It never falls back to posting as someone else.

4 Guardrails

What it will and won’t do

  • Posts once, in order. The action log makes every message a one-off.
  • Fixed wording in the team chats. Claude writes only the host brief, which goes to the hosts.
  • No names in the team chats. Posts give a signup count; names stay in the host brief.
  • Never deletes. Test topics are flagged for a person to remove.
  • No personal logins.It uses the backend’s own database access, not anyone’s laptop.
  • No posting from staging. The test site runs on a copy of real data, so it never gets the real chat IDs.
If we built it

Six phases, each with its own definition of done

  • 0. Fix the missing day-before email, the gap we found by hand. Done when the next session’s signups get it.
  • 1. Foundation, in dry run. Done when the lead coach gets the right DMs at the right times, each exactly once.
  • 2. Team chat posts.Done when a week’s session is announced with no posts by hand.
  • 3. Host brief. Done when the hosts run a session from the brief alone.
  • 4. Attendance and email checks. Done when a session with no attendance marked reminds the hosts within 2 hours.
  • 5. Certification progress.Done when the lead coach gets a correct “who’s behind” list every Monday.
Team chats Hosts Lead coach Agent (automated)

The Coaching Agent, v1 · a demonstration plan from the AIOLabz coaching session on September 24, 2026