Financial Review
The studio's financial gate on a proposal: not whether the work is beautiful or buildable (that's Athena and Hephaestus's call) — only whether the studio can afford to say yes, and what it will actually make.
Runs at two moments in every project: early, a margin check on Athena's scope doc before it becomes a proposal (the Law of Margin: no proposal leaves without clearing this check); and late, raising the invoice after delivery. Between those moments, expenses are tracked against the project so the final margin calculation is never a surprise.
Every quarter, without being asked, this produces three documents: a profit-per-project summary, a cash flow projection, and a tax preparation pack for Modelo 303 (IVA) and Modelo 130 (IRPF).
Steps
0. Load business context
Read /media/data/Dropbox/Work/Admin/Financial/Accounting/aletheia-codex.md before anything else. This document is the authoritative record of account topology, money flow, IVA/IRPF methodology, and tax conventions. Do not make assumptions about how money moves through the business — read the Codex.
1. Load the brief (or Athena report)
Read the Athena report from {CONTENT_DIR}/pipeline/athena/{slug}-{date}.md. If the slug is not specified in the prompt, ask Mark to provide one or to paste it inline.
If an Athena report is provided inline, save it to {CONTENT_DIR}/pipeline/athena/{slug}-{date}.md before proceeding.
Extract the key fields from the Estimate section:
- Estimated hours (low, mid, high scenario)
- Budget type (fixed-price or hourly)
- Price per scenario
- Timeline
- Client sector and rating
- Verdict
2. Margin check
Load configuration:
- Read
/media/data/Dropbox/Work/Admin/Financial/Accounting/config/rates.yaml— studio rate (€60/hr), Upwork rate ($65/hr), minimum margin threshold (30%), platform fee structure - Read
/media/data/Dropbox/Work/Admin/Financial/Accounting/config/overheads.yaml— monthly fixed costs (API credits €20, autónomo quota €300)
Calculate gross revenue:
- For fixed-price projects: use the mid-range estimate (unless Mark specifies otherwise)
- For Upwork hourly: assume the budgeted hours at the stated rate
- If budget is unknown or insufficient: flag as "insufficient scope clarity for margin check" and skip to step 4
Deduct platform fees (Upwork only):
- If the project came through Upwork: apply the tiered fee (20% on first $500, 10% on next $9,500, 5% above)
- If direct or referral: no platform fee
Allocate monthly overhead:
- Divide total monthly overheads (€320) by estimated active projects
- For a solo project, allocate full monthly overhead
- For concurrent projects, allocate proportionally
Calculate net margin:
Margin % = (Revenue - Platform Fee - Overhead Allocation) / Revenue × 100
Flag result:
- If margin ≥ 30%: ✓ PASS — margin is healthy
- If margin < 30%: ⚠ BELOW THRESHOLD — flag for Mark's review before approving
Output: margin percentage, PASS/BELOW THRESHOLD status, and the breakdown (revenue, fees, overhead share, net).
3. Tax adjustment
Assess tax context:
- Is this a Spanish B2B client? IVA applies (21% added).
- Is this a Spanish professional services invoice? IRPF applies (15% withheld on payment).
- Is this Upwork or international? No IVA or IRPF.
Calculate pre-tax income: The "gross revenue" from step 2.
Calculate tax burden:
- IVA (if Spanish B2B): Revenue × 0.21. This is collected from the client and forwarded to the Spanish tax authority quarterly (Modelo 303).
- IRPF (if Spanish professional services): Revenue × 0.15. This is withheld by the payer and sent to the tax authority. Mark receives the net.
- Autónomo quota: €300/month × (estimated project duration in months). This is a mandatory social security contribution.
Produce net take-home estimate:
Net take-home = (Revenue - Autónomo Quota) - IRPF withheld
(IVA is collected, not kept by Mark)
Output: pre-tax revenue, IVA collected (if any), IRPF withheld (if any), autónomo quota share, and net take-home.
4. Cashflow projection — Viability check
Models risk before it arrives: income vs. outgoings, break-even, and runway over the next 90 days.
Read the financial snapshot:
Read /media/data/Dropbox/Work/Admin/Financial/Accounting/accounts.json — this is the live GnuCash snapshot written by the gnucash_collector. If it does not exist or is more than 24 hours old, run python3 studio/collectors/gnucash_collector.py to refresh it.
Key fields to read:
total_eur— current total bank balance in EURupcoming_30d— bills due in the next 30 days (array with label, date, amount)upcoming_30d_total— total obligations in the next 30 daysbalance_after_30d— cash remaining after all 30-day obligationsmonthly_pl_recent— last 3 months of income/expenses/netcurrent_month— current month P&L (may be incomplete)recent_income— last 10 income entries (for pipeline context)breakeven_allin— €4,115/month (covers all costs + owner's draw)fixed_costs— €717.38/month fixed overhead
Assess capacity and timing:
- Is this a solo project (only active engagement right now) or concurrent with other work?
- What is the current monthly utilisation? (e.g., if three projects are active, each takes 1/3 of capacity)
- Does the project timeline align with when cash is needed? (e.g., long unpaid waiting period is risky)
Model cashflow risk:
- If total monthly revenue across all active projects < €2,000 (covers €320 overhead + living): flag "break-even risk"
- If project is 3+ months with no interim payment milestone: flag "late-payment risk"
- If project is concurrent with 2+ others at 100% capacity: flag "capacity conflict"
Viability note: Produce 2-3 bullets capturing the key risk or opportunity. Example:
- ✓ Strong fit: solo project, healthy margin, payment on delivery
- ⚠ Timing risk: starts during another project's final phase; coordinate handoff
- ✗ Break-even concern: total active revenue dips below minimum during month 2
5. Gate prep — Assemble the report
Never overwrites Athena's work — always appends.
Append a new section to the Athena report:
---
## Financial Review
**Margin:** X% [PASS / BELOW THRESHOLD]
**Breakdown:**
- Revenue: €Y
- Platform fee (if Upwork): €Z
- Overhead allocation: €A
- Net margin: €B (X%)
**Tax and take-home:**
- Pre-tax revenue: €Y
- IVA (if Spanish B2B): €C (collected, not kept)
- IRPF (if Spanish services): €D (withheld)
- Autónomo quota: €E (€300/month × project duration)
- Net take-home estimate: €F
**Viability:**
[2-3 bullet note on capacity, timing, or risk]
**Recommendation:** [APPROVE / REVIEW WITH MARK / REQUEST HIGHER RATE]
This skill does not gate the proposal — that is Mark's domain (the Law of the Gate). It provides Mark with the numbers so Mark can decide.
Output format
Financial review complete.
Margin: X% — [PASS / BELOW THRESHOLD]
Report updated: {CONTENT_DIR}/pipeline/athena/{slug}-{date}.md
Status: Ready for proposal gate
Guard rails
- No guessing: If scope or budget is unclear, flag it and ask Mark rather than extrapolating.
- Rates are immutable: Never change the rate in rates.yaml without Mark's explicit instruction. Use the configured rate.
- No invention: If a cost field (overhead, fee) is not in the config files, do not invent it. Flag as "unknown cost" and skip.
- Append only: Never delete or rewrite Athena's content. This section is always an addition.
- Spain-specific: The tax logic (IVA, IRPF, autónomo quota) assumes Spanish self-employed status. If the client or context is different, flag this.
- Quarterly reports: Tax prep and profit summaries are quarterly-only. Single-project margin checks do not attempt full tax analysis.
Notes
The Law of Margin: No proposal leaves without clearing a margin check. Beauty without margin is charity. The studio is a business.
Financial persistence: Every time a project's finances change (scope updated, hours revised, expense added), re-run this skill to recalculate margin. The ledger grows with the project. Nothing is finalised until the actuals are checked.
Related skills: /raise-invoice, /tax-prep, and /cashflow-projection cover the rest of the studio's money handling — raising invoices, quarterly filing, and runway respectively. This skill is the pre-proposal gate; those are downstream.