Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions .github/workflows/check-links.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ name: Check model links
# The pages in this repo are frozen snapshots of live Layerz models.
# If a model is edited away, unshared or deleted, the public page keeps
# claiming it exists. This job catches that within a week.
#
# It also runs on pull requests, so a page that ships a dead or mistyped
# model link is caught before merge rather than by the next Monday cron.
# On a PR the checkout is the merge result, so what gets verified is the
# repo as it would look on main.

on:
schedule:
Expand All @@ -13,6 +18,11 @@ on:
- 'models/**'
- 'README.md'
- '.github/workflows/check-links.yml'
pull_request:
paths:
- 'models/**'
- 'README.md'
- '.github/workflows/check-links.yml'
workflow_dispatch:

jobs:
Expand All @@ -24,7 +34,7 @@ jobs:
- name: Collect model ids from the model pages
id: collect
run: |
grep -rhoE 'app\.layerz\.cc/models/[0-9a-f-]{36}' models README.md \
grep -rhoE '(app\.)?layerz\.cc/models/[0-9a-f-]{36}' models README.md \
| sed 's|.*/||' | sort -u > ids.txt
echo "Found $(wc -l < ids.txt) model id(s):"
cat ids.txt
Expand All @@ -35,8 +45,8 @@ jobs:
fail=0
while read -r id; do
for url in \
"https://app.layerz.cc/models/$id" \
"https://app.layerz.cc/models/$id/opengraph-image"; do
"https://layerz.cc/models/$id" \
"https://layerz.cc/models/$id/opengraph-image"; do
code=$(curl -sS -o /dev/null -w '%{http_code}' --max-time 30 --retry 2 "$url" || echo 000)
if [ "$code" = "200" ]; then
echo "ok $code $url"
Expand Down
3 changes: 2 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ To publish or refresh a model page:
- **Published models are frozen.** Every model listed below is a live model backing a public page. Do not edit or delete one for a demo, a test or a quick fix: the page here would keep describing a model that no longer exists. Fork it and work on the fork. The weekly `check-links` workflow catches a dead model or OG card, but only after the fact.
- Page copy is **English** (public-facing). The underlying model may stay in another language when the structure is jurisdiction-specific (e.g. the HoldCo/SPV template is French: PPA tariffs, régime mère-fille). In that case the page says so in a badge and a short note, rather than translating the model and breaking its accuracy.
- **This catalog and the Layerz system templates are two different lists.** A model can be a system template without a page here, and vice versa. Reconcile deliberately (`layerz_list_templates({ scope: "system" })`), never assume they match.
- **Open in Layerz** button → `https://app.layerz.cc/models/<model_id>` (same URL used for sharing).
- **Open in Layerz** button → `https://layerz.cc/models/<model_id>` (same URL used for sharing).
- Voice: *"we share the recipe, not the black box."* Personal repo, not corporate Layerz Labs.
- Dashboard screenshots are real Layerz exports dropped in `.github/assets/` (concierge step, not auto-generated).

Expand All @@ -46,6 +46,7 @@ To publish or refresh a model page:
| professional-services | `d0e3688b-eceb-4341-ada1-e8a45957b3d8` |
| ecommerce-retail | `d5e899c7-a710-4f2a-9b05-cc3e88690af1` |
| holdco-spv | `9548419c-9659-4da0-af74-14d58e61a220` |
| inventory-methods | `4dd73ff7-3ce6-4e87-b823-6699f4985255` |

## Monthly models — read the right period

Expand Down
25 changes: 13 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,19 @@ Most financial models are disposable: every deal, every budget starts from a bla

