# Building the Build/Run Ledger in Airtable **From Chapter 1.3 of *The 4-Hour Side Hustle*.** The same ledger as the spreadsheet, living in your Command Center instead — so the quarterly re-score arrives as a view rather than as something you have to remember. You need `ledger-airtable.csv` from this bundle. It has two example rows and **no formula columns**, deliberately: Airtable can't import into a formula field, so those get added after. Fifteen minutes. --- ## Which version should you use? Be honest about this before you build anything. **Use the spreadsheet** if the ledger is a thing you fill in twice a year and otherwise ignore. It needs no setup and it's already done. **Use the Airtable version** if you're in the Command Center daily anyway. What you gain is the one thing the spreadsheet can't do: a view that surfaces automations whose re-score date has passed, without you remembering to look. That's the whole argument. If you won't open Airtable, the spreadsheet is better. --- ## Step 1 — Import 1. Open your `Command Center` base. 2. Table tabs → **+** → **Import data** → **CSV file**. 3. Upload `ledger-airtable.csv`, with **"Use first row as header"** on. 4. Rename the table `Ledger`. Two records, both examples. Delete them once your own rows are in — but leave them until the formulas are working, because they're how you check the formulas are right. --- ## Step 2 — Fix the field types | Field | Set it to | Notes | |---|---|---| | **Task** | Single line text | Primary field — drag to position one | | **Minutes per Week** | Number | 0 decimals | | **Hours to Build** | Number | 1 decimal — half-hours are realistic, quarter-hours aren't | | **Built** | Checkbox | **Imports as text. Change it.** | | **Date Built** | Date | ISO, no time | | **Still Worth It** | Long text | | | **Notes** | Long text | | Same warning as the sprint tracker: `Built` arrives as text, an empty text field and an empty checkbox look identical, and two of the views below filter on it. --- ## Step 3 — Add four formula fields In this order — the last two reference the earlier ones. ### `Payback Ratio` ``` IF( AND({Minutes per Week} > 0, {Hours to Build} > 0), ({Minutes per Week} * 52) / ({Hours to Build} * 60), BLANK() ) ``` Formatting → **Decimal, 1 place.** **Check it against the example rows before going further.** Row one must read `13.0`, row two `1.4`. If they don't, something is wrong with a field type — almost always `Minutes per Week` or `Hours to Build` imported as text rather than a number, which makes the arithmetic silently return blank. ### `Decision` ``` IF( {Payback Ratio} >= 10, "BUILD", IF({Payback Ratio} > 0, "don't build", "") ) ``` Row one → `BUILD`. Row two → `don't build`. Ten is the threshold, and it's high on purpose: everyone underestimates build time by about half, and almost nobody accounts for maintenance. A 10× on paper tends to land nearer 4× in practice — which is still an excellent trade. A 3× on paper is a hobby wearing a spreadsheet. ### `Re-score Due` ``` IF({Date Built}, DATEADD({Date Built}, 3, 'months')) ``` Formatting → **Date**, same format as `Date Built`. ### `Re-score Status` ``` IF( AND({Date Built}, IS_BEFORE({Re-score Due}, TODAY())), "⚠ re-score", "" ) ``` This is the field the whole Airtable version exists for. Everything else the spreadsheet already does. --- ## Step 4 — Four views ### `Decide` (Grid) **Filter:** `Built` is unchecked. **Sort:** `Payback Ratio` descending. Your build queue, best return first. Anything showing `don't build` stays visible on purpose — you'll be tempted by one of them in about six weeks, and seeing the number again is cheaper than rediscovering it. ### `Built` (Grid) **Filter:** `Built` is checked. **Sort:** `Date Built` descending. What you've actually shipped, and the answer to "where did the Saturdays go." ### `Re-score due` (Grid) **Filter:** `Re-score Status` is not empty. **Sort:** `Re-score Due` ascending. Empty most of the time. When something appears in it, answer `Still Worth It` honestly. **An automation that stopped being worth it is a scenario to switch off, not a sunk cost to defend.** That sentence is the reason this view exists, and the reason it's worth a quarterly look rather than an annual one — Make.com operations and tool subscriptions accumulate silently. ### `Everything` (Grid) No filter, sorted by `Payback Ratio` descending. For the quarterly audit, when you want the whole picture at once. --- ## Step 5 — Optional: link it to the Sprint table Skip this on the first pass. If you later want week 2 of the sprint to show which ledger rows came out of it, add a **Link to another record** field on `Ledger` pointing at `Sprint`. Two clicks, no formulas. I'd leave it off. The connection is obvious from the dates, and a link field is a thing you then maintain forever. --- ## Verify before you trust it With the two example rows still in place: | Check | Expected | |---|---| | Row 1 `Payback Ratio` | `13.0` | | Row 1 `Decision` | `BUILD` | | Row 2 `Payback Ratio` | `1.4` | | Row 2 `Decision` | `don't build` | | Row 1 `Re-score Due` | `2026-04-12` (three months after 2026-01-12) | | `Decide` view | shows row 2 only | | `Built` view | shows row 1 only | If all seven are right, delete the example rows and start entering your own from the week 1 time audit. --- ## Checklist - [ ] Imported into `Command Center`, not a new base - [ ] Table renamed `Ledger` - [ ] `Built` changed from text to **Checkbox** - [ ] `Minutes per Week` and `Hours to Build` are **Number**, not text - [ ] Four formula fields added in order - [ ] `Payback Ratio` reads 13.0 and 1.4 on the example rows - [ ] `Re-score Due` reads 2026-04-12 on row one - [ ] Four views built - [ ] Example rows deleted only after all seven checks passed - [ ] Quarterly audit already in the calendar — the view reminds you, the calendar makes you look