CapEx Detection in CAM Reconciliation: Catching Capital Expenditures Before They Enter Recoverable Pools

By Angel Campa, Founder, CAMAudit

Deterministic Rules, Not AI

CapEx screening uses five rules-based detectors applied to individual GL entries. No machine learning, no LLM calls, no statistical models. Every flag can be traced back to a specific rule and threshold you can verify.

Why CapEx Misclassification Matters

Capital expenditure misclassification is the #1 trigger for forensic tenant audits in commercial real estate. When a $200,000 roof replacement gets coded to account 5400 (Building Maintenance) instead of 1500 (Building Improvements), it silently enters the recoverable CAM pool. Every tenant in the building pays their pro-rata share of a capital project that should have been excluded.

The problem is structural: ERP systems like Yardi and MRI don't validate GL coding against lease recovery rules. They run the math on whatever is in the GL. By the time a year-over-year variance flags the spike, the capital expenditure is already inside the pool — and the burden of proof has shifted to you.

How CapEx Screening Works

CAMAudit's CapEx classifier evaluates every GL entry individually, before pool aggregation, using five rules:

1. Amount Threshold

Large one-time charges are the most visible CapEx signal. Entries at or above $25,000 are flagged at moderate confidence (0.60). Entries at or above $100,000 are flagged at high confidence (0.85). The rule uses absolute values, so credits and reversals are also caught.

2. Account Description Keywords

The classifier scans account descriptions and entry descriptions for known CapEx indicators:

  • High confidence (0.90): "capital improvement," "capex," "tenant improvement," "leasehold improvement"
  • Medium confidence (0.65): "replacement," "installation," "renovation," "construction," "remodel," "upgrade"

3. Account Code Prefix

Standard chart-of-accounts conventions place capital assets in specific ranges. Codes starting with 15xx, 17xx, or 18xx are flagged at 0.75 confidence. This catches entries that are correctly coded to CapEx accounts but may still be flowing into recoverable pools due to mapping errors.

4. Vendor Pattern

Vendors whose names contain "construction," "roofing," "paving," "demolition," "waterproofing," or contractor-type designations are flagged at 0.55 confidence. This is a lower-confidence signal — a roofing contractor may be doing a legitimate repair — but it's worth a second look when combined with other signals.

5. Amount + Keyword Combination

Entries over $10,000 that also contain a CapEx keyword are flagged at 0.80 confidence. This combination rule catches mid-range entries that individually might not trigger the amount threshold or keyword rule alone but together indicate probable capital work.

Real-World Examples

Roof Replacement Coded to Maintenance

A $180,000 charge for "Complete roof tear-off and replacement — Building C" coded to account 5420 (Roof Maintenance). The amount threshold rule flags it at 0.85, the keyword rule flags "replacement" at 0.65, and the vendor (a roofing contractor) adds a 0.55 flag. Three independent signals, all pointing to the same conclusion.

HVAC System Replacement

A $95,000 charge for "RTU replacement — units 3, 4, 7" coded to account 5410 (HVAC Repairs). The keyword rule catches "replacement" at 0.65, and the amount-keyword combo rule fires at 0.80. The IRS Betterment/Restoration/Adaptation test under Rev. Proc. 2015-82 would classify a full RTU replacement as a restoration — capital, not operating.

Parking Lot Reconstruction

A $250,000 charge for "Mill and overlay — main parking structure" from "National Paving Inc" coded to account 5500 (Grounds Maintenance). Every rule fires: amount threshold (0.85), vendor pattern (0.55), and amount-keyword combo (0.80). A full mill-and-overlay is a capital project under both GAAP and IRS regulations.

Integration with Reconciliation

CapEx screening runs independently of the reconciliation calculation. When you run a reconciliation and unreviewed CapEx flags exist for that property/year, the job includes an advisory warning. The calculation proceeds — no gates, no blocks — but your team sees the warning before finalizing.

This is intentional. Blocking reconciliation on unreviewed CapEx flags would create operational friction. The goal is visibility: surface the problem, let your team decide the priority, and create an audit trail of the review decision.