Rulebook v1.0 draft (consolidated, unapproved)
Thresholds t1.4 2026-08-26
Invoices2,168
Pending extract0
Needs review38
Unconfirmed units195
Open findings0
Replacement costs9
Build173d256
Replace is indicated by thresholds already evaluated. The age-based replacement threshold fired: this unit’s age is 23.34 years against a replace-at-age line of 12.0 years, so it crossed the replacement threshold. The system’s mapped recommendation is therefore replace. For context only: the system also recorded a very small repair quote (amount = 3.0). With that captured amount, the quote check showed 0.0% of replacement cost versus a 25.0% clear-repair line, but the replace-at-age threshold still controls the decision here. Note: the comment says “hydraulic leak. quoted $3k” while the structured quote amount is 3.0 — please confirm the quote value; this does not change the age-based replace indication. Data gap: capacity_lbs is missing, which affects capacity-banded replacement benchmarks, but it does not block the age comparison that decided this case.

Figures used

  • facts.asset.age_years = 23.34
  • facts.thresholds.values.replace_age_years = 12.0
  • facts.quote.amount = 3.0
  • facts.ratios.quote_pct_of_replacement = 0.0
  • facts.thresholds.clear_repair.observed = 0.0
  • facts.thresholds.clear_repair.limit = 25.0

Rules cited

  • “replace_age_years”

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.1 provisional · compared in code, not by the model
LeverThis unitReplace atReading
Replace at age
asset.age_years
23.34 years 12.0 years AT OR OVER
Quote is under the clear-repair line 0.0% 25.0% UNDER

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.
0.0%
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 dateVendorTypeTotalFlagsDocument
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.

Outcome
Note (optional)
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": 3.0,
  "source": "comment",
  "symptom_text": "hydraulic leak.  quoted $3k",
  "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": 0.0,
  "quote_plus_ttm_pct_of_replacement": 7.7,
  "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": {
   "limit": 25.0,
   "observed": 0.0,
   "threshold": "repair_below_quote_pct",
   "unit": "%"
  },
  "fired": [
   {
    "label": "Replace at age",
    "limit": 12.0,
    "observed": 23.34,
    "source": "asset.age_years",
    "threshold": "replace_age_years",
    "unit": "years"
   }
  ],
  "mapped_recommendation": "replace",
  "threshold_version_id": 4,
  "untestable": [],
  "values": {
   "quote_pct_of_replacement": 50.0,
   "repair_below_quote_pct": 25.0,
   "replace_age_years": 12.0,
   "replace_meter_hours": 20000.0,
   "ttm_spend_pct_of_replacement": 30.0
  },
  "verdict": "replace_indicated",
  "version_label": "t1.1 provisional"
 }
}