Reports catalog

Every internal dashboard, what it does, what it pulls from, and the logic underneath. Read this first if you are new to the operation.

Each entry lists: what it shows, who reads it, source (where the data is pulled from), logic (the meaningful joins / filters / business rules), and cadence. Reports without a link are still planned. The process map shows where each report fits in the lifecycle.
Customer lifecycle & funnel
LiveFunnelOpen →

Where every lead is in the acquisition pipeline — inquiry → tour → application → payment → lease.

Audience
PM, owner. Daily check during the leasing season.
Source
portal-postgres: lead_inbound, applicant, applicant_state_transitions, lease. Dataverse is read-only here.
Logic
Stage = latest state in applicant_state_transitions. Activities (tour, call) are joined from lead_inbound rows where kind in ('tour','callback','inquiry'). Site filter via site_id.
Cadence
Live (per-request, no cache).
LiveTour sign-in logOpen →

Walk-ins + scheduled tours, who hosted, did it convert.

Audience
PM at end of day; owner weekly to spot patterns.
Source
Dataverse gr_toursignin on Crosby; placeholder on Willis (entity not yet created — task #70).
Logic
Cross-references lead_inbound for tours booked via /api/intake/tour with gr_toursignin rows to flag scheduled-but-no-show.
Cadence
Snapshotted nightly, displayed live.
LiveTouchpoint matrixOpen →

Per-lead grid of all known contact events — call, email, SMS, walk-in, application step. Reads as a journey.

Audience
PM doing follow-up triage; owner during weekly review.
Source
Dataverse activitypointer (phone/email/appointment), lead_inbound rows, applicant_state_transitions.
Logic
Last-contacted-via-X flags computed per the KPI report logic (task #97). Bucketed by age band (0–3d, 4–7d, 8–30d, >30d).
Cadence
Snapshotted nightly.
LiveCall ↔ CRM reconciliationOpen →

Phone activity that did not get attached to a lead/contact, and vice versa.

Audience
PM for cleanup; ops for spotting orphan phone records.
Source
Teams calling activity (planned ACS once #178 lands), Dataverse phonecall, lead, contact.
Logic
Phone number normalization (E.164), then left-join phonecall to lead/contact on normalized number. Unmatched rows render as backlog.
Cadence
Daily 06:00 CT.
Revenue & finance
LiveRevenue + deposits + refunds (RevRec)Open →

Period revenue with proper deferred-vs-earned treatment, deposits liability, refunds netted. The single number for "how much did we earn this period".

Audience
Owner monthly close; PM mid-month for pacing.
Source
Dataverse salesinvoice + salesinvoicedetail, joined to product → GL account map (table #159), joined to lease move-in/out dates.
Logic
Period bearing — rent earned ratably between billing-cycle-start and the earlier of cycle-end and move-out. Deposits stay in liability until SODA finalization, then split refund/forfeit. Excludes returned-deposit lines from revenue (the bug fix in #63).
Cadence
Live with period presets (All / YTD / MTD / QTD / Last month).
LiveAR agingOpen →

Open invoice balances bucketed 0–30 / 31–60 / 61–90 / 90+ by tenant.

Audience
PM for collection follow-ups; owner for risk monitoring.
Source
Dataverse salesinvoice, customerpayment. Soon: per-lease subledger (ADR-0022).
Logic
Open balance = invoice_total − payments_applied. Aging from invoice due_date. Drill-through to per-invoice ledger.
Cadence
Nightly snapshot, displayed live.
LiveActive lease depositsOpen →

All open security deposit liability — by lease, by tenant, by site.

Audience
Owner (liability reconciliation); PM ahead of move-outs.
Source
Dataverse salesinvoicedetail filtered to deposit product, less applied refunds/forfeits.
Logic
Deposit posted − deposit released (refund line or forfeit-to-revenue line). Tied to lease, surfaced at the lease level even though the invoice may have been issued pre-lease.
Cadence
Nightly snapshot.
LiveRefunds backlog + healthOpen →

Refunds owed but not yet disbursed — split by reason (SODA refund / overpayment / cancellation / escheatment timer).

Audience
PM for follow-up; owner to spot stuck money.
Source
Dataverse customerrefund + SODA finalization rows. Soon: portal refund table from #113.
Logic
"Owed" = SODA refund_amount or unallocated overpayment. "Disbursed" = AuthNet refund txn OR check issued OR escheated. Aging from refund_due_date.
Cadence
Nightly snapshot.
LiveCash kiosk activityOpen →

Every cash kiosk deposit, by site, by date, with the linked applicant or lease.

Audience
PM (verify cash got applied); accountant (reconcile to bank).
Source
Kiosk vendor export (TPN). Migrated from Crosbyprodinternal /ckreports.
Logic
Per-deposit detail. Period slicing. Drill-through to the matched invoice/payment. Surfaces unmatched deposits (no linked applicant/lease) for cleanup.
Cadence
Nightly ingest from kiosk export emails.
LiveBC ↔ CRM delta (Zelle)Open →

Where bank-recorded Zelle payments differ from CRM-recorded payments. This is the only joint BC/CRM report.

Audience
Accountant (close-out); owner (audit).
Source
Business Central bank ledger (Amegy + Origin), Dataverse customerpayment. BC pulled via the finrep LXC 114 SP.
Logic
Left-join BC bank rows with method=Zelle to CRM payment rows by amount + date window + payer-name fuzzy. Unmatched rows surface as the delta backlog.
Cadence
Daily.
Operations & communications
LiveEmail volume reportOpen →

All inbound to the four shared PM mailboxes, categorized — payments, leads, support, internal — plus LiveWire check images and AuthNet receipts.

Audience
PM (find a specific email); accountant (find LiveWire checks); owner (see staffing load).
Source
Microsoft Graph Mail.Read scoped to the four mailboxes via Application Access Policy.
Logic
Heuristic categorizer (sender + subject + body keywords). LiveWire and AuthNet are parsed for payer + amount and surfaced as unmatched-payments CSV for reconciliation.
Cadence
Nightly.
LiveVoice reportOpen →

Inbound calls, who answered, average handle time, missed calls per site.

Audience
PM (see what calls came in overnight); owner (staffing).
Source
Teams calling activity XLSX export. Soon: ACS call records once #178 lands.
Logic
Per-call rows with duration, direction, answered/missed, link to CRM contact if matched.
Cadence
Daily after the AM XLSX upload.
LiveLease entity scrubOpen →

Which fields on gr_unitleases are actually used, which are CRM cruft, which are stale vs the per-lease subledger.

Audience
Engineering (data hygiene); owner (signing off on field deprecations).
Source
Dataverse schema walk + value-distribution sample.
Logic
Per-field non-null %, distinct count, last-changed timestamp. Cross-references the subledger ADR for which fields are derived vs canonical.
Cadence
Manual run; rerun before any schema cleanup PR.
Process & system reference
LiveProcess mapOpen →

Mermaid diagrams of every stage from lead source through move-out. Who owns what, when, and which system holds the record.

Audience
New employees on day one; engineering when planning changes; owner during architecture reviews.
Source
Hand-authored from the ADR set (0001–0031) + system inventory.
Logic
Ten sections: lead sources, applicant flow, payment+screening, move-in prep, resident steady state, exit/SODA, role responsibility, system-of-record matrix, external integrations, failure paths.
Cadence
Updated on ADR merge.
Planned / in flight
PlannedPayments dashboard (#73)

AR aging + payments-received + AuthNet daily settle in one place. Splits AR from this catalog into a comprehensive payments-side view.

Source
Dataverse customerpayment, AuthNet settle reports, portal payment.
Why we need it
Single place to answer "where is this resident's money this week".
PlannedFunnel v2 stage conversion (#103)

Cohort conversion rates between funnel stages with leakage callouts. Replaces the current rail-count view with a true conversion analytic.

PlannedGL journal entries view (#123)

Materialized DR/CR view over portal payment + invoice rows so the accountant has a real journal without exporting BC.

PlannedDaily / weekly KPI rollup

The single morning email. Aggregates funnel, payments, AR delta, work-order backlog, voicemail backlog per site.

PlannedMaintenance backlog (#107–#109)

Open work orders by site, by priority, by age; technician load; SLA breach flags. Awaits maintenance-app migration from finrep LXC.

See Management gaps for the prioritized list of what is still missing from a PM perspective and how each gap maps to a delivery task.