Gather → Compare Condition → Attach Costs → Cite Lease → Build Pack

Move-Out Charges Evidence Pack Builder

Pulls the move-in and move-out condition records, the inspection photos, the repair cost backup, and the lease terms into one ordered pack for each deduction, so a deposit charge is documented and defensible the day it's made.

The Problem

The deduction was fair. The evidence was scattered. The dispute won.

Deposit deductions get disputed because the evidence is scattered or incomplete.

What Changes

Every charge backed by a record, from day one.

Builds a dispute-ready record - inspection photos, condition comparison, cost backup, lease terms - so deductions are documented and defensible from day one.

Humans stay in control: Your team decides the deductions. The agent gathers and orders the evidence behind each one. It produces a dispute-ready pack, your team reviews and sends it.

HOW THE AGENT WORKS

TRIGGERLLMAPIDECISIONACTIONWAIT
TRIGGERMove-Out LoggedFinal inspection filed for a vacated unit
APIPull Move-In RecordGet the baseline condition + photos
APIPull Move-Out RecordGet the final condition + photos
LLMCompare ConditionIdentify damage beyond normal wear
APIAttach Cost BackupPull repair invoices / estimates
LLMCite Lease TermsLink each charge to the lease clause
DECISIONBackup Complete?
ACTIONBuild Evidence PackAssemble ordered, dispute-ready record
ACTIONFlag for ReviewSend pack to the manager
The agent doesn't decide what to charge. Your team sets the deductions. The agent assembles the evidence behind each one - photos, comparison, cost backup, lease terms. It builds the record, your team stands behind it.

HOW TO BUILD IT

Three levels of depth. Pick the one that matches where you are.

For the ops person who needs to understand what's involved and brief their team.

Your RecordsInspections, photos, invoices
The AgentWorkflow engine + LLM
Your PackOrdered evidence per charge

WHAT YOUR TEAM PROVIDES ONCE

  • Inspection records - move-in and move-out, with photos
  • Repair cost source - invoices or your standard charge schedule
  • Lease templates - the clauses that govern deductions
  • Normal-wear standard - what your team treats as non-chargeable
  • Pack format - how you want the final evidence record laid out
What happens day-to-day: A resident moves out and the final inspection is filed. The agent gathers the move-in baseline, the move-out condition, the repair costs, and the lease clauses, then builds one ordered pack per charge. Your manager reviews a defensible record instead of hunting across four systems when a dispute lands.

For the IT person or technical lead who needs to scope the integration.

INQUIRY SOURCES

Inspection app
Photo store
AP / invoices

WORKFLOW ENGINE (N8N)

Trigger
PMS API - Pull condition records
LLM - Compare + classify damage
AP API - Attach cost backup
LLM - Cite lease clauses
Assemble evidence pack
Flag for review

CONNECTS TO

PMS (Yardi / AppFolio)Read: inspections, leases, tenant ledger
Photo / document storeRead: move-in + move-out photos
AP / accountingRead: repair invoices and estimates
PDF builder + notificationsAssemble the pack, send to manager
WITHOUT PMS API

Agent works from uploaded inspection and invoice files and outputs a structured pack outline for manual assembly. Slower, but the gathering and comparison still happen automatically.

WITH PMS API

Agent pulls condition records, photos, and invoices directly and assembles a complete pack per charge. Best experience.

For the person who wants to build this agent step by step. Each node below maps to an n8n workflow node.

TRIGGERNode 1
Trigger - Move-Out Logged
Webhook when a final move-out inspection is filed for a unit.
Output: { unit_id, tenant_id, moveout_inspection_id, moveout_date }
APINode 2
HTTP Request - Pull Condition Records
Fetch the matching move-in inspection + photos and the move-out inspection + photos for the same unit/tenant.
Output: { movein: {photos[], notes}, moveout: {photos[], notes} }
LLMNode 3
LLM - Compare Condition & Classify Damage
Vision model compares move-in vs move-out and separates chargeable damage from normal wear using your standard.
Output: [{ item, location, classification, evidence_photo_refs[] }]
You compare move-in and move-out condition for a unit and classify each difference.

For each difference, return:
- item: what changed
- location: room/area
- classification: chargeable_damage / normal_wear / pre_existing
- reason: one line, referencing the NORMAL-WEAR STANDARD below
- evidence_photo_refs: the move-in and move-out photo references that show it

Be conservative. If a difference plausibly fits normal wear, classify it normal_wear.
Respond ONLY with a valid JSON array.

NORMAL-WEAR STANDARD: {normal_wear_standard}
MOVE-IN: {movein_record}
MOVE-OUT: {moveout_record}
OUTPUT
[
  { "item": "Large carpet stain", "location": "master bedroom", "classification": "chargeable_damage", "reason": "Staining beyond normal wear per standard sec 3.", "evidence_photo_refs": ["mi_BR_02", "mo_BR_05"] },
  { "item": "Minor scuffs on hallway wall", "location": "hallway", "classification": "normal_wear", "reason": "Surface scuffing is non-chargeable per standard sec 1.", "evidence_photo_refs": ["mo_HALL_01"] }
]
APINode 4
HTTP Request - Attach Cost Backup
For each chargeable item, pull the matching repair invoice, or apply your standard charge schedule.
Output: [{ item, cost, source: invoice_id | schedule_ref }]
LLMNode 5
LLM - Cite Lease Clauses
Link each chargeable item to the lease clause that authorises the deduction.
Output: [{ item, lease_clause, clause_text }]
For each chargeable item, find the lease clause that authorises the deduction.

Return per item:
- item
- lease_clause: section reference
- clause_text: the short relevant excerpt

If no clause clearly authorises a charge, return lease_clause = "NONE FOUND" so a human can check.
Respond ONLY with a valid JSON array.

CHARGEABLE ITEMS: {chargeable_items}
LEASE: {lease_text}
DECISIONNode 6
Condition - Backup Complete?
IF every chargeable item has a cost source AND a lease clause → build the pack. ELSE → flag the items missing backup.
Output: Branch: COMPLETE (build) or INCOMPLETE (flag gaps)
ACTIONNode 7
Build Evidence Pack & Flag
Assemble a PDF per charge - photo comparison, cost backup, lease citation - and send to the manager to review and send.
Output: Dispute-ready pack built. Manager notified to review.
MVP vs Advanced — Where To Start
MVP — START HERE
  • Uploaded inspection files
  • Text condition comparison
  • Standard charge schedule
  • Manual lease clause lookup
  • Pack outline to a doc
  • Manager review by email
ADVANCED — ADD LATER

    Full Video Walkthrough Coming Soon

    From scattered records to a dispute-ready pack - step by step.

    Register to be notified

    Everything on this page is free to learn.

    When you're ready to build — do it yourself or bring us in.

    OTHER AGENTS IN LEASING & MARKETING

    Flags suspicious payment and identity patterns early
    Applies retention rules and cleans up sensitive documents on schedule
    Flags inconsistent screening criteria and risky policy language
    Standardises screening documentation and audit trails

    Frequently asked questions

    Move-Out Charges Evidence Pack Builder is an AI agent that builds dispute-ready records for deposit deductions.
    The deduction was fair. The evidence was scattered. The Move-Out Charges Evidence Pack Builder addresses this — it builds dispute-ready records for deposit deductions.
    No — your team stays in control. Your team decides the deductions. The agent gathers and orders the evidence behind each one. It produces a dispute-ready pack, your team reviews and sends it.