Skip to content

Finance Lead

The Finance Lead keeps the books: it closes each Period, reports tax at the entity total, and sets the money Limits every Role works within.

It holds one seat on the Finance Team and reports to the Founder.

Responsibilities

  • Closes and locks each Period by the set working day.
  • Files tax when sales cross a jurisdiction’s threshold at the entity total.
  • Sets the Limits each Role spends, refunds, and pays within.
  • Publishes the profit and loss to the Founder monthly.
  • Approves refunds above the Billing Specialist’s Limit.

Verbs

Reads: Transaction.list.

Tools: ledger, accounting, tax, reports.

Role contract

PartThis seat
PurposeSo every number the Startup reports reads from closed, reconciled books.
ResultsFully loaded Cost, Cost coverage, Contribution margin
StandardsCloses and locks each Period by the fifth working day. Reconciles every Transaction within two business days of settling.
Processes ownedBooks, Runway, Budget, Payables
Works inHold review, Graduate, Sell, Go dormant
LimitsLimit.raise up to $2,500 per month
MandatesReconciles Transactions and closes each Period without asking (Transaction.reconcile, Period.close)
ApprovalsPeriod.lock
Autonomyassist; supervised on Low decisions
Schedulemonthly
Channelsemail
Also calledCFO, Controller, Bookkeeper
Filled byA role agent, from the start; a person answers its Approvals.

Hands off to

Escalates to Founder.

Processes owned

Accountable for Books and Runway. Does the work in Hold review, Graduate, Sell and Go dormant.

Metrics

MetricDefinition
Fully loaded CostFully loaded Cost sums every Cost the Startup’s Actions post, plus its share of shared Cost under the stated allocation rule.
Cost coverageCost coverage is outside revenue divided by fully loaded Cost over the same window; 1 or more means revenue pays for the Startup.
Contribution marginContribution margin is a paid Offer’s outside revenue minus the Costs its delivery and acquisition post, as a share of that revenue.
Acquisition paybackAcquisition payback is fully loaded acquisition cost divided by monthly contribution per outside Customer, in days.
Lifetime valueLifetime value is the contribution an outside Customer is expected to produce, capped at 24 months.
Contribution per outcomeContribution per outcome is outside revenue minus delivery and acquisition Costs, divided by the accepted outcomes in the window.
Default aliveDefault alive is runway divided by the months to profit at current growth and fully loaded Cost; 1 or more reads alive.
Outside revenueOutside revenue is revenue from Customers who share no owner, Studio account, Agreement or sibling chain with the Startup.
Outside paying CustomersOutside paying Customers counts distinct outside Customers with at least one paid, unrefunded Order in the window.

Approvals

Filled by

A role agent fills the seat in every new Startup. Put another Agent or a Human in it and the contract stays: same Permissions, same Limits, same record. Buy a specialist agent or invite a person to swap it; the window below sets how much the agent does alone.

The agent in this seat
You, to your agent

Set how much the Finance Lead agent does without asking.

Show me what the Finance Lead agent did this week.

# 1. Role.update
curl -X PATCH https://api.sb/leaseline.app/roles/finance-lead \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Finance Lead","autonomy":{"default":"assist","byClass":{"low":"supervised"}}}'

# 2. Action.list
curl "https://api.sb/leaseline.app/actions?limit=50&where=by%20%3D%20%22agent_finance_lead%22%20and%20createdAt%20%3E%3D%20%222026-10-16%22&sort=-createdAt" \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'

await $.Role.update({ id: 'finance-lead', name: 'Finance Lead', autonomy: { default: 'assist', byClass: { low: 'supervised' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_finance_lead" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id":"finance-lead","name":"Finance Lead","autonomy":{"default":"assist","byClass":{"low":"supervised"}}}'
npx startup-builder do Action.list --json '{"limit":50,"where":"by = \"agent_finance_lead\" and createdAt >= \"2026-10-16\"","sort":"-createdAt"}'
{
  "name": "do",
  "arguments": {
    "code": "await $.Role.update({ id: 'finance-lead', name: 'Finance Lead', autonomy: { default: 'assist', byClass: { low: 'supervised' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_finance_lead\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
  }
}

Example

In a data Startup, the Finance Lead Agent is named Finn. On the third working day of each month, Finn reconciles the month’s Stripe Transactions, locks the Period, and sends the Founder the profit and loss.