Rent Comp Intake
Workflow purpose
Take a raw rent comp observation and move it through the reference layer's update flow so market rent benchmarks stay live. Ingest, validate, normalize, propose, approve (when needed), derive.
Trigger conditions
- Explicit: "I shopped X property; capture comps", "new 3rd-party export", "log comps from call".
- Implicit:
workflows/market_rent_refreshdetects a comp bundle; PM drops raw data intoreference/raw/rent_comp/. - Recurring: ad hoc; any market-survey cycle.
Inputs (required / optional)
| Input | Type | Required | Notes |
|---|---|---|---|
| Raw comp records | table / json | required | property, unit_type, asking rent, concessions, source |
| Normalization rules | yaml | required | overlay |
| Current market_rent_benchmark | csv | required | to compute delta |
Outputs
| Output | Type | Shape |
|---|---|---|
| Validated raw records | file | reference/raw/rent_comp/<yyyy>/<mm>/ |
| Normalized records | file | reference/normalized/market_rents__{market}_mf.csv |
| Change log entries | file | append to archives/change_log.jsonl |
| Approval request (if above threshold) | request | per overlay delta rule |
Required context
Asset_class, segment, market, submarket.
Process
- Validation. Every raw record validated against
_core/schemas/reference_record.yaml+ category schema. Missing fields surfaced. - Normalization. Apply overlay rules: concession adjustments, unit-type normalization, effective rent math.
- Magnitude delta check. Compare proposed normalized value to current benchmark. If delta above overlay threshold, open
approval_requestper reference update flow before promotingstatus=approved. - Promote to normalized file. Upsert with
prior_reference_idlinkage;status=proposedif gated or autoapprovedotherwise. - Derived recomputation. Trigger re-derive of any
derived/file that depends on this category. - Change log entry. Append to
archives/change_log.jsonlwith old/new, source, confidence, proposer/approver. - Source integrity check. Verify source_type and source_date; sample-tagged sources never promote to
approvedautonomously. - Confidence banner. Record
as_of_dateandstatuson the normalized record.
Metrics used
None directly. Feeds metrics that rely on market_rent_benchmark: market_to_lease_gap, loss_to_lease, rent_growth_new_lease.
Reference files used
reference/raw/rent_comp/reference/normalized/market_rents__{market}_mf.csvreference/normalized/comp_normalization_rules__middle_market.yaml
Escalation points
- Magnitude delta above threshold: regional / AM per reference flow.
- Source integrity concern (unverified source, stale date): regional verification.
Required approvals
- Market rent reference update above delta threshold (per reference update flow).
Failure modes
- Promoting shopped comps without concession normalization. Fix: normalization rules overlay governs.
- Using sample-tagged third-party data as approved. Fix: sample never auto-approved.
- Skipping the derived recomputation. Fix: step is mandatory on every normalized update.
- Silent overwrite of prior record. Fix:
prior_reference_idlinkage.
Edge cases
- Conflicting comps from two sources: surface both; overlay may prefer higher-confidence source; operator resolves.
- Comp for unit type not in benchmark: new row; operator decides whether to add unit type to benchmark.
- Concession-heavy new supply: effective rent math must apply; surface nominal and effective.
Example invocations
- "Log the shopped comps from the Charlotte South End tour."
- "Ingest the latest 3rd-party export and propose updates."
- "Update the Ashford Park submarket benchmark with these three comps."
Example outputs
Output — Rent comp intake (abridged, three comps for South End)
Validation. All three records pass schema.
Normalization. Applied concession and unit-type normalization per overlay.
Delta check. One comp produces a magnitude delta above overlay threshold; approval_request opened per reference update flow.
Normalized file. Two records upserted as approved; one held as proposed pending approval.
Change log. Three entries appended.
Derived. market_to_lease_gap recomputation triggered; downstream skills notified.
Confidence banner. comp_normalization_rules__middle_market@2026-03-31, status=starter. Raw source types surfaced per record.