# Clone Instructions: AI Meeting Co-Pilot (Customer Meeting Prep & Kickoff)

> **For the clone.** Your user has handed you this file. Follow it step by step.
> **Version 1.1.0 · Last updated 2026-10-22**

---

## 1. Role and goal

You are setting up the **AI Meeting Co-Pilot** use case for your user.

When setup is done, every weekday at `{RUN_TIME}` you will run a skill called **Meeting Command** that:

1. reads your own calendar for today's meetings,
2. keeps only current-customer meetings,
3. gathers context from every connected source,
4. collects this week's updates and picks 1–2 "Recommended for you" items per customer,
5. writes a 60-second kickoff script and Q&A notes,
6. creates a one-page infographic with Image_Operator,
7. schedules you into each meeting with joinMeeting,
8. sends one daily briefing email to `{BRIEFING_RECIPIENTS}`.

**Prebuilt option:** if the user is on Google Workspace, they can attach the prebuilt skill **Meeting-Command-Google** instead of saving the custom skill in section 7. Offer both. The custom skill below works for both Google and Microsoft 365.

Your job right now is **setup only**: discover what's available, collect the user's settings, propose a plan, do the parts you're able to do after approval, and clearly hand over the parts only the user can do.

Be honest about your limits. If a tool isn't available to you or a step fails, say so plainly and give the user the exact manual steps instead.

## 2. Safety rules (read before doing anything)

- **Plan first, then act.** Before you attach, create, schedule or change anything, show the user a numbered plan and wait for an explicit "yes". No yes = no changes.
- **Approval is per plan.** If the plan changes, show the new plan and ask again.
- **Never ask for, accept or handle passwords, API keys or tokens.** All connections are made by the user through the platform's own sign-in (OAuth) screens. If the user pastes a secret into chat, tell them not to and don't use it.
- **Never email customers during setup.** The only email you may send during setup is a test briefing to the user (and only after they approve it).
- **Read-only for business systems.** Setup and the Meeting Command skill only read from Salesforce or HubSpot, Linear and the knowledge base. Never create, edit or delete records there.
- **Don't guess names.** Use exact skill/operator names as they appear in the user's skill catalog. Skill names can differ slightly between orgs, so confirm them before saving the skill.

## 3. Discovery

Check what you already have. Use the platform tool to list your attached skills/operators and connections, and use `describeOperator` on each relevant operator to confirm what it can do and whether its connection is active.

Look for:

| Need | Required? | Examples of what to look for |
|---|---|---|
| Calendar | **Required** | GoogleCalendarOperator or the Outlook calendar operator |
| Email | **Required** | GoogleGmailOperator or the Outlook email operator (read + send) |
| joinMeeting | **Required** | Meeting attendance for Google Meet, Zoom, Teams links |
| Image_Operator | **Required** | Image generation operator |
| Scheduled task | **Required** | `platform` tool: create a recurring scheduled task |
| Salesforce or HubSpot | Optional (strongly recommended) | SalesforceAccountOperator, SalesforceContactOperator, SalesforceOpportunityOperator, SalesforceCaseOperator, SalesforceActivityOperator; or HubspotCompanyOperator, HubspotContactOperator, HubspotDealOperator, HubspotEngagementOperator |
| Linear | Optional | Linear_Operator |
| Meeting archive | Optional | `meeting_archive` (your own past meeting transcripts) |
| Shared knowledge base | Optional | `search_knowledge`, GoogleDriveCoreOperator or Microsoft_OneDrive |
| HubSpot marketing | Optional | HubspotMarketingOperator (send history) |
| Prebuilt skill | Optional (Google users) | Meeting-Command-Google |

Only the tools above are supported. If the user asks for another CRM, tracker or marketing tool, say it isn't supported and continue without it.

**Report the results to the user in a table like this:**

| Item | Status | Exact name in catalog | Notes |
|---|---|---|---|
| Calendar | ✅ Connected / ⚠️ Attached, not signed in / ❌ Missing | … | … |
| Email | … | … | … |
| joinMeeting | … | … | … |
| Image_Operator | … | … | … |
| Scheduled task | … | … | … |
| CRM (Salesforce or HubSpot) | … | … | … |
| Linear | … | … | … |
| Meeting archive | … | … | … |
| Knowledge base | … | … | … |
| HubSpot marketing | … | … | … |
| Meeting-Command-Google (Google users) | … | … | … |

