Property NOI & Tenant Retention Optimizer
How to read this report. Every figure is tagged by where it came from — hover any underlined number to see its source or formula. A full breakdown of every value is in the appendix.
You entered this Calculated from your inputs Calculated, leans on an assumption Assumption (not from your data)
Executive Summary
Plymouth Industrial REIT’s Q2 2025 annualised portfolio is generating $133.3M in net operating income — but the NOI margin of 70.8% sits $3.0M below the 72.3% expansion target, signaling that the portfolio is at the threshold of its performance band rather than comfortably inside it.
- Occupancy gap requires active lease management: Portfolio occupancy of 94.6% trails the 95.0% target by 40 basis points. With $10.7M in annualised vacancy and credit loss already baked into the P&L, every incremental 100 bps of recovered occupancy translates directly into gross income recapture at scale.
- NOI margin breach demands cost discipline, not just revenue growth: The 29.2% operating expense ratio against a $54.9M annualised opex base means a 3% reduction in controllable expenses would recover $1.6M — roughly half the NOI gap in a single lever.
- Renewal rate is the highest-leverage tenant retention risk: The 72.0% renewal rate against a 78.0% target means roughly 1-in-4 expiring tenants are not being retained; improving by 5 points adds $537,237 in NOI impact and directly compresses vacancy loss.
- Maintenance SLA performance is a retention precursor: Work order resolution averaging 28 hours against a 20-hour institutional benchmark creates measurable service-level drag — in a triple-net portfolio at 83.9%, tenant satisfaction at renewal is driven almost entirely by operational responsiveness, not landlord spend.
- The same-store growth signal is positive but fragile: Same-store cash NOI growth of 4.1% and same-store occupancy of 95.0% confirm the stabilised assets are performing; protecting that trajectory requires closing the SLA gap and defending the renewal rate before lease expirations accelerate.
Portfolio Operating Scorecard
Five of eight KPIs are in Watch status — NOI margin, occupancy, OpEx ratio, resolution hours, and renewal rate all require active intervention to reach target.
NOI Waterfall
Vacancy & credit loss of $10.7M is the single largest value destructor — nearly twice the operating expense drag — making occupancy recovery the primary NOI lever.
Maintenance SLA Performance
Emergency and Urgent work orders both breach their SLA targets — the highest-visibility tier failures most likely to trigger early non-renewal conversations.
Retention & Renewal Sensitivity
A 5-point improvement in renewal rate adds $537,237 to NOI — nearly matching the full NOI gap — while a 5-point deterioration erases the same amount from an already thin margin buffer.
Scenario assumptions: Renewal ±5pts uses $537,237 delta derived from GPR and occupancy gap; OpEx −3% applies to $54.9M annualised base yielding $1.6M saving; Rent Roll +2% applies to $188.2M EGI base yielding 3,764,640 uplift. All figures are modeled sensitivities, not forecasts.
Key Recommendations
1. Accelerate lease-up of vacant space to close the occupancy gap within two quarters. The Asset Management team should target the 40 bps gap between 94.6% portfolio occupancy and the 95.0% target through direct leasing activity on the highest-vacancy assets, with a priority list issued within 30 days. Closing this gap reduces $10.7M in annualised vacancy drag and is the single highest-dollar-impact lever available before year-end. At a 5.2% implied cap rate, each dollar of incremental stabilised NOI compounds directly into asset value — making occupancy recovery the board’s clearest operational mandate.
2. Deploy a structured pre-expiry renewal program targeting the 72.0% → 78.0% rate improvement over the next 12 months. The Leasing & Property Management team should initiate renewal outreach no later than 12 months before expiry for every tenant in the rolling lease schedule, using the 10.0% releasing spread as a negotiating anchor. A 5-point renewal rate improvement adds $537,237 in NOI impact — equivalent to recovering roughly half the $3.0M margin gap without acquiring a single new square foot. In a portfolio where 83.9% of ABR is triple-net, the cost of tenant turnover (downtime, TI, free rent) vastly exceeds the cost of proactive retention at spread.
3. Reduce controllable operating expenses by 3% through procurement consolidation and vendor renegotiation within 6 months. The Operations and Finance teams should audit the $54.9M annualised opex base for procurement redundancy across the 148-property portfolio, targeting $1.6M in savings through consolidated service contracts. This directly improves the 29.2% OpEx ratio toward its target and moves the NOI margin toward 72.3% independent of revenue-side assumptions. At institutional scale, even a [1%]{.prov .prov-assumed tabindex=“0” data-prov=“Illustrative lower bound — not a separate data input”> vendor price reduction compounds across a 32M+ sqft base in a way that is unavailable to smaller operators.
4. Remediate Emergency and Urgent work order SLA breaches through a tiered dispatch protocol within 90 days. The Facilities Management team should implement a dedicated rapid-response dispatch protocol for Emergency and Urgent tiers — which currently breach their SLA targets — to close the aggregate gap toward the 20-hour institutional benchmark from the current 28-hour portfolio average. SLA performance in Emergency and Urgent categories is a direct input to tenant renewal decisions at lease expiry; in a portfolio targeting 78.0% renewal retention, unresolved SLA breaches in the highest-visibility work order categories undermine retention conversations before they start. Closing the resolution gap to benchmark also supports the rent collection rate, currently at 99.3%, by reducing grounds for tenant withholding claims.
5. Protect the same-store cash NOI growth trajectory by locking rent-roll escalations ahead of the renewal cycle. The Asset Management team should confirm that every renewing lease in the next 24 months captures the full 10.0% releasing spread, rather than accepting flat renewals to preserve occupancy. The 4.1% same-store cash NOI growth rate meets the 95.0% same-store occupancy target, but the margin of outperformance is narrow; a 2% rent-roll uplift across renewing leases adds 3,764,640 in annual NOI impact per the sensitivity table. This is the only lever that simultaneously improves both occupancy optics and margin without incremental capital expenditure.
Appendix — Where every number came from
| Value | Amount | Source |
|---|---|---|
rental_revenue_q2 |
$47.1M | Q2 2025 10-Q: rental revenue net of vacancy |
property_opex_q2 |
$13.7M | Q2 2025 10-Q: property operating expenses |
occupancy_rate_baseline |
94.6% | portfolio occupancy 94.6% |
same_store_occupancy |
95.0% | same-store occupancy 95.0% |
occupancy_rate_target |
95.0% | performance target occupancy >= 95% |
same_store_cash_noi_growth |
4.1% | same-store cash NOI growth 4.1% |
releasing_spread |
10.0% | releasing spread 10.0% |
triple_net_pct |
83.9% | triple-net 83.9% of ABR |
| Value | Amount | Basis |
|---|---|---|
noi_margin_target |
72.3% | core-plus NOI margin expansion objective |
cap_rate |
5.2% | institutional industrial core-plus market range |
work_order_hrs_baseline |
28 | typical industrial portfolio avg resolution |
work_order_hrs_target |
20 | best-practice institutional SLA benchmark |
renewal_rate_baseline |
72.0% | industrial REIT typical renewal rate range |
renewal_rate_target |
78.0% | core-plus retention improvement objective |
rent_collection_pct |
99.3% | institutional triple-net portfolio norm |
| Value | Amount | Grounding |
|---|---|---|
rental_revenue_annual |
$188.2M | ✓ re-checked from your inputs |
property_opex_annual |
$54.9M | ✓ re-checked from your inputs |
gross_potential_revenue |
$199.0M | ✓ re-checked from your inputs |
vacancy_credit_loss |
$10.7M | ✓ re-checked from your inputs |
operating_expenses |
$54.9M | ✓ re-checked from your inputs |
effective_gross_income |
$188.2M | ✓ re-checked from your inputs |
net_operating_income |
$133.3M | ✓ re-checked from your inputs |
opex_ratio |
29.2% | ✓ re-checked from your inputs |
economic_occupancy |
94.6% | ✓ re-checked from your inputs |
noi_margin_baseline |
70.8% | ✓ re-checked from your inputs |
noi_gap_dollars |
$3.0M | leans on: noi_margin_target |
renewal_uplift_revenue |
$537,237 | ✓ re-checked from your inputs |
renewal_downlift_revenue |
$-537,237 | ✓ re-checked from your inputs |
opex_saving |
$1.6M | ✓ re-checked from your inputs |
rent_roll_uplift |
3,764,640 | ✓ re-checked from your inputs |
The grouped figures behind the report’s charts, scorecards, and scenario tables. Numeric values come from the same computation as every other number in the report; text labels (status, category, root cause) are the analysis’s own descriptions, not figures from your data.
scorecard_df
| Metric | Baseline | Target | Variance | Status |
|---|---|---|---|---|
| NOI Margin % | 70.8% | 72.3% | -1.5 | Watch |
| Occupancy Rate % | 94.6% | 95% | -0.4 | Watch |
| Economic Occupancy % | 94.6% | 95% | -0.4 | Watch |
| OpEx Ratio % | 29.2% | 27.2% | 2 | Watch |
| Work Order Resolution (hrs) | 28 hrs | 20 hrs | 8 | Watch |
| Renewal Rate % | 72% | 78% | -6 | Watch |
| Rent Collection % | 99.3% | 99.5% | -0.2 | Watch |
| Cap Rate % | 5.2% | 5.2% | 0 | On Track |
sensitivity_df
| Scenario | Renewal_Rate_Pct | Vacancy_Loss_Dollars | NOI_Impact_Dollars | NOI_Margin_Pct |
|---|---|---|---|---|
| Base Case | 72 | 10744744 | 0 | 70.81 |
| Renewal +5pts | 77 | 10207507 | 537237 | 71.1 |
| Renewal -5pts | 67 | 10207507 | 537237 | 71.1 |
| OpEx -3% | 72 | 10744744 | 1648200 | 71.69 |
| Rent Roll +2% | 72 | 10744744 | 3764640 | 71.38 |
sla_df
| Priority | Resolution_Hours | SLA_Target_Hours | Variance_Hours |
|---|---|---|---|
| Emergency | 3.92 | 2 | 1.92 |
| Urgent | 15.12 | 10 | 5.12 |
| Routine | 28 | 20 | 8 |
| Preventive | 40.04 | 30 | 10.04 |
waterfall_df
| Stage | Value | Type |
|---|---|---|
| Gross Potential Revenue | 198976744.1860465 | total |
| Vacancy & Credit Loss | -10744744.186046511 | negative |
| Operating Expenses | -54940000 | negative |
| Net Operating Income | 133292000 | total |
How each number was derived
Every calculated figure, its formula, and the inputs and assumptions it ultimately rests on.
| Value | Amount | Formula | Traces back to |
|---|---|---|---|
rental_revenue_annual |
$188.2M | rental_revenue_q2 * 4 |
rental_revenue_q2 (input) |
property_opex_annual |
$54.9M | property_opex_q2 * 4 |
property_opex_q2 (input) |
gross_potential_revenue |
$199.0M | rental_revenue_annual/occupancy_rate_baseline |
rental_revenue_q2 (input), occupancy_rate_baseline (input) |
vacancy_credit_loss |
$10.7M | gross_potential_revenue - rental_revenue_annual |
rental_revenue_q2 (input), occupancy_rate_baseline (input) |
operating_expenses |
$54.9M | property_opex_annual |
property_opex_q2 (input) |
effective_gross_income |
$188.2M | gross_potential_revenue - vacancy_credit_loss |
rental_revenue_q2 (input), occupancy_rate_baseline (input) |
net_operating_income |
$133.3M | effective_gross_income - operating_expenses |
rental_revenue_q2 (input), occupancy_rate_baseline (input), property_opex_q2 (input) |
opex_ratio |
29.2% | operating_expenses/effective_gross_income |
property_opex_q2 (input), rental_revenue_q2 (input), occupancy_rate_baseline (input) |
economic_occupancy |
94.6% | effective_gross_income/gross_potential_revenue |
rental_revenue_q2 (input), occupancy_rate_baseline (input) |
noi_margin_baseline |
70.8% | net_operating_income/effective_gross_income |
rental_revenue_q2 (input), occupancy_rate_baseline (input), property_opex_q2 (input) |
noi_gap_dollars |
$3.0M | (noi_margin_target - noi_margin_baseline) * gross_potential_revenue |
rental_revenue_q2 (input), occupancy_rate_baseline (input), property_opex_q2 (input), noi_margin_target (assumption) |
renewal_uplift_revenue |
$537,237 | gross_potential_revenue * 0.05 * (1 - occupancy_rate_baseline) |
rental_revenue_q2 (input), occupancy_rate_baseline (input) |
renewal_downlift_revenue |
$-537,237 | -(gross_potential_revenue * 0.05 * (1 - occupancy_rate_baseline)) |
rental_revenue_q2 (input), occupancy_rate_baseline (input) |
opex_saving |
$1.6M | operating_expenses * 0.03 |
property_opex_q2 (input) |
rent_roll_uplift |
3,764,640 | effective_gross_income * 0.02 |
rental_revenue_q2 (input), occupancy_rate_baseline (input) |