ceos-cashflow
The 8 Cash Flow Drivers (EOS Toolbox tool #10). A facilitated workshop for leadership teams to identify and optimize the eight key financial levers that impact cash flow and profitability: Price, Volume, COGS/Margin, A/R Days, A/P Days, Inventory/WIP, Operating Expenses, and Debt Structure.
Not for: Weekly scorecard tracking (use ceos-scorecard), general issue resolution (use ceos-ids), or Rock setting (use ceos-rocks). This skill is for the structured cash flow driver assessment — a strategic conversation about financial levers.
When to Use
- "Assess our cash flow" or "8 cash flow drivers"
- "Cash flow drivers" or "financial optimization"
- "Review our financial levers" or "profitability drivers"
- "Where can we improve margins?"
- "Cash flow driver review" or "quarterly cash flow check-in"
- "Show cash flow history" or "how have our drivers changed?"
Context
Finding the CEOS Repository
Before doing anything:
- Search upward from the current directory for a
.ceosmarker file - If not found, tell the user: "I can't find a CEOS repository. Clone it with
git clone https://github.com/bradfeld/ceos.gitand run./setup.sh init." - If found, set
CEOS_ROOTto that directory - Run
git -C "$CEOS_ROOT" pull --ff-onlyto sync latest data (skip if offline or if pull fails — work with local data)
Key Files
| File | Purpose |
|---|---|
data/cashflow/ |
Cash flow driver assessments (one per session) |
data/accountability.md |
Team members for suggesting driver owners |
data/scorecard/metrics.md |
Existing metrics that may overlap with cash flow drivers |
templates/cashflow-assessment.md |
Template for new assessment files |
The 8 Cash Flow Drivers
| # | Driver | Key Question | Typical Metric |
|---|---|---|---|
| 1 | Price | Can you increase prices? | Average selling price, price per unit |
| 2 | Volume | Can you sell more? | Units sold, transactions, customers |
| 3 | COGS / Margin | Can you reduce cost of goods? | Gross margin %, COGS as % of revenue |
| 4 | A/R Days | Can you collect faster? | Days sales outstanding (DSO) |
| 5 | A/P Days | Can you negotiate better terms? | Days payable outstanding (DPO) |
| 6 | Inventory / WIP | Can you reduce inventory? | Inventory turnover, WIP backlog |
| 7 | Operating Expenses | Where can you cut overhead? | OpEx as % of revenue, specific line items |
| 8 | Debt Structure | Is debt optimized? | Debt-to-equity, interest rate, term mix |
Note: Not all 8 drivers apply equally to every business. A software company may have minimal inventory. A services firm may have no COGS. The skill handles this — drivers can be marked as "none" potential when they don't apply.
Driver Improvement Potential
| Value | Meaning |
|---|---|
high |
Significant upside — this driver should be a top priority |
medium |
Moderate improvement possible with focused effort |
low |
Minor gains available — not a priority this quarter |
none |
Already optimized or not applicable to this business |
Assessment Status
| Value | Meaning |
|---|---|
in_progress |
Assessment started but not all drivers evaluated |
complete |
All drivers assessed and priorities set |
Process
Mode: Assess
Trigger: User wants to evaluate all 8 cash flow drivers from scratch.
Step 1: Gather context
Read data/accountability.md to identify potential driver owners. If the file doesn't exist, skip owner suggestions — ask the user for each driver's owner directly.
Read data/scorecard/metrics.md (if it exists) to identify metrics already being tracked that relate to cash flow drivers. Note any overlaps — don't duplicate existing scorecard measurables.
Step 2: Walk through the 8 drivers
For each driver (1 through 8):
- Display the driver name, key question, and typical metric from the reference table
- If a related scorecard metric exists, note it: "Your Scorecard already tracks [metric] — you may want to reference that as your baseline."
- Ask the user:
- Current state: What's the current situation for this driver?
- Improvement potential: High, medium, low, or none?
- Baseline metric: What's the current value? (Store as a string — can be "$52K/month", "Net 30", "45 days", etc.)
- Target metric: Where do you want this to be?
- Owner: Who is accountable for this driver? (Suggest from accountability chart if available)
- Notes: Any additional context?
If the user wants to skip a driver (e.g., "Inventory doesn't apply to us"), set potential to none and note "Not applicable" in current_state. Move to the next driver.
Step 3: Prioritize
After all 8 drivers are assessed, display a summary table:
| # | Driver | Potential | Owner | Baseline | Target |
|---|---|---|---|---|---|
| ... | ... | ... | ... | ... | ... |
Ask the user to rank their top 3-5 focus drivers. Assign priority_rank values (1 = highest priority). Drivers not in the top 3-5 get null for priority_rank.
Step 4: Create assessment file
Generate the complete file from templates/cashflow-assessment.md. Populate all frontmatter fields and body sections.
Show the complete file to the user before writing. Ask: "Save this assessment?"
Write to data/cashflow/YYYY-MM-DD.md (using today's date). If a file already exists for today, use suffix: YYYY-MM-DD-2.md.
Set frontmatter status: complete.
Step 5: Next steps
After saving, mention (but don't auto-invoke):
- "Driver improvements with high potential could become Rocks for next quarter (use
ceos-rocks)" - "Driver problems that need investigation could become Issues (use
ceos-ids)" - "Consider adding key driver metrics to your Scorecard (use
ceos-scorecard)"
Mode: Review
Trigger: User wants a quarterly check-in on their prioritized cash flow drivers.
Step 1: Load assessments
Read all files from data/cashflow/ via Glob. Parse YAML frontmatter. Sort by date (newest first).
If no assessments exist: "No cash flow assessments found. Run an assessment first to establish your baseline."
Step 2: Find the latest assessment
Display the most recent completed assessment's prioritized drivers (those with priority_rank set):
| Priority | Driver | Baseline | Target | Owner |
|---|---|---|---|---|
| 1 | [driver] | [baseline] | [target] | [owner] |
| 2 | [driver] | [baseline] | [target] | [owner] |
| ... | ... | ... | ... | ... |
Step 3: Collect current values
For each prioritized driver, ask: "What's the current value for [Driver]? (Baseline was [baseline], target is [target])"
Step 4: Display progress
| Priority | Driver | Baseline | Current | Target | Direction |
|---|---|---|---|---|---|
| 1 | Price | $45/unit | $48/unit | $55/unit | Improving |
| 2 | A/R Days | 45 days | 42 days | 30 days | Improving |
| 3 | OpEx | 35% of rev | 36% of rev | 30% of rev | Stalling |
Direction values:
- Improving — Moving toward target
- Stalling — No change or very minor movement
- Regressing — Moving away from target
- Target hit — Current meets or exceeds target
Step 5: Flag and suggest
For stalling or regressing drivers, suggest:
- "Consider creating an Issue to investigate why [Driver] is stalling (use
ceos-ids)" - "A focused Rock on [Driver] improvement could help (use
ceos-rocks)"
Step 6: Save review (optional)
Ask if the user wants to save this review as a new assessment. If yes, create a new file capturing the current state as the new baseline. This becomes the comparison point for the next review.
Mode: History
Trigger: User wants to see cash flow driver trends over time.
Step 1: Load all assessments
Read all files from data/cashflow/ via Glob. Parse YAML frontmatter. Sort by date (oldest first).
If no assessments exist: "No cash flow assessments found yet."
If only one assessment: Display it, noting "Only one assessment on record. Run another assessment later to see trends."
Step 2: Assessment timeline
| Date | Drivers Assessed | High | Medium | Low | None | Top Priorities |
|---|---|---|---|---|---|---|
| 2026-02-15 | 8 | 3 | 2 | 2 | 1 | Price, A/R Days, OpEx |
| 2026-05-10 | 8 | 2 | 3 | 2 | 1 | A/R Days, Volume, OpEx |
Step 3: Per-driver trends
For each driver that has been prioritized in at least one assessment:
Price: high → medium → low (improving — was a top priority, now optimized)
A/R Days: high → high → medium (improving slowly — still needs attention)
OpEx: medium → high → high (worsening — consider escalating to an Issue)
Step 4: Insights
- Which drivers have been consistently prioritized (may need a Rock)
- Which drivers improved and were deprioritized (success stories)
- Which drivers have worsened (may need an IDS investigation)
Step 5: Drill-down
Offer: "Would you like to see the full details of any specific assessment?"
If yes, display the complete assessment file.
Output Format
Assess Mode Summary
After completing the assessment, display:
Cash Flow Assessment — YYYY-MM-DD
8 Drivers Assessed:
High potential: [N] drivers
Medium potential: [N] drivers
Low potential: [N] drivers
Not applicable: [N] drivers
Top Priorities:
1. [Driver] — [Baseline] → [Target] (Owner: [Name])
2. [Driver] — [Baseline] → [Target] (Owner: [Name])
3. [Driver] — [Baseline] → [Target] (Owner: [Name])
Saved to: data/cashflow/YYYY-MM-DD.md
Review Mode Summary
Cash Flow Review — YYYY-MM-DD
Comparing to assessment from [prior date]:
Improving: [N] drivers
Stalling: [N] drivers
Regressing: [N] drivers
Target hit: [N] drivers
[Table of prioritized drivers with progress]
History Mode Summary
Cash Flow History — [N] assessments
First assessment: YYYY-MM-DD
Latest assessment: YYYY-MM-DD
[Assessment timeline table]
[Per-driver trend arrows]
Guardrails
- Always show the complete file before writing. Never save an assessment without the user seeing and approving the full content.
- Don't auto-invoke skills. When assessment results suggest creating Rocks, Issues, or Scorecard metrics, mention the option but let the user decide. Say "Would you like to create a Rock for this?" rather than doing it automatically.
- Sensitive data warning. On first use in a session, remind the user: "Cash flow assessments contain sensitive financial information (revenue targets, cost structures, debt details). Ensure this repository is private."
- Don't prescribe financial strategies. This is a facilitation guide, not financial advice. Present the framework and record the team's decisions. Don't suggest specific pricing strategies, cost-cutting measures, or debt restructuring approaches.
- One full assessment per session. Walking through all 8 drivers is a substantial conversation. Don't rush — each driver deserves focused discussion.
- Metrics are strings, not numbers. Financial values come in many formats ($52K, 45 days, Net 30, 35% of revenue). Store them as human-readable strings. The skill facilitates comparison through display, not computation.
Integration Notes
Accountability Chart (Read)
- Direction: Read
- What data:
data/accountability.md - Purpose: Suggest driver owners from the leadership team's seat assignments. Each driver should be owned by the person whose seat most closely relates to that financial lever.
Scorecard (Read)
- Direction: Read
- What data:
data/scorecard/metrics.md - Purpose: Cross-reference existing scorecard metrics with the 8 drivers. If a team already tracks "Weekly Revenue" on the scorecard, that overlaps with the Volume and Price drivers. Avoid duplicating metrics — reference existing ones.
Rocks (Related)
- Direction: Related (suggest, don't write)
- What data: N/A
- Purpose: High-potential driver improvements can become quarterly Rocks. After assessment, suggest the user create Rocks for their top priorities via
ceos-rocks.
IDS (Related)
- Direction: Related (suggest, don't write)
- What data: N/A
- Purpose: Stalling or regressing drivers may need root-cause investigation. Suggest creating Issues via
ceos-idsfor drivers that aren't improving despite being prioritized.
Write Principle: Only ceos-cashflow writes to data/cashflow/. Other skills may reference cash flow assessments for financial context.