Gated Rentals — Internal Reports

One place for every dashboard. Categorized by domain, sliceable by site.

Live ready to view To migrate exists elsewhere, moving in Planned not built yet External still lives outside
This is the destination for all property-management reporting and operator workflows. Existing dashboards on Crosbyprodinternal (revrec, cash kiosk, Plaid, crosby-dashboard, daily KPI, rent roll) get re-implemented here in the same categories, sliced by site. The data work-horse is analytics-01 — it runs the report generators and pushes artifacts to this repo. (Crosbyprodinternal is 20.84.50.106; the grprod tunnel serves the legacy Flask apps + Abhi's cron emails from there.)
Employee tools — simple wrappers for the CRM tasks staff struggle with
Planned

Add a lead

One-page form. Submit creates the Dataverse lead in the right tenant. Bypasses the heavyweight CRM UI.

CrosbyWillis
Planned

Add a contact

One-page form. Creates or updates the Dataverse contact and de-dupes by phone.

CrosbyWillis
Planned

Log a walk-in or phone call

Two-click activity capture so the CRM activity log actually reflects what happens on the front desk.

CrosbyWillis
Planned

Request a refund

One-page form that kicks off the refunds workflow with SODA inputs. No more reverse-invoice surgery in CRM.

CrosbyWillis
Communications — call analytics, email, SMS
Live

Teams Phone activity

Inbound, outbound, missed calls. Per-user, per-day, per day-of-week. Hour-of-day heatmap. Repeat-caller chains. Unknown prospects with 3 or more calls and no CRM match — exported as a leads-to-add CSV.

WillisCrosbyCross-site
Live

Inbound email volume + triage

Per-inbox volume across PM + AuthNet salesreceipts + LiveWire check notifications. Categorized + flagged as needs-action vs no-action so the dashboard surfaces the real triage list (unmatched payments, external inquiries) and de-emphasizes automated digests.

WillisCrosbyCross-site
Planned

SMS / Twilio volume

Outbound applicant reminders + inbound replies. Failed-delivery + opt-out rate.

WillisCrosby
Customer lifecycle — inquiry through resident
Live (v0)

Applicant funnel

Inquire → tour → application → screening → approval → move-in. Conversion per stage, time-in-stage, drop-off by source: Facebook / Google / drive-by / referral / sign.

WillisCrosbyCross-site
Live

Lead source attribution

Per source: call volume, applications submitted, approval rate, weekly rent activated, effective CAC. Joins voice-report unknown-callers + CRM signup-source.

WillisCrosby
To migrate

Plaid IDV / income

Plaid identity-verification + income + bank-income + payroll-income results per applicant. Currently on Crosbyprodinternal: /crosbyplaidresults (Flask, port 8080).

CrosbyWillis
Live

Tour sign-in log

Tour visitors cross-referenced to leads. Suggested next-action per row + buttons (Add lead / Log call / Log email / Send magic-link app invite). Sourced from CRM gr_toursignin. Willis parity blocked on #70 (entity creation).

CrosbyWillis
Live (new)

Call ↔ CRM reconciliation

For every call in 28 days: is it already in CRM? Is the caller a lead, applicant, contact, or unknown? Every gap gets a one-click action button. Auto-wire to CRM is queued (#132).

CrosbyWillis
Revenue + financials — invoices, AuthNet, RevRec, deposits, refunds, AR
Live (replica)

Revenue recognition

Weekly rent recognition schedule, deferred revenue, period close. Currently on Crosbyprodinternal: /revrec port 5009 + dashboard at port 6231; cron at /var/www/cronjobs/revrec every 30 min.

CrosbyWillis
To migrate

Rent roll

Active leases × rent × occupancy state × discount class. Will surface three columns: base product rent, time-based move-in discount, customer-based discount. Currently /var/www/cronjobs/rentroll/billing_validation_job.py on Crosbyprodinternal (06:00 UTC daily, xlsx email). Port + billing-end-vs-move-out logic fix per #154.

CrosbyWillisCross-site
Live

Cash kiosk activity

Onsite kiosk transactions via the ACH-encrypted JPMC pipeline. Per-kiosk volume, decline reasons, reconciliation status. Today: 4 Azure Functions + /ckreports FastAPI port 8000.

CrosbyWillis
Live

Deposits

Active deposits held per lease — security, pet, FOB, electrical. Sourced from CRM gr_unitleases. SODA pre-stage flag is the next layer.

CrosbyWillis
Live (v1)

Refunds backlog + health

Open refunds, age, dollars; health flags for missing deposits/damages/invoice-status fields. Sourced from CRM gr_invoicerefund. Proper state machine + workflow comes with #48 / #113 — this view surfaces the failure modes the constraint-driven workflow will prevent.

CrosbyWillisCross-site
Planned

SODA — move-out reconciliation

Per pending move-out: deposit on file, open invoice total including pending Wild Energy power-bill close, cleaning + damage line items, projected refund-check amount. Drives the 30-day cycle from move-out to refund check.

CrosbyWillis
Planned

Wild Energy power-bill close pipeline

Status of the automated job that queries Wild Energy after invoice-period close and generates the resident power invoice — feeds SODA. Surfaces backlog and stuck residents.

CrosbyWillis
Planned

AuthNet payment health

Success / decline rates, ACH return reasons, recurring Customer Profile skipped charges, retry success.

CrosbyWillisCross-site
Live

Accounts receivable aging

Future / 0–30 / 31–60 / 61–90 / 90+ buckets, per lease. Sourced from CRM invoicedetails.gr_balanceowe. Per ADR-0019 — customer-facing AR aging sources from CRM, not BC.

CrosbyWillis
Live (v1)

BC ↔ CRM delta — Zelle

BC-posted Zelle GL activity per period (Crosby GL 10470 in GRFIS1, Willis GL 10530 in GRFIS2). The reconciliation view per ADR-0019. CRM-side column pending payment-method field discovery.

CrosbyWillis
External

BC accounting roll-up

Internal financials, inter-company, vendor activity. Stays in Business Central per the customer-vs-vendor split.

All entities
Property operations — units, maintenance, move-in / out, residents
Planned

Occupancy + unit status

Live unit grid per site: occupied / vacant-ready / vacant-not-ready / maintenance-hold. Days-vacant, churn signals.

CrosbyWillisCross-site
To migrate

Maintenance backlog

Open work-orders by property, age, SLA breach, vendor performance, parts pipeline. Currently on the finrep LXC at maintenance.gatedrentals.com — folds into the platform.

CrosbyWillis
Planned

Move-in / move-out throughput

WiFi PPSK provisioned + Assa Abloy locks + SODA generated. Time-to-ready after move-out.

CrosbyWillis
Planned

Move-out inspection form

Structured PM checklist that feeds the SODA workflow's damage line items. Per-room damage classification using the canonical catalog's deposit-forfeiture products. Photos + signatures.

CrosbyWillis
Planned

Inspection cadence

Routine + annual inspections, pass / fail rate, follow-up actions outstanding.

CrosbyWillis
KPIs + executive — rollups for daily / weekly review
To migrate

Daily KPI digest

Cross-domain summary: occupancy %, weekly rent activated, calls answered, applications submitted, arrears, work-orders open. Currently /var/www/cronjobs/dailykpi/kpi.py on Crosbyprodinternal (06:00 UTC daily, email). Port + dashboard pending (#96 + #155).

CrosbyWillisCross-site
Planned

Kredifi screening status

Sanitized status view per applicant: in-flight, awaiting docs, scoring complete, blocked. No PII in the dashboard. Fires from AuthNet webhook (#74). Hits Kredifi API — entity/storage shape TBD.

CrosbyWillis
To migrate

crosby-dashboard (legacy)

Flask app aggregating Crosby ops views (port 7000 on Crosbyprodinternal, served via /crosby* on grprod tunnel). Specific tabs to inventory and re-implement here.

Crosby

Source: github.com/Gated-Rentals/gr-reports. Generators live in gatedrentals-platform under tools/*. Refresh cadence: cron on analytics-01 pushes fresh artifacts directly to this repo; CF Pages auto-deploys.