| Model | What it is | |
|---|---|---|
| [☕ Coffee Shop NYC](models/coffee-shop-nyc/) | 3-year café business plan: P&L, Cash Flow, Balance Sheet that tie out, plus a CFO dashboard | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/d161c3c4-ade6-48e4-b162-48fa2f81c545) |
| [📈 SaaS Reporting & Forecast](models/saas-reporting-forecast/) | B2B SaaS operating model 2024-2028: ARR & unit economics, actuals & variance, 3 statements | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/39550987-f253-4a36-b067-6daddcb1e3ff) |
| [🏗️ Infrastructure Project Finance](models/project-finance/) | Reusable project-finance template (worked example: 500 MW offshore wind, 2026-2046): sized senior debt, DSCR, equity IRR, 3 statements that tie out | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/5e54258d-e4b6-48a0-91b0-32d4271fe224) |
| [🚀 SaaS Scale-up (Series A)](models/saas-series-a/) | B2B SaaS Series A plan 2026-2030: ARR build, unit economics, path to profit and runway, 3 statements that tie out | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/3f9737d9-e7c8-4f56-b962-6bb9963d6095) |
| [💰 LBO · Returns (Mid-Market Buyout)](models/lbo/) | Leveraged buyout 2025-2030: sources & uses, sized debt with cash sweep, IRR & MOIC, 3 statements that tie out | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/57af5678-5e56-44bc-9d46-379b8eb961b6) |
| [🏦 LBO · Deal & Valuation (Tech M&A)](models/tech-ma-lbo/) | $43M software buyout 2024-2028: debt tranches as an editable list, actuals/forecast cutover, live checks, football field | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/3657668b-4684-4010-bd9b-c83845db1dff) |
| [👥 SaaS Cohort Revenue Projection](models/saas-cohort/) | Monthly cohort engine 2026-2028: churn by tenure (M0-M35), customer base as a stock, MRR bridge that ties out, 3 statements | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/0cf40614-eb52-48b9-8d72-cbecc84860b2) |
| [💼 Professional Services (Consulting)](models/professional-services/) | Grade pyramid 2026-2028: headcount × capacity × utilisation × rate, WIP and DSO, 3 statements that tie out | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/d0e3688b-eceb-4341-ada1-e8a45957b3d8) |
| [🛒 E-commerce & Retail (Channel Mix)](models/ecommerce-retail/) | DTC, marketplace, own retail and wholesale 2026-2028: contribution margin per channel, 40-day cash cycle, 3 statements | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/d5e899c7-a710-4f2a-9b05-cc3e88690af1) |
| [☀️ HoldCo / SPV Portfolio (Rooftop Solar)](models/holdco-spv/) | 3 project companies under one holding 2026-2045: debt and DSCR per SPV, full cash sweep, investor IRR & MOIC | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/9548419c-9659-4da0-af74-14d58e61a220) |
| [📊 Monthly Close (Actuals vs Budget)](models/monthly-close/) | Monthly management P&L with a budget base and an actuals branch: native variance and EBITDA budget-to-actual bridge, no second spreadsheet | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/ccea856a-6ee5-4f79-b891-e1c321daac4d) |
| [⚖️ Valuation (DCF & Multiples)](models/valuation/) | Company valuation 2025-2030: 5-year unlevered DCF + trading comps (EV/EBITDA, EV/Revenue, P/E) resolved into a football field per share | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/29f9cebe-cfc3-403b-82c4-bd50e1f8e042) |
| [☕ Coffee Shop NYC](models/coffee-shop-nyc/) | 3-year café business plan: P&L, Cash Flow, Balance Sheet that tie out, plus a CFO dashboard | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/d161c3c4-ade6-48e4-b162-48fa2f81c545) |
| [📈 SaaS Reporting & Forecast](models/saas-reporting-forecast/) | B2B SaaS operating model 2024-2028: ARR & unit economics, actuals & variance, 3 statements | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/39550987-f253-4a36-b067-6daddcb1e3ff) |
| [🏗️ Infrastructure Project Finance](models/project-finance/) | Reusable project-finance template (worked example: 500 MW offshore wind, 2026-2046): sized senior debt, DSCR, equity IRR, 3 statements that tie out | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/5e54258d-e4b6-48a0-91b0-32d4271fe224) |
| [🚀 SaaS Scale-up (Series A)](models/saas-series-a/) | B2B SaaS Series A plan 2026-2030: ARR build, unit economics, path to profit and runway, 3 statements that tie out | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/3f9737d9-e7c8-4f56-b962-6bb9963d6095) |
| [💰 LBO · Returns (Mid-Market Buyout)](models/lbo/) | Leveraged buyout 2025-2030: sources & uses, sized debt with cash sweep, IRR & MOIC, 3 statements that tie out | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/57af5678-5e56-44bc-9d46-379b8eb961b6) |
| [🏦 LBO · Deal & Valuation (Tech M&A)](models/tech-ma-lbo/) | $43M software buyout 2024-2028: debt tranches as an editable list, actuals/forecast cutover, live checks, football field | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/3657668b-4684-4010-bd9b-c83845db1dff) |
| [👥 SaaS Cohort Revenue Projection](models/saas-cohort/) | Monthly cohort engine 2026-2028: churn by tenure (M0-M35), customer base as a stock, MRR bridge that ties out, 3 statements | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/0cf40614-eb52-48b9-8d72-cbecc84860b2) |
| [💼 Professional Services (Consulting)](models/professional-services/) | Grade pyramid 2026-2028: headcount × capacity × utilisation × rate, WIP and DSO, 3 statements that tie out | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/d0e3688b-eceb-4341-ada1-e8a45957b3d8) |
| [🛒 E-commerce & Retail (Channel Mix)](models/ecommerce-retail/) | DTC, marketplace, own retail and wholesale 2026-2028: contribution margin per channel, 40-day cash cycle, 3 statements | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/d5e899c7-a710-4f2a-9b05-cc3e88690af1) |
| [☀️ HoldCo / SPV Portfolio (Rooftop Solar)](models/holdco-spv/) | 3 project companies under one holding 2026-2045: debt and DSCR per SPV, full cash sweep, investor IRR & MOIC | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/9548419c-9659-4da0-af74-14d58e61a220) |
| [📊 Monthly Close (Actuals vs Budget)](models/monthly-close/) | Monthly management P&L with a budget base and an actuals branch: native variance and EBITDA budget-to-actual bridge, no second spreadsheet | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/ccea856a-6ee5-4f79-b891-e1c321daac4d) |
| [⚖️ Valuation (DCF & Multiples)](models/valuation/) | Company valuation 2025-2030: 5-year unlevered DCF + trading comps (EV/EBITDA, EV/Revenue, P/E) resolved into a football field per share | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/29f9cebe-cfc3-403b-82c4-bd50e1f8e042) |
| [📦 Inventory Modelling: Three Methods](models/inventory-methods/) | Percent of COGS, days inventory outstanding and unit build computed side by side 2025-2029: one switch drives the balance sheet, and the three answers are €865k apart by year 5 | [![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/4dd73ff7-3ce6-4e87-b823-6699f4985255) |

Two LBOs on purpose: **Returns** is the sponsor view (sources & uses, cash sweep, IRR and MOIC), **Deal & Valuation** is the advisory view (capital structure you can restructure in one move, price range, actuals cutover).

Expand Down
10 changes: 5 additions & 5 deletions models/coffee-shop-nyc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
> A 3-year business plan for an independent specialty café in Manhattan. Funds a build-out with owner equity + a bank loan, then ramps traffic and ticket. P&L, Cash Flow and Balance Sheet that tie out, plus a CFO-style dashboard.

<p align="center">
<a href="https://app.layerz.cc/models/d161c3c4-ade6-48e4-b162-48fa2f81c545">
<img src="https://app.layerz.cc/models/d161c3c4-ade6-48e4-b162-48fa2f81c545/opengraph-image" width="640" alt="Coffee Shop NYC, Layerz model card">
<a href="https://layerz.cc/models/d161c3c4-ade6-48e4-b162-48fa2f81c545">
<img src="https://layerz.cc/models/d161c3c4-ade6-48e4-b162-48fa2f81c545/opengraph-image" width="640" alt="Coffee Shop NYC, Layerz model card">
</a>
</p>

[![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork_this_model-2D6BFF?style=for-the-badge)](https://app.layerz.cc/models/d161c3c4-ade6-48e4-b162-48fa2f81c545)
[![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork_this_model-2D6BFF?style=for-the-badge)](https://layerz.cc/models/d161c3c4-ade6-48e4-b162-48fa2f81c545)
&nbsp;
![Currency](https://img.shields.io/badge/currency-USD-333)
![Horizon](https://img.shields.io/badge/horizon-2026–2028-333)
Expand Down Expand Up @@ -107,14 +107,14 @@ flowchart TD

## How to use it

1. **[Open in Layerz](https://app.layerz.cc/models/d161c3c4-ade6-48e4-b162-48fa2f81c545)** and fork it (free account).
1. **[Open in Layerz](https://layerz.cc/models/d161c3c4-ade6-48e4-b162-48fa2f81c545)** and fork it (free account).
2. Edit the drivers in **Assumptions** — customers/day, avg ticket, rent, loan terms.
3. Watch every statement recompute, and confirm **Balance Check == 0**.

> Known simplifications: flat 360 operating days, blended ticket, COGS a flat % of revenue, single loaded payroll line. Stress the ramp before any lending use.

---

[![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork_this_model-2D6BFF?style=for-the-badge)](https://app.layerz.cc/models/d161c3c4-ade6-48e4-b162-48fa2f81c545)
[![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork_this_model-2D6BFF?style=for-the-badge)](https://layerz.cc/models/d161c3c4-ade6-48e4-b162-48fa2f81c545)

*Shared by [@anthomakr](https://github.com/anthomakr) · built with [Layerz](https://layerz.cc) · we share the recipe, not the black box.*
10 changes: 5 additions & 5 deletions models/ecommerce-retail/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
> Four channels, four different economics. A blended gross margin hides which one actually pays, and hides what growth costs you in cash.

<p align="center">
<a href="https://app.layerz.cc/models/d5e899c7-a710-4f2a-9b05-cc3e88690af1">
<img src="https://app.layerz.cc/models/d5e899c7-a710-4f2a-9b05-cc3e88690af1/opengraph-image" width="640" alt="E-commerce and Retail Channel Mix, Layerz model card">
<a href="https://layerz.cc/models/d5e899c7-a710-4f2a-9b05-cc3e88690af1">
<img src="https://layerz.cc/models/d5e899c7-a710-4f2a-9b05-cc3e88690af1/opengraph-image" width="640" alt="E-commerce and Retail Channel Mix, Layerz model card">
</a>
</p>

[![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/d5e899c7-a710-4f2a-9b05-cc3e88690af1)
[![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/d5e899c7-a710-4f2a-9b05-cc3e88690af1)
![Currency](https://img.shields.io/badge/currency-EUR-555)
![Period](https://img.shields.io/badge/period-2026--2028-555)
![Balanced](https://img.shields.io/badge/3--statement-balanced-2E9E5B)
Expand Down Expand Up @@ -123,12 +123,12 @@ Retail store costs sit inside `Channel Cost %` rather than being driven by a sto

## How to use it

1. **[Open it in Layerz](https://app.layerz.cc/models/d5e899c7-a710-4f2a-9b05-cc3e88690af1)** (free account) and **fork** it.
1. **[Open it in Layerz](https://layerz.cc/models/d5e899c7-a710-4f2a-9b05-cc3e88690af1)** (free account) and **fork** it.
2. Replace the `Channels` list with your own, then fill orders, AOV, product margin and channel cost.
3. Re-base days inventory, DSO and DPO on your real terms. They drive the cash line far more than the P&L does.
4. Export to Excel any time. The export is clean and auditable.

[![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/d5e899c7-a710-4f2a-9b05-cc3e88690af1)
[![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/d5e899c7-a710-4f2a-9b05-cc3e88690af1)

---

Expand Down
10 changes: 5 additions & 5 deletions models/holdco-spv/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
> A portfolio of project companies under one holding, driven entirely by a list. Adding a fourth SPV is three keystrokes: a list element, a capacity, a commissioning year. No formula is touched.

<p align="center">
<a href="https://app.layerz.cc/models/9548419c-9659-4da0-af74-14d58e61a220">
<img src="https://app.layerz.cc/models/9548419c-9659-4da0-af74-14d58e61a220/opengraph-image" width="640" alt="HoldCo SPV rooftop solar portfolio, Layerz model card">
<a href="https://layerz.cc/models/9548419c-9659-4da0-af74-14d58e61a220">
<img src="https://layerz.cc/models/9548419c-9659-4da0-af74-14d58e61a220/opengraph-image" width="640" alt="HoldCo SPV rooftop solar portfolio, Layerz model card">
</a>
</p>

[![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/9548419c-9659-4da0-af74-14d58e61a220)
[![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/9548419c-9659-4da0-af74-14d58e61a220)
![Currency](https://img.shields.io/badge/currency-EUR_(k€)-555)
![Period](https://img.shields.io/badge/period-2026--2045-555)
![Balanced](https://img.shields.io/badge/HoldCo_balance-checked-2E9E5B)
Expand Down Expand Up @@ -81,12 +81,12 @@ No loss carry-forward on tax, since the SPVs are profitable from year one. No pe

## How to use it

1. **[Open it in Layerz](https://app.layerz.cc/models/9548419c-9659-4da0-af74-14d58e61a220)** (free account) and **fork** it.
1. **[Open it in Layerz](https://layerz.cc/models/9548419c-9659-4da0-af74-14d58e61a220)** (free account) and **fork** it.
2. Replace the `SPV` list with your own assets, one element each, with capacity and commissioning year.
3. Re-base the technical and tariff assumptions, then the debt terms. Check DSCR per SPV and at portfolio level.
4. Confirm the HoldCo balance check holds at 0, then export to Excel.

[![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://app.layerz.cc/models/9548419c-9659-4da0-af74-14d58e61a220)
[![Open in Layerz](https://img.shields.io/badge/Open_in_Layerz-Fork-2D6BFF)](https://layerz.cc/models/9548419c-9659-4da0-af74-14d58e61a220)

---

Expand Down
Loading
Loading