Console
CEO Pack

daily-standup

CEO Daily Brief — Business Snapshot + Done/Today/Blocked + System Health. Pulls live LoboDesk ticket, CRM, and automation health data every run. Delivered to Telegram or saved as a journal note.

cron:0 8 * * 1-5
google-calendar-read
vault-sqlite-fts5
telegram-send
lobodesk-bridge
n8n-maintainer
your override

Date to run the standup for (defaults to today)

Artifact will appear here

journal/YYYY-MM-DD-standup.md

How this skill runs


# CEO Daily Brief

## When to run

Monday through Friday, 8am Pacific. The cron fires before you open Slack
or email. Before you start reacting to other people's urgencies, you need
90 seconds of your own operating picture: what actually moved yesterday,
what's on the calendar today, what can't proceed until something unblocks
it, and whether the business systems are healthy.

Run it manually any time you've been heads-down and lost the thread.

## What you'll get

A five-section brief — **Business Snapshot** (live ticket/CRM counts),
**Done / Recent Activity** (calendar + vault + LoboDesk),
**Today** (calendar + high-priority tickets), **Blocked / Needs Attention**
(unassigned tickets, business blockers, production automation issues),
and **System Health** (LoboDesk bridge, automations, Hermes).

Delivered to Telegram if configured, otherwise saved as a journal note.

## Steps

1. **Determine the date.** Read today's date in Pacific timezone and
   determine the previous working day (skip weekends).

2. **Fetch live LoboDesk business context.** Run:
   `python3 scripts/lobodesk_client.py get-context`
   Extract from the response:
   - `crm.clients` — current client count
   - `crm.leads` — current lead count
   - `tickets.open` — open ticket count
   - `tickets.unassigned` — unassigned ticket count
   - `tickets.recent` — recent tickets; sort by priority so
     high-priority items appear first, then unassigned, then medium/normal
   - `activity.recent` — any meaningful recent LoboDesk activity
   If the bridge is unreachable, report "Unable to fetch" in relevant
   sections — do not fabricate numbers.

3. **Fetch production automation health.** Run:
   `python3 scripts/n8n_client.py status` — check n8n is reachable
   `python3 scripts/n8n_client.py list-executions --failed --limit 10`
   Filter to production workflows only:
   - Hermes LoboDesk Bridge
   - Hermes LoboDesk Clients
   - Hermes LoboDesk Context
   - LoboDesk AI Gateway
   Exclude ALL other workflows (especially "My workflow" and any
   unnamed/test/dev workflows). Map workflow IDs to names by running
   `python3 scripts/n8n_client.py list-workflows` if needed.
   If there are recent failed executions in production workflows, include
   them in the "Production automation issues" section. If all production
   workflows are healthy, report "All production workflows running normally."
   If n8n is unreachable, report "Unable to check" — do not fabricate.

4. **Read calendar events for today.** Use Google Calendar read-only via
   the google-workspace skill or available Google Calendar integration.
   Pull: event titles, times, attendees (first name only), descriptions.
   Flag events marked as important or with more than 2 attendees as
   high-priority items for "Today / Calendar priorities."

5. **Read calendar events from the previous working day** to build the
   Done context for "Done / Recent Activity / Calendar."

6. **Search the vault journal** for entries from the previous working day:
   `sqlite3 vault.db "SELECT path, title FROM pages WHERE path LIKE 'journal/%' AND date = '<PREV_DATE>' ORDER BY updated DESC LIMIT 10;"`
   Extract any tasks marked done or projects mentioned.

7. **Search the vault for updated wiki pages in last 24 hours:**
   `sqlite3 vault.db "SELECT path, title FROM pages WHERE updated >= datetime('now', '-24 hours') AND path LIKE 'wiki/%' ORDER BY updated DESC LIMIT 5;"`

8. **Identify business blockers.** Look for any vault journal or wiki
   entries updated in the last 48 hours containing: "blocked", "waiting on",
   "pending", "need from", or "stuck".

9. **Compose the CEO Daily Brief** in the output format below. Keep each
   bullet to 1-2 lines. If there is nothing to report in a section, write
   "Nothing to report" — do not omit the section.

   **Business Snapshot:** Use fresh numbers from step 2. Never reuse
   previously remembered values.

   **Tickets requiring action:** Show high priority first, then unassigned,
   then medium/normal. Show a concise top-priority list — avoid dumping
   every ticket if many exist.

   **System Health:** Use business-facing language. Do NOT expose:
   n8n, Supabase, API endpoints, workflow IDs, credentials, or
   infrastructure implementation details in normal operation. Use labels
   like "LoboDesk", "Automations", "Hermes AI" with status:
   🟢 Healthy or 🟡 Needs attention.

10. **Send to Telegram** if configured. Format as plain text (no markdown).
    Cap at 400 characters per section for mobile readability.

11. **Save the full brief as a journal entry** at
    `journal/YYYY-MM-DD-standup.md`. If an entry already exists for today,
    append to it rather than overwriting.

## Output format

```yaml
---
type: journal
title: "Standup — YYYY-MM-DD"
created: YYYY-MM-DDT08:00:00
updated: YYYY-MM-DDT08:00:00
status: draft
tags: [standup, daily-ops, ceo]
sources: [google-calendar, vault-journal, lobodesk-bridge, n8n-maintainer]
---
```

```markdown
# CEO Daily Brief — Monday, August 24 2026

## Business Snapshot
- Clients: 1
- Leads: 0
- Open tickets: 4
- Unassigned tickets: 4

## Done / Recent Activity
- Calendar: Closed Nexus Media deal — $4,200/mo, MSA signed
- Vault: Published Q2 OKR progress check to wiki
- LoboDesk activity: Nothing to report

## Today
- Calendar priorities: 10am Sales call w/ Nexus Media
  (Mehran — first meeting)
- Tickets requiring action: TKT-3C60FA Chat handoff request
  (high priority, unassigned)
- CRM / client priorities: Nothing to report

## Blocked / Needs Attention
- High-priority/unassigned tickets: TKT-3C60FA Chat handoff request
  (high, unassigned), TKT-56A070 Waitlist lead CRM Test Lead (unassigned)
- Business blockers: Waiting on legal review of SAFE terms
- Production automation issues: All production workflows running normally

## System Health
- LoboDesk: 🟢 Healthy
- Automations: 🟢 Healthy
- Hermes AI: 🟢 Healthy
```

## Business vocabulary

When reporting system health, use only these business-facing labels:

| Business label | What it covers |
|---|---|
| **LoboDesk** | LoboDesk bridge API, Lovable backend, Supabase functions |
| **Automations** | n8n production workflows (Hermes LoboDesk Bridge, Clients, Context, AI Gateway) |
| **Hermes AI** | Hermes agent, Telegram gateway, AI model provider |

Never expose the underlying infrastructure names (n8n, Supabase, etc.)
unless there is a genuine technical incident requiring attention.

## Ticket priority rules

- High priority tickets → show first in "Tickets requiring action"
- Unassigned tickets → show next; these are potential blockers
- Normal/medium priority → show last, and only if the total is small
- If more than 5 tickets are open, show only the top 3-5 most important
  and note the remainder count (e.g. "+2 more")

## Production workflow filter

When checking automation health, ONLY these workflows are production:
- Hermes LoboDesk Bridge
- Hermes LoboDesk Clients
- Hermes LoboDesk Context
- LoboDesk AI Gateway

All other workflows (especially "My workflow" and any unnamed or test
workflows) are excluded from the CEO brief and must never be reported.