You’ve basically hit the key limitation: Airtable doesn’t have a native “spread this record across N months” formula, so if you try to do this with a Months table + a bunch of conditional rollups you’ll end up with a field explosion pretty quickly.
The clean/scalable pattern is a **junction (line items) table**:
**Tables**
1. **Jobs**: job #, job type, est start, est end, est revenue
2. **Months**: one record per month (use the 1st of each month as the date)
3. **Allocations / Forecast Lines**: *one record per Job per Month*
* links to **Job** \+ **Month**
* has **Monthly amount** (revenue allocated to that month)
* has **Job Type** as a lookup from Job (and any future dimensions you’ll want to filter by)
**How to generate the allocations**
Use an **Automation + “Run script”** (or scripting extension at first) that, when a job is created/updated:
* finds all months between start and end
* calculates monthly = total\_revenue / month\_count
* creates one allocation row per month and links it to the job + month
**Reporting / Interface**
Build charts off the **Allocations** table: group by Month, sum Monthly amount, and filter by Job Type. Since each allocation row already “has” Job Type (lookup), you don’t need separate rollups for every category.
If later you decide revenue isn’t evenly spread (deposit/milestones/retainage), you can still keep the same structure, just change the script/logic that fills Monthly amount.
If you would like to chat further, we (Claribase) are an award-winning Airtable partner and have worked on similar projects in the past: [https://calendly.com/cherryyang/initial-consultation](https://calendly.com/cherryyang/initial-consultation)
Show full