{"handle":"business-frameworks/cash-flow/decide/runway@1.0","title":"Keep the runway","summary":"Send a period-by-period cash forecast; get the first breach of the must-pay-plus-reserve floor and the action order with amounts.","url":"https://business-frameworks.matryoshka-paradigms.workers.dev/apply/cash-flow/decide/runway","method":"POST","price_usd":"$0.05","node_url":"https://business-frameworks.matryoshka-paradigms.workers.dev/node/cash-flow/decide/runway","input_schema":{"type":"object","properties":{"opening_cash":{"type":"number","description":"Cash in the bank at the start of the first period. One currency for every money field in the call."},"bad_month_collections":{"type":"number","minimum":0,"description":"The reserve, as one amount of money: what the business collects in a poor month, set from its own collection history. A month's worth even when the forecast runs in weeks; it is added to must_pay to make each period's floor."},"revenue_usd":{"type":"number","description":"Annual revenue in US dollars. Optional: it sets how often the result says to re-run the forecast."},"periods":{"type":"array","minItems":1,"items":{"type":"object","properties":{"label":{"type":"string","description":"Name of the period, for example \"week 3\". Optional."},"inflows":{"type":"number","minimum":0,"description":"Cash expected to arrive during the period, as forecast: collections and other receipts, before any outflow. Cash, not invoiced sales; the outflows go in must_pay and deferrable."},"must_pay":{"type":"number","minimum":0,"description":"Outflows the business cannot postpone in the period: interest, debt falling due, leases, taxes. Payroll and supplier bills that fall due go here or in deferrable by whether they can be postponed; the forecast has no third place for them."},"deferrable":{"type":"number","minimum":0,"description":"Outflows scheduled in the period that could be postponed: capital spending, development, distributions."}},"required":["inflows","must_pay","deferrable"]},"description":"The forecast: one object per period, in time order."}},"required":["opening_cash","bad_month_collections","periods"],"description":"Fields ending _pct take a number of percent (13 means 13%, not 0.13). Fields ending _per_sales_dollar are fractions of a sales dollar (0.65 means 65 cents), and probabilities run from 0 to 1. Money is a plain number in one currency for the whole call; revenue_usd alone is in US dollars, because the scale bands are set in US dollars."},"example_input":{"opening_cash":120000,"bad_month_collections":60000,"revenue_usd":2400000,"periods":[{"label":"week 1","inflows":40000,"must_pay":25000,"deferrable":10000},{"label":"week 2","inflows":30000,"must_pay":55000,"deferrable":20000},{"label":"week 3","inflows":45000,"must_pay":20000,"deferrable":30000},{"label":"week 4","inflows":35000,"must_pay":70000,"deferrable":5000}]},"how":"POST this URL with a JSON body matching input_schema; on 402, sign and retry with PAYMENT-SIGNATURE","units":"Fields ending _pct take a number of percent (13 means 13%, not 0.13). Fields ending _per_sales_dollar are fractions of a sales dollar (0.65 means 65 cents), and probabilities run from 0 to 1. Money is a plain number in one currency for the whole call; revenue_usd alone is in US dollars, because the scale bands are set in US dollars.","notes":["Deterministic: the result is computed from these inputs by a fixed rule. No model is involved and nothing is looked up."],"related":[{"handle":"business-frameworks/cash-flow@1.0","rel":"term","when":"the free node above this decision; read it first","price_usd":"$0"},{"handle":"business-frameworks/cash-flow/why@1.0","rel":"why","when":"the reasoning behind the rule is wanted, not only its result","price_usd":"$0.02"},{"handle":"business-frameworks/cash-flow/pro-forma@1.0","rel":"tool","when":"the forward view of cash has not been built yet","price_usd":"$0.03"},{"handle":"business-frameworks/cash-flow/band/1-5m@1.0","rel":"scale band","when":"revenue is $1–5M","price_usd":"$0.03"}],"related_how":"To read a related node, GET /node/<path> on this host, where <path> is the handle without the product name and the version; a paid node answers 402 with its price first.","cite_as":"McHenry, J. (2026). Business Frameworks, version 1.0, business-frameworks/cash-flow/decide/runway@1.0.","fit":{"pilot":true,"measured_on":"2026-10-08","list_prices_read_on":"2026-10-09","runs_per_question":1,"what_rule_right_means":"the answer states the decision rule of the node that covers the question, as graded by a model against keys written from the nodes; it is agreement with this product's rule, not an outside standard of correctness","arms":{"without":"the model alone, no skill, no node","free_layer":"the skill installed and told to use it: the free layer and the handles, no paid text","with_node":"the skill plus the paid node text for the question's decision"},"your_own_cost":"multiply tokens_per_answer by your model's list price: input_total counts every input token across the calls one answer took (most of it cache reads on the second and later calls), input_new the uncached part, output the tokens written; the measured cost_per_answer_usd used the prices in models.list_price_usd_per_mtok","will_change":"the comparison test (three runs per question, a second vendor, about sixty runs per arm) replaces these figures; measured_on changes when it does","decision":"cash-flow/decide/runway","kind":"arithmetic","kind_label":"arithmetic over periods, or an order of steps","verdict":{"for_model":null,"model_class":"unknown","verdict":"apply","because":"On arithmetic over periods, or an order of steps, the node's text did not lift the answers in the pilot — a small model stated the rule in 3 of 8 answers with the node and 3 of 8 with the free layer alone; a frontier model 1 of 3 either way. The applied route runs the rule on your numbers for the same price: use that, or do the arithmetic yourself. Do not buy the text for this kind of question."},"recommended_path":{"path":"the applied route","what":"POST the inputs to /apply/<decision>: the rule runs deterministically on your numbers for the node's price; any model can assemble the inputs; no model is needed to get the figures right","why":"on arithmetic over periods, or an order of steps the node's text did not lift the answers of either model (small model 3 of 8 with the node against 3 of 8 on the free layer; frontier 1 of 3 either way), so buying the text for a model to read is not the path; the computed verdict is","cost_per_rule_right_answer_usd_from_text":{"small_model_with_node":0.01333,"frontier_model_alone":0.23568,"frontier_model_with_node":0.48276},"applied_route":"the price of the decision's node per call plus your model's tokens to assemble the inputs; its answer rate was not part of the pilot (it computes, it does not read)","quality":"quality here is rule-right: the answer states this product's rule for the question, graded by a model against keys written from the nodes — a pilot of one run per question, not a customer-satisfaction measure (a blind-preference arm is planned)"},"by_model":{"claude-haiku-5.5":{"class":"small","list_price_usd_per_mtok":{"input":0.1,"output":0.5},"verdict":"apply","because":"On arithmetic over periods, or an order of steps, the node's text did not lift the answers in the pilot — a small model stated the rule in 3 of 8 answers with the node and 3 of 8 with the free layer alone; a frontier model 1 of 3 either way. The applied route runs the rule on your numbers for the same price: use that, or do the arithmetic yourself. Do not buy the text for this kind of question.","this_kind_of_question":{"n":8,"rule_right":{"without":1,"free_layer":3,"with_node":3},"cost_per_answer_usd":{"without":0.00249,"free_layer":0.00461,"with_node":0.005},"cost_per_rule_right_answer_usd":{"without":0.01992,"free_layer":0.01229,"with_node":0.01333},"tokens_per_answer":{"without":{"input_total":16197,"input_new":6516,"output":2185},"free_layer":{"input_total":67458,"input_new":12010,"output":2910},"with_node":{"input_total":67029,"input_new":13825,"output":3413}},"api_calls_per_answer":{"without":1,"free_layer":3.38,"with_node":3.25}},"this_decision_alone":{"n":3,"rule_right":{"without":0,"free_layer":0,"with_node":1},"note":"too few answers to read on their own; the kind row is the evidence"}},"claude-opus-5.5":{"class":"frontier","list_price_usd_per_mtok":{"input":4,"output":20},"verdict":"apply","because":"On arithmetic over periods, or an order of steps, the node's text did not lift the answers in the pilot — a small model stated the rule in 3 of 8 answers with the node and 3 of 8 with the free layer alone; a frontier model 1 of 3 either way. The applied route runs the rule on your numbers for the same price: use that, or do the arithmetic yourself. Do not buy the text for this kind of question.","this_kind_of_question":{"n":3,"rule_right":{"without":1,"free_layer":1,"with_node":1},"cost_per_answer_usd":{"without":0.07856,"free_layer":0.13726,"with_node":0.16092},"cost_per_rule_right_answer_usd":{"without":0.23568,"free_layer":0.41178,"with_node":0.48276},"tokens_per_answer":{"without":{"input_total":15053,"input_new":5765,"output":1530},"free_layer":{"input_total":68385,"input_new":10816,"output":1962},"with_node":{"input_total":76730,"input_new":12674,"output":2337}},"api_calls_per_answer":{"without":1,"free_layer":3.67,"with_node":4}},"this_decision_alone":{"n":1,"rule_right":{"without":0,"free_layer":0,"with_node":0},"note":"too few answers to read on their own; the kind row is the evidence"}}},"not_for":["market data, prices or forecasts — the nodes carry none","businesses above about $50M in revenue, or questions outside value, cash flow, risk and growth","arithmetic over periods, or an order of steps answered from the text alone — the applied route computes them; the text does not","a frontier model already on a screen-or-threshold question — no lift was established at this sample size"],"table_url":"https://business-frameworks.matryoshka-paradigms.workers.dev/fit","ask_for_your_model":"https://business-frameworks.matryoshka-paradigms.workers.dev/fit?decision=cash-flow/decide/runway&model=<your model name>"}}