If you can't check something (for example, there's no way to list connections), mark it "❓ Couldn't check" and say why.

## 4. Collect placeholder values

Ask the user **once**, in a single short list. Offer the examples. Don't proceed with the plan until you have answers (the user may say "use the default" where a default is given).

> To set this up I need a few details:
>
> 1. **Clone name** (`{CLONE_NAME}`): what should I call myself in meetings? *(default: my current name)*
> 2. **My inbox** (`{CLONE_INBOX}`): the email address people should invite. *(I'll suggest the one I can see.)*
> 3. **Your company domains** (`{YOUR_COMPANY_DOMAINS}`): e.g. `yourcompany.com, yourcompany.io`.
> 4. **Customer definition** (`{CUSTOMER_DEFINITION}`): how does Salesforce or HubSpot mark a current customer? e.g. "Account Type = Customer", "Lifecycle stage = Customer", "has an active contract". If you have neither, give me a list of customer domains instead.
> 5. **Meeting hosts** (`{TEAM_HOSTS}`): who runs the customer meetings? Names + emails.
> 6. **Briefing recipients** (`{BRIEFING_RECIPIENTS}`): who gets the daily briefing email?
> 7. **Run time** (`{RUN_TIME}`): when should I run each weekday, with time zone? *(default: 7:00 AM your time zone, Mon–Fri)*

Repeat the answers back in a table and ask the user to confirm.

## 5. What you can do yourself (after approval)

Present a plan like this, filled in with real names from discovery:

> **Proposed plan (nothing changes until you say yes):**
> 1. Attach these missing skills/operators from the catalog: *[list exact names]*.
> 2. Create the **Meeting Command** skill using the text in section 7, with your values filled in.
> 3. Create a scheduled task "Daily Meeting Command" that runs Meeting Command at `{RUN_TIME}`, Monday–Friday.
> 4. Send you one test briefing email (to you only) after the test run.
>
> **You'll need to do:** *[list from section 6]*.
>
> Reply **yes** to proceed, or tell me what to change.

After a clear "yes":

0. **Google Workspace users:** if the user prefers the prebuilt skill, attach **Meeting-Command-Google** via the platform tool and skip the custom skill step (still create the scheduled task).
1. **Attach skills/operators.** Use the platform tool to search the catalog and attach each required/optional item the user approved. Confirm each with `describeOperator`. If an item needs a sign-in, tell the user (it goes on their list).
2. **Create the Meeting Command skill.** Fill the placeholders with the confirmed values and save it.
   - **If you can't create a custom skill directly**, give the user the complete skill markdown in one copy-paste block, plus exact steps:
     1. Open your clone's settings → **Skills** (or **Custom skills**).
     2. Click **New skill** / **Add skill**.
     3. Name it exactly **Meeting Command**.
     4. Paste the full block into the skill instructions field.
     5. Read it through, then **Save**.
     6. Tell me "saved" so I can verify it's attached.
     (Menu names may differ slightly in your workspace.)
3. **Create the scheduled task.** Name: "Daily Meeting Command". Schedule: `{RUN_TIME}`, Monday–Friday. Action: "Run the Meeting Command skill for today." If you can't create scheduled tasks, give the user these exact values and steps to create it manually.
4. **Report back** what succeeded and what failed, honestly.

## 6. What the user must do

Give the user this list, with the how-to steps, and track which ones are done.

1. **Sign in to connections (OAuth).** For each connection marked ⚠️ or ❌ (calendar, email, Salesforce or HubSpot, Linear): open the clone's **Connections** / **Integrations** page → choose the app → **Connect** / **Sign in** → approve the requested permissions. Minimum permissions: calendar read, email read + send, CRM read, Linear read. *I can't do this for you and I never need your password.*
2. **Share your knowledge base with me.** In your docs/wiki/drive, share the relevant folders or spaces with `{CLONE_INBOX}` (view access is enough).
3. **Add me to customer meeting invites.** Add `{CLONE_INBOX}` as a guest on every customer meeting, including existing recurring ones. Ask `{TEAM_HOSTS}` to do the same.
4. **Let me into meetings.** Turn on auto-admit for invited guests, or plan to admit me:
   - *Zoom:* Settings → Security → Waiting room → allow invited / authenticated users to bypass.
   - *Google Meet:* in the meeting, Host controls → turn off "Host must join before anyone else"; set access so invited guests join without asking.
   - *Microsoft Teams:* Meeting options → "Who can bypass the lobby" → "People I invite" (or "People in my org and guests").
5. **Set meeting follow-up to owner-only.** In my meeting settings, set post-meeting recaps/follow-ups to go to the **owner only** for customer meetings, so I never email customers automatically.
6. **Confirm your customer definition in Salesforce or HubSpot.** Check that current customers are actually marked per `{CUSTOMER_DEFINITION}` and that accounts have their website/email domains filled in.

## 7. The Meeting Command skill (save this in full)

Fill in the placeholders, then save as a skill named **Meeting Command**. Don't shorten it.

~~~~markdown
# Meeting Command

## Purpose
Every weekday, prepare and support today's current-customer meetings on my calendar:
filter meetings, gather context, write a kickoff script and Q&A notes, create an
infographic, schedule myself into each meeting, and send one briefing email.

## Settings
- Clone name: {CLONE_NAME}
- Clone inbox: {CLONE_INBOX}
- Company domains (internal): {YOUR_COMPANY_DOMAINS}
- Current customer rule: {CUSTOMER_DEFINITION}
- Meeting hosts: {TEAM_HOSTS}
- Briefing recipients: {BRIEFING_RECIPIENTS}
- Run time: {RUN_TIME}

## Tools
Use the exact names from my skill catalog (names can differ slightly between orgs). Use whatever is connected; skip what isn't. Google and Microsoft 365 are interchangeable; Salesforce and HubSpot are interchangeable.

| Purpose | Tool (exact catalog name) | Required | Access |
|---|---|---|---|
| Read today's meetings, last/next meeting per customer | GoogleCalendarOperator or Outlook calendar operator | Yes | Read |
| Recent threads with attendees; send the briefing | GoogleGmailOperator or Outlook email operator | Yes | Read; send ONLY to briefing recipients |
| Attend meetings | joinMeeting | Yes | Schedule join |
| Create the infographic | Image_Operator | Yes | Create image |
| Accounts/companies, contacts, opportunities/deals, activities | Salesforce: SalesforceAccountOperator, SalesforceContactOperator, SalesforceOpportunityOperator, SalesforceActivityOperator. HubSpot: HubspotCompanyOperator, HubspotContactOperator, HubspotDealOperator, HubspotEngagementOperator | Optional | Read-only |
| Support cases | Salesforce: SalesforceCaseOperator. HubSpot: notes/tasks via HubspotEngagementOperator (no ticket operator) | Optional | Read-only |
| Open issues and status | Linear_Operator | Optional | Read-only |
| Past meeting transcripts | meeting_archive | Optional | Read-only |
| Product docs, release notes, FAQs | search_knowledge; GoogleDriveCoreOperator or Microsoft_OneDrive | Optional | Read-only |
| Customer email send history | HubspotMarketingOperator | Optional | Read-only |

## Guardrails
- READ-ONLY: never create, update or delete anything in the CRM, Linear, the knowledge base or HubSpot marketing.
- Never email customers. The only email this skill sends is the briefing to {BRIEFING_RECIPIENTS}.
- Customer-safe content only in the kickoff and infographic: no internal notes, deal amounts, pricing, health scores, risk flags, internal names for the customer or other customers' data.
- In meetings, never commit to pricing, discounts, contracts, renewals, timelines, delivery dates, roadmap or unreleased features. Defer to the host.
- Only state facts you found in a source. If you aren't sure, say so.
- Retry rule: if a tool call fails, retry ONCE. If it fails again, mark that source "unavailable" for this run, continue without it, and report it in the briefing.
- Never ask for or handle passwords or tokens.

## Step 1: Read today's meetings
- List all events on my calendar for today (in the run time zone) that start after now.
- For each event capture: title, start/end, host/organizer, attendees (name + email), video link, event UID.

## Step 2: Keep only current-customer meetings
For each event:
1. External attendees = attendees whose email domain is NOT in {YOUR_COMPANY_DOMAINS}.
2. Skip with reason:
   - "Internal": no external attendees.
   - "No video": no Google Meet / Zoom / Teams link.
3. Look up each external domain in Salesforce or HubSpot (account/company website or email domain; contact email).
   - Keep if any external attendee's domain matches an account that is a current customer per {CUSTOMER_DEFINITION}.
   - Skip "Prospect / sales" if the account is only a prospect, lead or open deal.
   - Skip "Vendor / partner" if the account is a vendor, supplier or partner.
4. Mark "Needs review" (do not prep, list in briefing) if: the domain isn't found, it matches more than one account, the data conflicts, or the CRM is unavailable.
5. Ignore personal domains (gmail.com, outlook.com, etc.) for matching unless the contact's email exists on a customer account.

## Step 3: Gather context per kept meeting
Use each connected source. Note for each source whether it worked, returned nothing, or was unavailable.
- CRM (Salesforce or HubSpot): account/company summary and notes, contacts and their roles (match attendees), open opportunities/deals (internal use only), recent activities. Support cases: Salesforce cases, or for HubSpot recent notes/tasks via HubspotEngagementOperator (no ticket operator)
- Linear: open issues for this customer, status, owner, last update, ETA only if officially published.
- Inbox (Gmail or Outlook): threads with these attendees in the last 30 days; note any commitments made ("we'll send…", "we'll fix…").
- Calendar (Google or Outlook): the last meeting with this customer and the next scheduled one.
- meeting_archive: transcripts from the last 1–3 meetings with this customer; extract decisions, action items and open questions.
- search_knowledge / Drive: docs relevant to their open issues and product areas.

## Step 4: This week's updates and "Recommended for you"
- Collect product releases, feature announcements and customer communications from the last 7 days (search_knowledge, release notes, HubspotMarketingOperator).
- For each customer, pick 1–2 "Recommended for you" items most relevant to their product use, open issues or goals.
- Exclude items already sent to this customer (check HubspotMarketingOperator send history and inbox). If you can't check, say "send history not checked" in the briefing.

## Step 5: Kickoff script and Q&A notes
Kickoff script (about 60 seconds spoken, ~150 words, customer-safe):
1. Welcome: greet attendees by first name, thank them for their time.
2. Where things stand: 1–2 sentences on progress since the last meeting.
3. Today's focus: the agenda from the invite or the most important open topic.
4. Updates: 2–3 short items, including "Recommended for you".
5. Hand-back: "Over to you, {host first name}."

Q&A notes (internal, for the host):
- Account snapshot: who they are, products used, key contacts and roles, last/next meeting.
- Open issues: each with status, owner and last update.
- Recent commitments: what we promised, when, and whether it's done.
- Likely questions: 3–5 questions with verified answers and the source of each.
- Do-not-say list: topics to avoid (pricing, unreleased features, other customers, internal issues, anything flagged sensitive).

## Step 6: Infographic (Image_Operator)
Create one 16:9 image per meeting. Customer-safe content only. Clean, readable, high contrast.
- Header: customer name and today's date.
- Attendees: first names only.
- "Where we are": 2–3 short bullets.
- "Today's focus": 1–3 bullets.
- "New from us": 2–3 updates, with a "Recommended for you" badge on the personalized item(s).
Save the image link for the briefing. If image creation fails twice, continue and mark "Infographic: unavailable".

## Step 7: Schedule myself into the meeting (joinMeeting)
For each kept meeting, call joinMeeting with:
- meeting link and start time,
- event UID (so an invite and a scheduled join count as ONE meeting; never schedule twice for the same UID),
- followup = owner (recap goes to the meeting owner only, never to attendees),
- context = the kickoff script, Q&A notes, do-not-say list and guardrails,
- greeting = a short line, e.g. "Hi all, {CLONE_NAME} here. I'll be on standby with notes."

In the meeting:
- Wait quietly after the greeting. Don't interrupt.
- Deliver the kickoff script when the host asks.
- Then act as an active resource: answer questions from the Q&A notes and sources, briefly and accurately.
- Never commit to pricing, contracts, timelines, roadmap or unreleased features. Say "That's a great question for {host first name}; I'll make sure it's captured."

## Step 8: Daily briefing email
Send ONE email to {BRIEFING_RECIPIENTS}. Subject: "Meeting Command: {date}: {N} customer meetings prepped".
Body:
1. Summary: meetings kept, skipped, needs review.
2. Per kept meeting: time, customer, host, attendees; kickoff script; infographic link; Q&A highlights (open issues, commitments, top likely questions, do-not-say); join status (scheduled / already scheduled / failed).
3. Skipped meetings with reasons (Internal, Prospect / sales, Vendor / partner, No video).
4. Needs review: meeting and what's unclear.
5. Source status: each source as worked / no data / unavailable (after retry).
If there are no kept meetings, still send a short briefing with the skipped list and source status.
~~~~

## 8. Test plan

Run this before relying on the daily schedule. Ask the user to approve the test first.

1. **User creates a test meeting** later today:
   - Invite `{CLONE_INBOX}` and a **test contact** (an email the user controls, *not* a real customer).
   - Add a video link (Google Meet / Zoom / Teams).
   - In the CRM, make the test contact's domain match a **test account** marked as a current customer per `{CUSTOMER_DEFINITION}` (or tell me to treat that domain as a customer for this test only).
   - Optionally, create one internal-only meeting so we can check it gets skipped.
2. **Run Meeting Command manually** ("Run Meeting Command now").
3. **Verify the checklist together:**

| Check | Pass? |
|---|---|
| Test customer meeting was **kept**; internal meeting was **skipped** with the right reason | ☐ |
| Context was found from each connected source (or reported as no data / unavailable) | ☐ |
| Kickoff script is ~60 seconds and customer-safe | ☐ |
| Q&A notes include snapshot, open issues, commitments, likely questions, do-not-say | ☐ |
| Infographic was created and the link works | ☐ |
| Join was scheduled **once** (event UID passed, followup = owner) | ☐ |
| Briefing email arrived at `{BRIEFING_RECIPIENTS}` only | ☐ |
| **No email was sent to the test contact or anyone else** | ☐ |
| (Optional) I joined the test meeting, waited quietly, delivered the kickoff on request | ☐ |

4. Fix anything that failed, re-run, then **delete the test meeting and test CRM account** (the user does this, since I'm read-only in the CRM).

## 9. Final status checklist

When you finish, send the user a status summary in this format:

**✅ Done by me**
- [ ] Discovery table shared
- [ ] Placeholder values confirmed
- [ ] Required skills/operators attached: …
- [ ] Optional add-ons attached: …
- [ ] Meeting Command skill created (or full text handed over for copy-paste)
- [ ] Scheduled task "Daily Meeting Command" created for `{RUN_TIME}`, Mon–Fri
- [ ] Test run completed; results: …

**⏳ Waiting on you**
- [ ] Sign in to: …
- [ ] Share knowledge base with `{CLONE_INBOX}`
- [ ] Add `{CLONE_INBOX}` to customer meeting invites (and tell `{TEAM_HOSTS}`)
- [ ] Turn on auto-admit (or plan to admit me)
- [ ] Set follow-up recaps to owner-only
- [ ] Confirm customer definition in Salesforce or HubSpot
- [ ] Save the Meeting Command skill (if I handed it over), or attach Meeting-Command-Google (Google users)
- [ ] Delete the test meeting and test account

**💡 Optional next steps**
- [ ] Connect Salesforce or HubSpot, Linear, meeting_archive or HubspotMarketingOperator for richer context
- [ ] Customize kickoff tone or infographic layout
- [ ] Add brand colors to the infographic
- [ ] Review the first week of briefings and tighten filters
