Recommendation: replace. Thresholds already evaluated for this unit indicate replacement. Three comparisons fired:
- Age: The unit is 23.34 years old against a replace-at-age threshold of 20.0 years.
- Repair frequency: 6 repair invoices in the last 12 months against a threshold of 4.0.
- Quote vs book value: Book value is 0.0 (fully depreciated). With the quote present ($3,000.00), the “quote as % of book value” threshold set at 200.0% is automatically exceeded when book value is zero.
There were no untestable thresholds. Note: spend coverage reflects uploaded/extracted invoices over a 33‑month window, so lifetime spend seen is a floor, but this does not affect the fired age and repair-frequency thresholds.
Given these fired thresholds, the system’s mapped verdict is replace.
Figures used
- facts.asset.age_years = 23.34
- facts.thresholds.values.replace_age_years = 20.0
- facts.spend.ttm_invoice_count = 6
- facts.thresholds.values.max_repairs_ttm = 4.0
- facts.economics.book_value = 0.0
- facts.thresholds.values.quote_pct_of_book_value = 200.0
- facts.quote.amount = 3000.0
- facts.coverage.invoice_window_months = 33
Rules cited
- “replace_age_years”
- “max_repairs_ttm”
- “quote_pct_of_book_value”
From v1.0 draft (consolidated, unapproved), saved by consolidation (pending Matt's review). This decision is permanently tied to that version even if the rules change later.
Threshold check
t1.4 2026-08-26 · compared in code, not by the model| Lever | This unit | Replace at | Reading |
|---|---|---|---|
| Replace at age asset.age_years |
23.34 years | 20.0 years | AT OR OVER |
| Flag when repairs in 12 months reach spend.ttm_invoice_count |
6 repairs | 4.0 repairs | AT OR OVER |
| Replace when a repair reaches economics.book_value |
None % of book value | 200.0 % of book value | AT OR OVER |
The unit
Full history →- Unit
- FL-00041
- Make / model
- HYSTER S50XM
- Power
- propane
- Site
- 45 Brunswick (Tiles), New Jersey
- Age
- 23.34 yrs (acquired 2003-04-23)
- Hour meter
- 19,157 @ 2026-04-30
- Hours / year
- 311
- Readings
- 6 (2 implausible)
- Invoices
- 6
- Last service
- 2026-04-30
- Spend seen
- $2,604.51
- Trailing 12mo
- $2,604.51
- Replacement
- $34,000
- Quote / repl.
- 8.8%
- Spend / repl.
- 7.7%
Known gaps in the evidence
- asset has no capacity_lbs — replacement benchmarks are banded by capacity
Repair history behind this
| Service date | Vendor | Type | Total | Flags | Document |
|---|---|---|---|---|---|
| 2026-04-30 | HERCULES | repair | $815.67 | FAVORABLE | 4696723_Auto6a6051b9-7b78-4fde-856f-9defce364240~APWH_20260511112033.pdf |
| 2026-04-10 | HERCULES | repair | $625.41 | FAVORABLE CONSUMABLE_FLAT | 4646117_Autobc46bb52-cb8d-4875-847a-dbe6b587d45f~APWH_20260428133536.pdf |
| 2026-03-27 | HERCULES | repair | $191.86 | CONSUMABLE_FLAT | 4618404_Auto7b154788-77c4-4d10-bef4-6a6ba0b7040d~APWH_20260410131414.pdf |
| 2026-02-04 | HERCULES | repair | $285.17 | FAVORABLE | 4405820_Autoe1b51834-62c3-4c12-9e9e-d1e95664341d~APWH_20260210081020.pdf |
| 2026-02-04 | HERCULES | repair | $200.37 | CONSUMABLE_FLAT | 4405800_Autoce521887-b860-40ab-950e-073130988bd0~APWH_20260210074126.pdf |
| 2026-01-16 | HERCULES | repair | $486.03 | FAVORABLE | 4385210_Auto35f71169-5d29-42ca-b02a-d3c2a32e6360~APWH_20260120121243.pdf |
What did you actually do?
Recording the real outcome is what lets this tool be backtested against Matt's judgement. It takes a click.
Outcomes are recorded under a named account. Sign in to record what was done.
Full facts record (d0.2 · openai:gpt-5)
{
"as_of": "2026-08-26",
"asset": {
"acquire_date": "2003-04-23",
"age_years": 23.34,
"asset_id": "FL-00041",
"capacity_lbs": null,
"make": "HYSTER",
"model": "S50XM",
"power_type": "propane",
"serial": "D187V04950T",
"site_name": "45 Brunswick (Tiles), New Jersey",
"source": "asset_master",
"status": "active",
"wh_code": "NJED-45"
},
"coverage": {
"invoice_window_end": "2026-07-28",
"invoice_window_months": 33,
"invoice_window_start": "2023-10-19",
"invoices_in_system": 2108
},
"data_gaps": [
"asset has no capacity_lbs \u2014 replacement benchmarks are banded by capacity"
],
"economics": {
"book_value": 0.0,
"book_value_basis": "(1 - 23.3/10) x $23,500, floored at 0",
"est_acquisition_cost": 23500,
"est_replacement_cost": 34000,
"est_useful_life_yrs": 10,
"fully_depreciated": true
},
"found": true,
"history": [
{
"doc_type": "repair",
"file_ref": "4696723_Auto6a6051b9-7b78-4fde-856f-9defce364240~APWH_20260511112033.pdf",
"flag_codes": "NO_PO;FAVORABLE",
"invoice_id": 963,
"needs_review": 0,
"on_date": "2026-04-30",
"total": 815.67,
"vendor_id": "HERCULES"
},
{
"doc_type": "repair",
"file_ref": "4646117_Autobc46bb52-cb8d-4875-847a-dbe6b587d45f~APWH_20260428133536.pdf",
"flag_codes": "NO_PO;FAVORABLE;CONSUMABLE_FLAT",
"invoice_id": 886,
"needs_review": 0,
"on_date": "2026-04-10",
"total": 625.41,
"vendor_id": "HERCULES"
},
{
"doc_type": "repair",
"file_ref": "4618404_Auto7b154788-77c4-4d10-bef4-6a6ba0b7040d~APWH_20260410131414.pdf",
"flag_codes": "NO_PO;CONSUMABLE_FLAT",
"invoice_id": 725,
"needs_review": 0,
"on_date": "2026-03-27",
"total": 191.86,
"vendor_id": "HERCULES"
},
{
"doc_type": "repair",
"file_ref": "4405820_Autoe1b51834-62c3-4c12-9e9e-d1e95664341d~APWH_20260210081020.pdf",
"flag_codes": "NO_PO;FAVORABLE",
"invoice_id": 320,
"needs_review": 0,
"on_date": "2026-02-04",
"total": 285.17,
"vendor_id": "HERCULES"
},
{
"doc_type": "repair",
"file_ref": "4405800_Autoce521887-b860-40ab-950e-073130988bd0~APWH_20260210074126.pdf",
"flag_codes": "NO_PO;CONSUMABLE_FLAT",
"invoice_id": 318,
"needs_review": 0,
"on_date": "2026-02-04",
"total": 200.37,
"vendor_id": "HERCULES"
},
{
"doc_type": "repair",
"file_ref": "4385210_Auto35f71169-5d29-42ca-b02a-d3c2a32e6360~APWH_20260120121243.pdf",
"flag_codes": "NO_PO;FAVORABLE",
"invoice_id": 187,
"needs_review": 0,
"on_date": "2026-01-16",
"total": 486.03,
"vendor_id": "HERCULES"
}
],
"meter": {
"est_hours_per_year": 311,
"implausible_readings": 2,
"last_reading_date": "2026-04-30",
"last_reading_hours": 19157,
"readings_on_file": 6
},
"quote": {
"amount": 3000.0,
"source": "comment",
"symptom_text": "Hydraulic hose broke. $3,000 quote to repair.",
"vendor_id": null
},
"ratios": {
"age_pct_of_est_useful_life": 233.4,
"lifetime_spend_seen_pct_of_replacement": 7.7,
"quote_pct_of_book_value": null,
"quote_pct_of_replacement": 8.8,
"quote_plus_ttm_pct_of_replacement": 16.5,
"spend_seen_per_meter_hour": 0.14,
"ttm_spend_pct_of_replacement": 7.7
},
"replacement_benchmark": {
"as_of": "2026-08-25",
"est_replacement_cost": 34000,
"est_useful_life_yrs": 10,
"source": "market research 2026-08 (inferred, pending dealer quotes)"
},
"spend": {
"invoices_matched": 6,
"last_service_date": "2026-04-30",
"lifetime_spend_seen": 2604.51,
"out_of_scope_invoices": 0,
"out_of_scope_spend": 0.0,
"ttm_invoice_count": 6,
"ttm_spend": 2604.51
},
"thresholds": {
"clear_repair": null,
"fired": [
{
"label": "Replace at age",
"limit": 20.0,
"observed": 23.34,
"source": "asset.age_years",
"threshold": "replace_age_years",
"unit": "years"
},
{
"label": "Flag when repairs in 12 months reach",
"limit": 4.0,
"observed": 6,
"source": "spend.ttm_invoice_count",
"threshold": "max_repairs_ttm",
"unit": "repairs"
},
{
"label": "Replace when a repair reaches",
"limit": 200.0,
"note": "unit is fully depreciated \u2014 book value is $0, so any repair exceeds this threshold",
"observed": null,
"source": "economics.book_value",
"threshold": "quote_pct_of_book_value",
"unit": "% of book value"
}
],
"mapped_recommendation": "replace",
"threshold_version_id": 5,
"untestable": [],
"values": {
"lifetime_spend_pct_of_replacement": 200.0,
"max_repairs_ttm": 4.0,
"max_single_repair_usd": 10000.0,
"max_ttm_spend_usd": 20000.0,
"quote_pct_of_book_value": 200.0,
"quote_pct_of_replacement": 25.0,
"repair_below_quote_pct": 5.0,
"replace_age_years": 20.0,
"replace_meter_hours": 20000.0,
"ttm_spend_pct_of_replacement": 50.0
},
"verdict": "replace_indicated",
"version_label": "t1.4 2026-08-26"
}
}