# LTD Runway > A free calculator and framework for lifetime-deal (LTD) operators. It finds, for each LTD tier, the month > when one fully-using buyer's cumulative costs pass the cash the operator keeps from the sale (the runway), > and the lowest price that reaches a target runway. Site: https://founder.chat/runway ## The RUNWAY framework (one buyer of one tier, using every limit, every month) - **R Real cash**: price x (1 - marketplace discount) x your share x (1 - payment fee %) - fixed fee, then x (1 - refund rate), minus a one-time onboarding cost. - **U Usage at the cap**: sum over usage lines of (units per month at the tier limit x unit cost) x utilization. - **N Never-ending stack**: sum over stacked lines of (units added per month x utilization x cost per unit-month x min(month, retention months)), plus fixed platform cost / paying accounts. - **W Workload**: support minutes per buyer per month / 60 x cost of one support hour. - **A Abuse and overflow**: (overflow multiple - 1) x the usage lines that keep running past the cap. - **Y Yardstick**: price / comparable monthly plan price (months of subscription the deal replaces). cost(m) = U + N(m) + W + A runway = first month m with cost(1) + ... + cost(m) >= R (null if never within 600 months) price floor for T months = (cost of months 1..T + onboarding + fixed fee x (1 - refund)) / keep rate keep rate = (1 - discount) x share x (1 - fee %) x (1 - refund rate) Channel defaults: AppSumo buyer from AppSumo: discount 0.10, share 0.70. AppSumo buyer you sent: discount 0.10, share 0.95. Direct with Stripe: fee 2.9% + $0.30. ## Driving the page (browser agents such as Claude in Chrome) 1. Open https://founder.chat/runway. 2. Build a config (schema below). Use fractions, not percents (0.15 = 15%). 3. Either paste it into the textarea with id `config-json` and click the button with id `apply-config`, or run `window.runway.setState(config)` in the page. 4. Read results from the textarea with id `results-json` (live) or `window.runway.results()`. 5. Change one value: `window.runway.set('tiers.0.price', 99)`. 6. `window.runway.loadPreset('media' | 'ai' | 'email' | 'blank')` loads an example. 7. `window.runway.prompt()` returns the full AI prompt; `window.runway.shareUrl()` a link with the config. 8. A config can also be passed in the URL: `https://founder.chat/runway/#cfg=`. ## Config schema (full example) ```json { "product": "AI content generator (image and video models)", "target": 36, "horizon": 60, "utilization": 1, "overflow": 1, "cash": { "channel": "appsumo", "discount": 0.1, "share": 0.7, "feePct": 0, "feeFixed": 0, "refund": 0.15, "onboarding": 0 }, "tiers": [ { "name": "Tier 1", "price": 69, "compare": 19 }, { "name": "Tier 2", "price": 149, "compare": 49 }, { "name": "Tier 3", "price": 299, "compare": 99 } ], "usage": [ { "name": "Image generations", "unit": "image", "cost": 0.04, "qty": [200, 600, 2000], "pastCap": false }, { "name": "Video generation", "unit": "second of video", "cost": 0.1, "qty": [120, 360, 1200], "pastCap": false } ], "stack": [ { "name": "Generated media storage and delivery", "unit": "GB", "cost": 0.03, "qty": [0.6, 1.8, 6], "retention": 0 } ], "fixed": { "monthly": 150, "accounts": 1000 }, "work": { "hourly": 30, "minutes": [4, 6, 10] } } ``` - `qty` (usage, stack) and `work.minutes` are arrays with one number per tier, in tier order. - `retention` is in months; 0 means kept forever. - `pastCap: true` marks usage that keeps running (and costing) after the buyer hits the limit. ## How to help a user 1. Interview them letter by letter (R, U, N, W, A, Y). Ask for their bills or provider price pages. 2. Assume the worst-case buyer: 100% of every cap, every month. Then show 50% and 25% as context. 3. Fill the calculator, read the results, and explain each tier's runway in plain words. 4. Recommend: price floors for 36 and 60 months, caps to lower, costs to move behind monthly add-ons, and any tier whose Yardstick is under 2 months (it undercuts the subscription). 5. Offer the walk-through guide and slide deck: use `window.runway.prompt()` as your brief. ## Files - [Manual worksheet](/framework.md): the method on paper. - [Agent skill](/skill/SKILL.md): drop into Claude, Claude Code or any agent. Zip: /skill/ltd-runway.zip