CAM Reconciliation Skill

Year-end CAM reconciliation means shares, exclusions, gross-up, caps, admin fees and stops for every tenant, and one mistake invites an audit. Run it in one command and get a statement per tenant that foots.

CAM Reconciliation Skill cover

What it catches

SituationCodeLevel
Tenant shares add up to more than 100%shares_over_100error
Tenant square feet exceed the buildingtenant_sqft_over_buildingerror
Cap in the lease but no prior-year controllable amountcap_without_priorerror
Lease share differs from sf / building sfshare_override_differswarning
Exclusion that matches no expense (typo)unknown_exclusionwarning
Roof replacement, resurfacing, capital itemscapital_itemwarning
Negative expense linenegative_expensewarning
No estimates on filemissing_estimateswarning
True-up over 20% of estimateslarge_true_upwarning
Lease has no days in the yearlease_not_in_yearwarning
Controllable cap reduced the chargecap_appliedinfo
Variable expenses grossed upgross_up_appliedinfo
Base-year stop deductedbase_year_stopinfo
Landlord share for vacant spacevacancy_absorbedinfo

Proven on a labeled example

examples/oak-ridge-plaza-2025/ is a fictional 20,000 sf strip center's 2025 reconciliation: 12 expense lines (including a 60,000 roof replacement and an insurance refund) and 6 tenants with a 5% cap, a half-year lease, a gross lease with a 45,000 stop, a 9% share that should be 7.5%, a cap with no prior year and a typo in an exclusion. expected.json labels every flag and Brew Lab's statement to the cent (1,534.30 due); the tests assert that, that every statement foots, and that proration is by days.

What you get

Outputs in out/: reconciliation.csv (bill or credit per tenant), statements/<tenant>.md (a statement per tenant), lines.csv, findings.csv, report.md, summary.json. Exit 0 = ready to send; 1 = errors to fix first; 2 = an input problem.

Real CAM Reconciliation Skill report and passing tests from the labeled example

Quick start

./run_tests.sh
python3 -m camrec --expenses examples/oak-ridge-plaza-2025/expenses_2025.csv --tenants examples/oak-ridge-plaza-2025/tenants.csv \
  --year 2025 --building-sqft 20000 --occupancy 85 --name "Oak Ridge Plaza" --out out/

Inputs

  • Expenses CSV: Category, Amount, optional Pool (CAM/TAX/INS), Controllable (Y/N), Gross Up (Y/N).
  • Tenants CSV: Tenant, Sq Ft, Lease Start/End, Estimates Paid; optional Share Pct, Admin Fee Pct, Cap Pct, Prior Controllable, Base Year Amount, Exclusions (a|b), Pools (CAM|TAX).
  • --building-sqft (the denominator), --year, and --occupancy to gross up variable expenses (to 95% by default).

Use it from your agent

  • Claude Code plugin: this folder is a plugin (.claude-plugin/plugin.json). Try it with claude --plugin-dir ./cam-reconciliation-skill, or add the folder to your own plugin marketplace.
  • Skill only: copy skills/cam-reconciliation/ into ~/.claude/skills/ (or your agent's skills folder) and keep this folder where the agent can run python3 -m camrec.
  • No agent: the CLI works on its own; --help lists every flag.

Honest limits

  • It applies one common method (share x grossed-up expense, non-cumulative cap on controllable CAM, admin fee on capped CAM, stop, day proration). Leases differ; check each lease's definitions.
  • Cumulative caps, anchor-tenant denominators, and caps on taxes aren't modeled; use the share and stop columns to adjust.
  • It doesn't send statements or touch your accounting system.
  • Not legal or accounting advice.

Requirements

Python 3.9+ (tested on 3.10 and 3.13), no dependencies.

Format and license

Zip, 17 KB, v1.0, 14 files. Use and modify it for yourself and for clients you serve; no resale or redistribution of the kit itself. Full terms in LICENSE.txt.

FAQ

Cumulative caps?
Not modeled; non-cumulative caps on controllable CAM are.
Does it send statements?
No; it writes them for you to review and send.
Is it legal advice on my leases?
No.
How do I get the files?
Right after payment, Stripe’s confirmation page shows your download link.
Refunds?
Email hello@youraitools.co within 14 days if it doesn’t work and we can’t fix it.
Can I pay with crypto?
Yes. Pay the same price in USDC or USDT on Base, Ethereum, Arbitrum, Optimism, Polygon or Solana from the "Pay with crypto" button, with no account or KYC. We check the payment on-chain and show your download links as soon as it confirms.

Get CAM Reconciliation Skill

CAM reconciliation for every tenant: pro-rata shares, gross-up, caps, admin fee, base-year stops, statements that foot. $29 once, offline.

Save with a bundle

Pairs well with

Download$29

Bid Leveling Skill

Level subcontractor bids in one command: plug exclusions and gaps, flag thin allowances and outlier prices, check totals, rank. $29 once, offline.

View Bid Leveling Skill
Download$29

Inventory Reorder Point Skill

Reorder points, safety stock and order quantities for every SKU from a Shopify orders export, plus ABC classes, dead stock and overstock. $29 once.

View Inventory Reorder Point Skill
Download$29

Sales Commission Calculator Skill

Calculate sales commissions from a CRM deals export: tiered rates, accelerators, split deals, caps and clawbacks, with a statement per rep. $29 once.

View Sales Commission Calculator Skill

Related