Pre-read board materials ahead of every board meeting, and analyse or draft board documents. Learnings from doing this many times: board decks and pre-reads live in Google Drive β find the latest by company name plus "board deck" / "board pack", and verify the document actually belongs to that company before you summarise it (don't grab the most-recently-edited file globally β that's how you end up summarising the wrong company's deck). Turn the pack into decision-ready points: what changed since last meeting, what's materially at risk, and what actually needs a board decision β not a page-by-page recap. Always pair the narrative with the underlying numbers from the data lake so the board reads a claim and its evidence together.
Read, analyse and produce monthly management reports. Learned the hard way, and the most important lesson first: a management report is a GOOGLE DRIVE DOCUMENT / PRESENTATION β the one the Managing Director writes their commentary in β NOT just data-lake numbers. So the real skill is (1) FIND the right report in Google Drive: search by company name + "management report", and verify the document actually belongs to that company and month before reading it β don't grab the most-recently-edited file globally (a classic wrong-doc mistake). (2) READ THE ACTUAL DOCUMENT (open the doc/slides, digest the text and any charts) to capture the MD's narrative β what happened, why, what's at risk, and what actions are planned β because that written analysis is the whole point and appears nowhere in the raw numbers. (3) Use the data lake only to CROSS-CHECK the figures, minding its traps: ARR-type metrics live under source "product" (not "financial"), a company-KPI-period is the SUM of component rows (never dedupe β that reads ARR as ~554K instead of ~56M), and the latest month is PROVISIONAL so trust actuals only through the last closed month. Then report BOTH the MD's narrative and the verified numbers β the story and its evidence together.
Read the user's calendar with the `calendar` CLI (read-only, primary calendar) to prep for what is next and answer availability questions.
How to run it (the `calendar` CLI):
β’ calendar today β the rest of today's events
β’ calendar agenda --days 7 β upcoming events in a window
β’ calendar find "board meeting" --days 30 β search upcoming events by text
β’ calendar freebusy --days 5 β busy blocks, for "when am I free?" questions
Use it to prep meetings and answer scheduling questions, and pair it with `drive` + `email` to pull the relevant docs and threads for each upcoming meeting.
Query the financial data warehouse (the "data lake") for ARR, margins, KPIs and trends. Hard-won learnings baked in: the true grain is (unit, source, KPI, year, period, Gr1, R12, reporting-year, date-key) β always SUM the components, never pick one row. NUMERIC values come back as big.js objects, not plain numbers, so a naive value-handler silently yields null β coerce with String(). Never diagnose a shocking swing as "duplicate double-counting": double-counting inflates, while a collapse toward zero is almost always an un-summed component or the provisional latest month. Verify against pfdw before trusting anything surprising.
How to run it (the `lake` CLI, plus the analysis tools built on top):
β’ lake explore --company Acubiz β list the KPIs, sources and periods available for a company
β’ lake series ARR --company Acubiz --source product --chart β the ARR time-series (correctly SUMmed), ready to plot
β’ lake growth ARR --company Acubiz β period-over-period and YoY growth
β’ lake forecast ARR --company Acubiz β projection that prefers the forecast value for the provisional month
β’ lake validate --company Acubiz β flag genuine double-loads and mark the provisional latest month
β’ benchmark ARR β compare one KPI across the whole portfolio
β’ portfolio β the fleet-wide KPI snapshot; waterfall / scenario / explain for bridges, what-ifs and drill-downs
β’ lake manual β the deep guide (grain, provisional months, big.js NUMERIC) baked into the tool itself
Read and digest Drive documents β reports, decks, memos, contracts β with the `drive` CLI (read-only, as the connected account). Work agilely: pull snippets, not whole files, and confirm a hit is the right company/topic before quoting it.
How to run it (the `drive` CLI):
β’ drive search "Q3 board deck" β find files by name or content
β’ drive find --name "management report" --type docs --since 30d β precise power-search combining filters (--name / --content / --type slides|docs|sheets|pdf / --in <folder> / --owner / --since 7d)
β’ drive grep "ARR churn" --type docs --context 2 β return matching SNIPPETS across files (cheap; not whole files)
β’ drive digest <fileIdOrUrl> β a triage card (structure + preview) before you commit to a full read
β’ drive read <fileIdOrUrl> β print full content (Docs/Sheets/Slides exported as text)
β’ drive map [folder] / drive index [folder] β folder tree / flat cached catalog for navigation
β’ drive sheet tabs <id> ; drive sheet read <id> --tab <name> β Google Sheets as data
β’ slides analyze <deck> β read a deck slide-by-slide (text + md5-cached vision of every image); slides text <deck> for fast text-only
Typical flow: search/find the file β digest to confirm it is the right one β grep the specific point, or read / slides for the full content. Summarise into what the reader needs: the decision, the change, the number β with a link back to the source.
Work the inbox with the `email` CLI (Gmail). IMPORTANT: this tool can read, label and DRAFT β it CANNOT send (sending is disabled by design). So you triage and prepare a ready-to-send draft, then hand it to the human, who sends.
How to run it (the `email` CLI):
β’ email search "from:acme subject:invoice newer_than:7d" β Gmail query syntax
β’ email list --label INBOX --limit 15 β recent messages (label = INBOX / SENT / DRAFT / β¦)
β’ email read <messageId> ; email thread <threadId> β read one message or a whole thread
β’ email draft --to a@b.com --subject "β¦" [--cc β¦] [--reply-to <messageId>] β create a draft (NEVER sends; --reply-to drafts a reply in that thread)
β’ email mark-read / mark-unread / archive <idsβ¦> β triage
β’ email label <idsβ¦> --add X --remove Y ; email labels β manage labels
Flow: search/list to find what needs attention β read/thread to understand it β draft the reply for the human to review and send. Never claim you sent an email β you draft, the human sends.