Before I start a software product, I can usually list the services it may need. The harder question is what those services add up to over the period in which I will actually build and test the idea.
A new app may use part of a design subscription I already pay for, require a fresh hosting plan every month, and need one launch expense in its first month. Putting all three into the main business ledger too early creates a different problem: a possibility starts looking like an operating product.
Disclosure: I make MarginDeck. This article describes my own work on the product.
MarginDeck 1.2, released on August 18, 2026, adds New Product Planning for that gap. It lets you save multiple product cost plans, calculate each plan over a chosen period, and keep every assumption separate from recorded products and costs.
The purpose is deliberately narrow. A plan answers two questions:
- What could this product cost over the period I choose?
- What is that total divided across the full planning period?
It does not predict revenue, profit, return on investment, break-even, or whether the idea is worth building. Those require evidence that a cost schedule cannot provide.
Start with a plan, not a placeholder product
The quickest workaround for product planning is often to create a placeholder in the real portfolio. That can work in a spreadsheet, but it becomes confusing in a system that also drives dashboards, upcoming-cost views, allocations, and historical reports.
Is the placeholder an active product? Should its speculative hosting bill appear in next month's expected costs? Does an experimental allocation change the history of a shared tool? If the idea is abandoned, which records should be removed?
In MarginDeck 1.2, a Planned Product is a separate kind of record. You give it a name, choose the current month or a future start month, and set a planning period from 1 to 24 months. The default is 12 months, but a short validation sprint and a longer development cycle do not need to share the same horizon.
You can save more than one plan. That makes it possible to keep a small utility idea, a larger subscription app, and a client-product experiment available without turning any of them into a recorded Product.
Plans appear under the new Overview / Plans control in Products. Each plan expands in place so its totals, average monthly costs, and cost list stay together. The interface does not create a second product-detail system for hypothetical work.
Two kinds of cost assumptions
A useful product plan needs to distinguish resources that already exist from spending that the new idea may add.
MarginDeck 1.2 uses two input types:
| Plan input | What it represents | Effect on recorded data |
|---|---|---|
| Existing Cost | A saved snapshot of part of a cost you already track | None |
| Planned Cost | A monthly, yearly, or one-time cost that exists only in this plan | None |
For an Existing Cost, you choose a Planned Share. If the new product uses half of a $20 monthly design tool's capacity, the plan can use 50%, or $10 per expected month.
That share is a planning assumption. It does not reduce the amount allocated to existing products, change the real Allocation Timeline, or create a new invoice. It says only, “For this decision, I want to count this portion of a resource I already use.”
A Planned Cost represents expected new spending. It can recur monthly or yearly, or occur once. It remains inside the plan and does not appear in Costs, Upcoming, reminders, revenue views, or business reports.
Keeping the two types distinct matters. A plan may attribute $120 of an existing design subscription to a new product, but that does not necessarily mean the portfolio will spend another $120. A new $24 hosting plan, by contrast, probably represents additional scheduled spending if the project proceeds.
A simple 12-month example
Suppose I am considering a fictional product called Focus Notes. The plan starts in August 2026 and covers 12 months.
| Cost assumption | Schedule | Planned amount |
|---|---|---|
| 50% of an existing $20 design tool | Monthly | $120 |
| New cloud hosting | $24 monthly | $288 |
| Launch assets | $96 once in August | $96 |
| Planned total cost | $504 |
The average monthly cost is:
$504 ÷ 12 months = $42
That $42 is a comparison value, not a promise that every month will cost $42. In this schedule, August contains the design share, hosting, and the one-time launch cost: $130. Each of the remaining eleven months contains $34. The scheduled amounts still occur in the months where they belong.
The same rule applies to yearly services. A yearly plan cost is counted in its expected billing month, not silently spread across twelve months. MarginDeck divides the completed total by the planning period only when showing Average per Month.
That distinction keeps two useful views intact:
- the schedule shows when an expected cost belongs;
- the average makes plans with different lengths easier to compare.
For a deeper walkthrough of the method, see What Will a New Software Product Cost Over the Next 12 Months?.
Currencies need an explicit policy
When MarginDeck 1.2 launched, a plan containing more than one currency kept its totals separate. That avoided inventing an exchange rate and made the units behind each amount explicit.
If a plan contains USD and EUR services, combining them into one number would require an exchange-rate date and a conversion policy. Without those inputs, a grand total would look precise while hiding an assumption. The original version showed a separate total for each currency.
Update for MarginDeck 1.4: the app can now estimate one total in the display currency using cached ECB reference rates for supported currencies. It still shows original-currency amounts. Product-plan estimates use the latest cached daily reference rates. Historical Dashboard month rules do not freeze a plan's converted total. These totals are informational estimates, not live or transaction exchange rates.
The same principle appears throughout the planning feature: when the app does not know something, it should preserve the boundary rather than manufacture an answer.
Existing costs are copied as snapshots
An Existing Cost in a plan is a saved snapshot, not a live reference that silently changes every time the portfolio changes.
Imagine preparing a plan with a $20 monthly tool and reviewing a $504 total with a collaborator. A week later, the vendor raises its price. If the plan updates in the background, the number you discussed changes without an explicit decision or record of why.
MarginDeck instead keeps the saved assumption. If the source cost changes, the plan can show that the source has changed. You decide whether to refresh the snapshot. Refreshing updates the copied cost terms while preserving the Planned Share; it does not write anything back to the real cost.
If the source cost is later deleted, the plan still retains its assumption. A deleted source should not erase the reasoning behind an earlier plan.
This snapshot model is intentionally different from the live schedule used for recorded business data. Recorded costs should resolve the terms that apply to each period. A plan should remain reviewable until the person making the decision chooses to update it.
The plan cannot leak into the operating portfolio
The strongest rule in New Product Planning is isolation.
Editing a plan does not change:
- recorded Products or Costs;
- billing or allocation history;
- Upcoming Costs or local reminders;
- revenue records or read-only revenue connections;
- contribution-profit reports;
- recurring net burn or cash-runway estimates.
Likewise, a Planned Cost does not become a real Cost merely because the plan is saved. There is no one-click conversion in version 1.2. If the product moves forward, the user still creates the appropriate operating records deliberately.
That extra step is useful friction. Planning data is a statement about a possible future. Recorded data is a statement about the business the user intends to track. Combining them too early would make both less trustworthy.
Plans remain local and portable
Planned Products, their cost snapshots, and plan-only costs are stored on the Mac with the rest of the MarginDeck workspace. No MarginDeck account is required.
All saved plans are included when the user chooses to create a local backup. Version 1.2 updated the backup format while retaining compatibility with older backups that contain no product plans.
Local-first does not mean “data can never leave the computer.” A user can export a backup, and optional revenue connections communicate with their providers when enabled. It means the plan itself does not require a MarginDeck cloud account or a planning server to exist.
What this feature is—and is not—for
New Product Planning is useful for questions such as:
- How much could a 3-month validation project cost?
- What would a 12-month build require in existing and new tools?
- How much of a shared service should this idea carry in the plan?
- Which costs recur, and which land once in a particular month?
- Are two ideas materially different in cost before revenue assumptions enter the discussion?
It should not answer:
- Will customers buy this product?
- When will the project break even?
- Is the return worth the owner's time?
- Can the business afford the plan under every cash scenario?
- Is the product likely to succeed?
Those are broader decisions. Cost is one input, not a verdict.
The practical next step after building a cost plan is to write down the evidence needed for the other side of the decision: customer problem, willingness to pay, distribution path, owner time, and a stopping condition for the experiment.
Disclosure: I am Junhua Jin, the developer of MarginDeck and the author of SwingCodeLab. You can read the focused New Product Planning guide or download MarginDeck from the Mac App Store. The plan is an estimate based on the amounts and schedules you enter, not an actual charge or a prediction of business performance.