Product Kit · 1.0.0
Browser-local · deterministic formulas
Finance Scenario Memo Kit
Compare two to five explicit finance scenarios in one family and export a deterministic review memo.
People comparing caller-supplied ROI, margin, loan, mortgage, or compound-growth assumptions without market data or advice.
Normalized comparison
[
{
"id": "lower-rate",
"inputs": {
"principal": 25000,
"apr": 6.5,
"years": 5
},
"metrics": {
"monthly_payment": 489.15,
"total_interest": 4349.22,
"total_repayment": 29349.22,
"payment_count": 60
},
"deltas": {
"monthly_payment": -11.8,
"total_interest": -707.7,
"total_repayment": -707.7,
"payment_count": 0
},
"details": [
{
"month": 12,
"ending_balance": 20626.38,
"cumulative_principal": 4373.62
},
{
"month": 24,
"ending_balance": 15959.86,
"cumulative_principal": 9040.14
},
{
"month": 36,
"ending_balance": 10980.81,
"cumulative_principal": 14019.19
},
{
"month": 48,
"ending_balance": 5668.3,
"cumulative_principal": 19331.7
},
{
"month": 60,
"ending_balance": 0,
"cumulative_principal": 25000
}
]
},
{
"id": "standard",
"inputs": {
"principal": 25000,
"apr": 7.5,
"years": 5
},
"metrics": {
"monthly_payment": 500.95,
"total_interest": 5056.92,
"total_repayment": 30056.92,
"payment_count": 60
},
"deltas": {
"monthly_payment": 0,
"total_interest": 0,
"total_repayment": 0,
"payment_count": 0
},
"details": [
{
"month": 12,
"ending_balance": 20718.42,
"cumulative_principal": 4281.58
},
{
"month": 24,
"ending_balance": 16104.46,
"cumulative_principal": 8895.54
},
{
"month": 36,
"ending_balance": 11132.29,
"cumulative_principal": 13867.71
},
{
"month": 48,
"ending_balance": 5774.13,
"cumulative_principal": 19225.87
},
{
"month": 60,
"ending_balance": 0,
"cumulative_principal": 25000
}
]
}
]Finance memo envelope
{
"ok": true,
"schema_version": "utilito.product-kit.v1",
"kit": {
"id": "finance-scenario-memo-kit",
"version": "1.0.0"
},
"result": {
"family": "loan",
"baseline_id": "standard",
"comparison_horizon_months": 60,
"assumptions": {
"currency": "USD",
"rounding": "nearest_cent",
"rate_convention": "annual_percent_not_decimal",
"fees": "excluded",
"taxes": "excluded",
"inflation": "nominal"
},
"applicability": [
"Fees are excluded unless represented by a documented family input.",
"Taxes are excluded unless represented by an explicit mortgage property-tax input.",
"Inputs are nominal; no inflation adjustment is applied.",
"Annual and horizon detail rows are formula-derived and bounded to the submitted horizon.",
"Costs in ROI scenario inputs are added to investment to form cost basis; margin cost is the caller-submitted unit cost."
],
"metrics": [
{
"id": "monthly_payment",
"label": "Monthly payment",
"unit": "USD",
"digits": 2
},
{
"id": "total_interest",
"label": "Total interest",
"unit": "USD",
"digits": 2
},
{
"id": "total_repayment",
"label": "Total repayment",
"unit": "USD",
"digits": 2
},
{
"id": "payment_count",
"label": "Payment count",
"unit": "count",
"digits": 0
}
],
"scenarios": [
{
"id": "lower-rate",
"inputs": {
"principal": 25000,
"apr": 6.5,
"years": 5
},
"metrics": {
"monthly_payment": 489.15,
"total_interest": 4349.22,
"total_repayment": 29349.22,
"payment_count": 60
},
"deltas": {
"monthly_payment": -11.8,
"total_interest": -707.7,
"total_repayment": -707.7,
"payment_count": 0
},
"details": [
{
"month": 12,
"ending_balance": 20626.38,
"cumulative_principal": 4373.62
},
{
"month": 24,
"ending_balance": 15959.86,
"cumulative_principal": 9040.14
},
{
"month": 36,
"ending_balance": 10980.81,
"cumulative_principal": 14019.19
},
{
"month": 48,
"ending_balance": 5668.3,
"cumulative_principal": 19331.7
},
{
"month": 60,
"ending_balance": 0,
"cumulative_principal": 25000
}
]
},
{
"id": "standard",
"inputs": {
"principal": 25000,
"apr": 7.5,
"years": 5
},
"metrics": {
"monthly_payment": 500.95,
"total_interest": 5056.92,
"total_repayment": 30056.92,
"payment_count": 60
},
"deltas": {
"monthly_payment": 0,
"total_interest": 0,
"total_repayment": 0,
"payment_count": 0
},
"details": [
{
"month": 12,
"ending_balance": 20718.42,
"cumulative_principal": 4281.58
},
{
"month": 24,
"ending_balance": 16104.46,
"cumulative_principal": 8895.54
},
{
"month": 36,
"ending_balance": 11132.29,
"cumulative_principal": 13867.71
},
{
"month": 48,
"ending_balance": 5774.13,
"cumulative_principal": 19225.87
},
{
"month": 60,
"ending_balance": 0,
"cumulative_principal": 25000
}
]
}
],
"formula_provenance": [
"finance-calculator-core.calculateLoan",
"finance-scenarios-core.compareCanonicalFinanceScenarios"
],
"rounding_notice": "Published money uses 2 decimal places, rates and ratios use up to 6 decimal places, counts are integers, and negative zero is normalized to zero.",
"limitations": [
"All scenario values are caller assumptions, not predictions or verified market data.",
"No comparative preference is produced; outputs are arithmetic only and do not infer market behavior, tax law, or legal conclusions.",
"Fees, taxes, and inflation are never invented; assumption labels describe inclusion scope only."
],
"report": {
"ok": true,
"format": "markdown",
"mime_type": "text/markdown",
"content": "# Finance scenario memo\n\n> All values are caller assumptions, not predictions. This deterministic comparison is not financial, investment, tax, or legal advice.\n\n- Family: `loan`\n- Baseline: `standard`\n- Comparison horizon: 60 months\n- Storage: response-only; no model, network, market data, telemetry, or storage\n\n## Assumptions\n\n- currency: `USD`\n- rounding: `nearest\\_cent`\n- rate\\_convention: `annual\\_percent\\_not\\_decimal`\n- fees: `excluded`\n- taxes: `excluded`\n- inflation: `nominal`\n\n## Applicability\n\n- Fees are excluded unless represented by a documented family input\\.\n- Taxes are excluded unless represented by an explicit mortgage property\\-tax input\\.\n- Inputs are nominal; no inflation adjustment is applied\\.\n- Annual and horizon detail rows are formula\\-derived and bounded to the submitted horizon\\.\n- Costs in ROI scenario inputs are added to investment to form cost basis; margin cost is the caller\\-submitted unit cost\\.\n\n## Normalized comparison\n\n| Scenario | Monthly payment | Total interest | Total repayment | Payment count |\n|---|---:|---:|---:|---:|\n| lower\\-rate | 489.15 | 4349.22 | 29349.22 | 60 |\n| standard | 500.95 | 5056.92 | 30056.92 | 60 |\n\n## Baseline deltas\n\n| Scenario | Monthly payment | Total interest | Total repayment | Payment count |\n|---|---:|---:|---:|---:|\n| lower\\-rate | -11.8 | -707.7 | -707.7 | 0 |\n| standard | 0 | 0 | 0 | 0 |\n\n## Annual and horizon details\n\n### lower\\-rate\n\n| month | ending\\_balance | cumulative\\_principal |\n|---:|---:|---:|\n| 12 | 20626.38 | 4373.62 |\n| 24 | 15959.86 | 9040.14 |\n| 36 | 10980.81 | 14019.19 |\n| 48 | 5668.3 | 19331.7 |\n| 60 | 0 | 25000 |\n\n### standard\n\n| month | ending\\_balance | cumulative\\_principal |\n|---:|---:|---:|\n| 12 | 20718.42 | 4281.58 |\n| 24 | 16104.46 | 8895.54 |\n| 36 | 11132.29 | 13867.71 |\n| 48 | 5774.13 | 19225.87 |\n| 60 | 0 | 25000 |\n\n## Formula provenance\n\n- `finance\\-calculator\\-core\\.calculateLoan`\n- `finance\\-scenarios\\-core\\.compareCanonicalFinanceScenarios`\n\n## Rounding\n\nPublished money uses 2 decimal places, rates and ratios use up to 6 decimal places, counts are integers, and negative zero is normalized to zero\\.\n\n## Scope and limitations\n\n- All scenario values are caller assumptions, not predictions or verified market data\\.\n- No comparative preference is produced; outputs are arithmetic only and do not infer market behavior, tax law, or legal conclusions\\.\n- Fees, taxes, and inflation are never invented; assumption labels describe inclusion scope only\\.\n\n",
"contains_raw_free_text": false,
"not_financial_advice": true,
"not_prediction": true,
"receipt": {
"output_bytes": 2487,
"sanitized_html_fields": 0
},
"provenance": {
"source_schema_version": "utilito.finance-scenario-memo.v1",
"deterministic": true,
"model_used": false,
"network_used": false,
"storage_used": false,
"core": "utilito-evidence-report",
"core_version": "1.0.0"
},
"error": null
},
"safety": {
"market_data_used": false,
"scenario_ranked": false,
"winner_selected": false,
"advice_provided": false,
"prediction_provided": false,
"telemetry_used": false
}
},
"receipt": {
"input_bytes": 415,
"output_bytes": 6071,
"operations": 4,
"omitted_items": 0,
"warnings": [],
"scenarios": 2,
"detail_rows": 10
},
"provenance": {
"deterministic": true,
"model_used": false,
"network_used": false,
"storage_used": false,
"core_versions": {
"finance_scenario_memo_kit": "1.0.0",
"finance_scenarios": "utilito.finance-scenarios.v1",
"finance_calculator": "formula-core",
"mortgage_tax": "formula-core",
"growth_tax": "formula-core",
"evidence_report": "1.0.0"
}
},
"error": null
}Free runnable capability
Compare one bounded scenario family locally and download JSON plus a deterministic memo with no signup.
Builder boundary
The existing Builder Pilot can coordinate higher bounded volume; it does not add advice, prediction, market data, models, storage, or telemetry.
See the existing Builder PilotPrivacy and scope
Browser generation runs locally with deterministic formula and report cores. API and MCP requests are response-only; no model, market data, network call, storage, or telemetry is used.
Limits and trust boundary
- All numbers are caller assumptions, not predictions, verified quotes, or market data. No winner is selected and no financial, investment, tax, or legal advice is provided.
- Fees, taxes, and inflation are never inferred. Assumption fields state scope; only explicit family inputs enter formulas.
- ROI and margin horizons are contextual and not annualized. Loan, mortgage, and compound details are bounded to annual and submitted-horizon rows.
- Mortgage scenarios submit loanAmount, downPayment, and integer termMonths; purchase price is reconstructed as loanAmount + downPayment before the existing mortgage core runs.
- Published money is rounded to cents and rates/ratios to six decimals; raw locale-formatted core reports are never reused.