agentleFS
NachoLafuenteNachoLafuente/5050-gtm/skills/cfo-skill/SKILL.md

cfo-skill

Skill3 starsChanged 5 months agoMITView on GitHub

Read-only CFO data dashboard for bootstrapped startups. Two modes, CSV templates (works with any stack: Attio/HubSpot/Salesforce + Qonto/Mercury/Brex + Stripe + Moss/Ramp/Pleo) or live API pull from Attio + Qonto + Stripe + Moss. Computes runway, burn rate, MRR/ARR, NRR, customer concentration, AR aging, DSO, vendor spend, departmental burn. Outputs an Excel workbook with 8 sheets. Use when the user asks "what's our runway?", "how much cash do we have?", "what's our burn?", "who are our biggest customers?", "where is spend going?", "what's our MRR?", "AR aging?". Read-only by design. NOT financial, legal, tax, or investment advice.

  • Reads credentials

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Only set the ones for providers you actually use.

    line 70
  2. Distinctive:

    Repeat the disclaimer: when the user is making a real decision.

    line 136

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

CFO Skill

⚠️ DISCLAIMER

This skill displays data. It is NOT financial, legal, tax, accounting, or investment advice.

Numbers may be stale, miscategorized, or reflect bugs in upstream systems. Frameworks below (LTV:CAC, runway, burn multiple, Rule of 40) are heuristics, not guarantees. Decisions about hiring, fundraising, distributions, taxes, or solvency must be made by you in consultation with a qualified CFO, accountant, lawyer, or tax advisor. The author and contributors accept no liability for decisions made based on this skill's output.


Two ways to use it

Mode 1: CSV templates (works with any stack)

Drop four CSVs into a folder, run one command, get an Excel workbook. Works with any CRM/bank/billing stack, Attio, HubSpot, Salesforce, Pipedrive, Mercury, Brex, Stripe, Chargebee, Ramp, Pleo, whatever.

Templates live in templates/. Realistic example data lives in examples/ so you can try the pipeline before plugging in real data.

python skills/cfo-skill/run.py --source csv --csv-dir ./my-data --output cfo.xlsx

CSV schemas (column headers in templates/):

FileColumns
customers.csvcustomer_id, customer_name, status, signed_up_at, churned_at, mrr, plan
cash_movements.csvdate, account, direction, amount, currency, counterparty, category, department, note
invoices.csvinvoice_id, customer, issued_at, due_at, amount, currency, status
balances.csvaccount, currency, balance, as_of

status values: active, churned, lead (only active counts toward MRR). direction values: in, out. Invoice status values: paid, unpaid, draft.

Mode 2: Live API pull (Attio + Qonto + Stripe + Moss)

Set credentials in your environment, run the puller, get the same Excel workbook from live data.

python skills/cfo-skill/run.py --source api --providers all --output cfo.xlsx

Or pick specific providers, they run in the order you list, and later writers win on customers.csv / invoices.csv:

python skills/cfo-skill/run.py --source api --providers qonto,stripe,moss      # Stripe-billed SaaS
python skills/cfo-skill/run.py --source api --providers qonto,attio,moss        # CRM-driven (no Stripe)
python skills/cfo-skill/run.py --source api --providers qonto,attio,stripe,moss # both, Stripe wins on MRR

Provider-by-provider:

ProviderWritesBest atReference
Stripecustomers.csv (with real MRR), invoices.csvAuthoritative SaaS revenue. Use this if you bill via Stripe.references/stripe.md
Attiocustomers.csvCRM-driven customer state, plan, lifecyclereferences/attio.md
Qontobalances.csv, cash_movements.csv, invoices.csvBank truth, cash position, transactions, ARreferences/qonto.md
Mossappends to cash_movements.csvCategorized card spend, vendors, departmentsreferences/moss.md

Each puller writes its slice to a temp folder; the same compute layer then generates the Excel workbook. You don't have to use all four. A Stripe + Mercury founder can run --providers stripe and use CSV templates for the bank side. A HubSpot + Brex founder skips API mode entirely and uses CSV for everything.


Required environment variables

Only set the ones for providers you actually use.

ProviderVariables
StripeSTRIPE_SECRET_KEY (use a restricted key with read on customers, subscriptions, invoices, payouts)
AttioATTIO_API_KEY. Optional: ATTIO_MRR_ATTR, ATTIO_STATUS_ATTR, ATTIO_ACTIVE_VAL, ATTIO_CHURNED_ATTR, ATTIO_PLAN_ATTR, ATTIO_NAME_ATTR
QontoQONTO_API_KEY + QONTO_SECRET_KEY (the "secret key" is your Qonto org slug)
MossMOSS_KEY_ID + MOSS_SECRET_KEY (OAuth client credentials, scope read)

Skill is read-only, never request write scopes. Never log or echo a secret.


What the workbook contains

Eight sheets:

  1. Summary: headline metrics with heuristic flags (runway, concentration, DSO, burn multiple)
  2. Cash Flow: monthly inflows / outflows / net for the trailing 3 months
  3. Customers: full customer table from your input data
  4. Concentration: top 1 / 5 / 10% of MRR + top-10 customer table
  5. AR Aging: unpaid invoices bucketed (current, 1-30, 31-60, 61-90, 90+) + per-invoice detail
  6. Spend: by category, by vendor, by department
  7. Recurring Vendors: heuristic detection (3+ similar transactions)
  8. Disclaimer: full disclaimer in-workbook

Computed metrics

MetricFormulaHeuristic flags
Cash balancesum of bank account balances-
Runwaycash ÷ trailing 3-month avg net burn<12 mo red, 12-24 mo yellow
Burn multiplenet burn ÷ MRR>2× red
MRR / ARRsum of active customer MRR × 12-
Customer concentrationtop-N MRR ÷ total MRR>25% top-1 red
AR agingunpaid invoices bucketed by days past due60+ days red
DSO(AR ÷ 90d issued sales) × 90 days<30 green, >60 red
Spend by categorysum of outflows grouped by category-
Top vendorssum of outflows grouped by counterparty-
Recurring vendorscounterparty appearing 3+ times in trailing window-
Departmental burnsum of outflows grouped by department-

Frameworks used (LTV:CAC, Rule of 40, Magic Number, etc.) live in references/metrics-benchmarks.md. Bootstrapped case studies in references/case-studies.md.


What this skill does NOT do

  • ❌ Make recommendations on hiring, raises, distributions, or fundraising
  • ❌ Give tax, legal, or accounting advice
  • ❌ Project cash flow into the future as a "forecast" you can rely on
  • ❌ Determine whether your company is solvent
  • ❌ Write to any of the connected systems (read-only by design)

For any of these: "I can show you the numbers. The decision is for you and a qualified advisor."


How Claude should answer a CFO question

  1. Restate the question in numerical terms. ("What's our runway?" → "I need cash balance and trailing 3-month net burn.")
  2. Identify which provider(s) to query from the table above, or which CSV(s) to read.
  3. Run run.py with appropriate flags, or read the CSVs directly via cfo.load_all() + cfo.summarize().
  4. Show raw numbers first, then computed metric, then framework.
  5. Repeat the disclaimer when the user is making a real decision.
  6. Flag data quality issues explicitly (stale data, missing fields, miscategorized expenses).

Attribution

Frameworks, benchmarks, and case studies adapted from EveryInc/charlie-cfo-skill (MIT, © 2026 Every).

Data layer (Stripe + Attio + Qonto + Moss pullers + CSV templates + Excel writer) by 5050Growth.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.