In November 2025, I was approached by a venture-backed PropTech startup to build an AI system that optimizes rent prices in real-time across thousands of units. The pitch: "Help landlords maximize revenue by predicting exactly how much each tenant can afford to pay." The implied outcome: extract maximum rent from people who have no choice but to pay. I declined. This article is about why—and what's really happening in the intersection of housing, AI, and late-stage capitalism.
The Crisis by the Numbers: February 2026
Let's start with the data that keeps getting worse:
- Median home price in USA: $412,000 (up from $240,000 in 2020)
- Price-to-income ratio: 8.1x in major cities (historically sustainable level: 3-4x)
- Median rent (1-bedroom, major cities): $2,100/month (up 42% since 2020)
- Homeownership rate (Millennials age 30-35): 43% (vs. 61% for Boomers at same age)
- Cost-burdened renters (paying >30% income on rent): 52% of all renters
- Homelessness in USA: 653,000 (up 18% since 2022)
Meanwhile, in my home country of Nepal, the median home price in Kathmandu is $180,000—which sounds cheap until you realize median household income is $4,800/year. Housing affordability is a global crisis, not just an American problem.
How AI Is Being Used in Housing: The Technical Reality
PropTech companies promise "efficiency" and "transparency." Here's what they're actually building:
1. Algorithmic Rent Pricing (Rent Maximization)
import numpy as np
from sklearn.ensemble import RandomForestRegressor
class AlgorithmicRentPricing:
"""
AI system used by property management companies to optimize rent.
Companies like RealPage, Yardi, and others deploy these at scale.
The goal: Charge the maximum rent the market will bear.
The effect: Coordinated rent increases across entire markets.
"""
def __init__(self):
self.model = RandomForestRegressor()
self.data_sources = [
"competitor_pricing",
"local_income_data",
"employment_trends",
"tenant_payment_history",
"move_out_risk_scores"
]
def calculate_optimal_rent(self, unit_data: dict, market_data: dict):
"""
Determine maximum rent you can charge without losing tenant.
"""
# Base rent from comparable properties
comparable_rent = market_data['median_rent_similar_units']
# Adjustment 1: Supply and demand
vacancy_rate = market_data['local_vacancy_rate']
if vacancy_rate < 0.05: # Tight market
supply_multiplier = 1.15 # Charge 15% premium
elif vacancy_rate > 0.10: # Loose market
supply_multiplier = 0.95 # Small discount
else:
supply_multiplier = 1.0
# Adjustment 2: Tenant's ability to pay
# This is the ethically questionable part
tenant_income = unit_data.get('tenant_income', market_data['median_income'])
max_affordable = tenant_income * 0.35 # 35% of income (already cost-burdened!)
# Adjustment 3: Move-out risk
# If tenant is likely to move, don't raise as much
move_out_probability = self.predict_move_out_risk(unit_data)
if move_out_probability > 0.4:
retention_discount = 0.97 # 3% discount to keep them
else:
retention_discount = 1.0
# Adjustment 4: Market collusion (the illegal part)
# RealPage was sued for this in 2023, but similar systems persist
competitor_pricing = market_data.get('realtime_competitor_prices', [])
if competitor_pricing:
# If competitors are raising prices, you can too
market_trend = np.mean([p['recent_increase'] for p in competitor_pricing])
trend_multiplier = 1 + market_trend
else:
trend_multiplier = 1.0
# Calculate optimal rent
optimal_rent = (
comparable_rent *
supply_multiplier *
retention_discount *
trend_multiplier
)
# Cap at maximum affordability
optimal_rent = min(optimal_rent, max_affordable)
return {
"recommended_rent": optimal_rent,
"current_rent": unit_data.get('current_rent'),
"increase_amount": optimal_rent - unit_data.get('current_rent', 0),
"increase_percentage": (optimal_rent / unit_data.get('current_rent', 1) - 1) * 100,
"justification": "Market rate adjustment based on comparable properties"
}
def predict_move_out_risk(self, unit_data: dict):
"""
ML model to predict if tenant will leave.
Trained on historical data of tenant behaviors.
"""
risk_factors = {
"late_payments_last_year": unit_data.get('late_payments', 0) * 0.15,
"complaints_filed": unit_data.get('complaints', 0) * 0.10,
"lease_renewal_timing": (12 - unit_data.get('months_until_renewal', 12)) * 0.05,
"income_to_rent_ratio": max(0, (unit_data.get('rent') / unit_data.get('income', 1) - 0.3)) * 0.25
}
total_risk = sum(risk_factors.values())
return min(1.0, total_risk)
# Example: Two identical apartments, different tenant incomes
unit_a = {
"current_rent": 1800,
"tenant_income": 72000, # $72k/year
"months_until_renewal": 2,
"late_payments": 0,
"complaints": 0
}
unit_b = {
"current_rent": 1800,
"tenant_income": 50000, # $50k/year (lower income)
"months_until_renewal": 2,
"late_payments": 0,
"complaints": 0
}
market_data = {
"median_rent_similar_units": 1900,
"local_vacancy_rate": 0.04, # Tight market
"median_income": 60000
}
pricer = AlgorithmicRentPricing()
result_a = pricer.calculate_optimal_rent(unit_a, market_data)
result_b = pricer.calculate_optimal_rent(unit_b, market_data)
print(f"Unit A (higher income): ${result_a['recommended_rent']}/month (${result_a['increase_amount']:.0f} increase)")
print(f"Unit B (lower income): ${result_b['recommended_rent']}/month (${result_b['increase_amount']:.0f} increase)")
# Output shows: Higher-income tenant gets larger rent increase
# System extracts maximum from each tenant based on ability to pay
This is real. RealPage, which provides pricing software to landlords managing 13+ million units, was sued in 2023 for anticompetitive price-fixing. The lawsuit alleges their algorithm allowed landlords to collectively raise rents beyond what a competitive market would support.
Other Ways Tech Is Used (For Better and Worse)
2. Tenant Screening Algorithms
- The pitch: Reduce risk for landlords by predicting good tenants
- The problem: Algorithms trained on biased data systematically discriminate against minorities, single parents, and those with past financial hardship
- The impact: People denied housing based on opaque AI scores, no recourse to appeal
3. Corporate Home-Buying Algorithms
- Companies: Invitation Homes, American Homes 4 Rent, Blackstone-backed firms
- Strategy: AI identifies undervalued homes, automated offers within hours
- Scale: 574,000 single-family homes owned by institutional investors (2026)
- Effect: First-time buyers outbid by algorithms with instant cash offers
4. Short-Term Rental Optimization (Airbnbification)
- AI systems: Predict when to convert long-term rental to Airbnb for max profit
- Result: Entire neighborhoods converted to tourist accommodations
- Example: Barcelona lost 10,000 long-term units to Airbnb; Venice, Lisbon similar stories
What PropTech Could Do Right (But Mostly Doesn't)
Not all housing technology is extractive. Here are examples that actually help:
Positive Use Cases:
- Affordable housing lotteries: Transparent algorithms for allocating below-market units
- Modular construction: AI-optimized prefab designs reducing costs by 20-40%
- Energy efficiency upgrades: ML predicting best weatherization ROI, reducing tenant utility costs
- Housing voucher matching: Algorithms helping people find landlords who accept Section 8
- Community land trust management: Tech enabling cooperative ownership models
The difference: these optimize for access and affordability, not profit maximization.
The Real Solutions: Policy Over PropTech
After analyzing the housing market as both a developer and someone who can't afford to buy in most USA cities despite earning six figures, I'm convinced: technology alone won't fix this.
What Actually Works (Based on International Evidence):
- Massive social housing programs: Vienna: 60% of residents in public/co-op housing, affordable and high-quality
- Vacancy taxes: Vancouver's 3% empty homes tax reduced vacancies by 25%
- Strict rent control: Germany's rent-brake law limiting increases to 10% above local average
- Land value tax: Singapore's model capturing land value appreciation for public benefit
- Ban corporate landlords: Copenhagen limits for-profit ownership of residential property
- Upzoning: Tokyo's permissive zoning keeps rents affordable despite being largest metro in world
Notice what's NOT on this list: AI rent optimization, blockchain property records, or any other PropTech buzzwords.
What I'm Building Instead
I've redirected my housing-related development work toward actually useful systems:
class AffordableHousingTech:
"""
Technology that helps increase housing access, not extract maximum profit.
"""
def affordable_unit_matching(self, applicant_data, available_units):
"""
Match low-income applicants to affordable units transparently.
Used by housing authorities for fair allocation.
"""
# Score based on need, not profit potential
need_score = (
applicant_data['income_level'] * -1 + # Lower income = higher priority
applicant_data['months_homeless'] * 10 + # Longer homeless = higher priority
applicant_data['family_size'] * 5 + # Larger families = higher priority
applicant_data['local_ties'] * 3 # Community connections matter
)
# Transparent matching algorithm
# No hidden factors, no discrimination
matched_units = [
unit for unit in available_units
if unit['rent'] <= applicant_data['income'] * 0.30 # Truly affordable
]
return {
"recommended_units": matched_units,
"priority_score": need_score,
"score_explanation": "Based on income, housing insecurity, family size",
"appeals_process": "Contact housing authority within 30 days"
}
def energy_efficiency_roi(self, building_data):
"""
Predict ROI of efficiency upgrades that reduce tenant costs.
Goal: Lower utility bills, not higher rents.
"""
upgrades = [
{"name": "Insulation", "cost": 8000, "annual_savings": 1200},
{"name": "Heat pump", "cost": 12000, "annual_savings": 1800},
{"name": "LED lighting", "cost": 1500, "annual_savings": 400},
{"name": "Smart thermostats", "cost": 800, "annual_savings": 250}
]
recommendations = []
for upgrade in upgrades:
payback_years = upgrade['cost'] / upgrade['annual_savings']
if payback_years < 10: # Good investment
recommendations.append({
**upgrade,
"payback_years": payback_years,
"tenant_benefit": upgrade['annual_savings'], # Goes to tenant, not landlord
"climate_benefit": upgrade['annual_savings'] * 0.5 # kg CO2 avoided
})
return recommendations
Conclusion: Housing Is a Human Right, Not an Investment Optimization Problem
The housing crisis isn't caused by insufficient technology. It's caused by treating homes as financial assets instead of places to live. AI rent optimization doesn't solve the problem—it accelerates it.
As developers, we need to ask: What are we optimizing for? If the answer is "maximum extraction of wealth from people who need shelter," we're part of the problem.
We can build technology that genuinely helps:
- Tools for community land trusts and cooperative ownership
- Transparent allocation systems for affordable housing
- Energy efficiency optimizations that reduce tenant costs
- Construction automation that lowers building costs
- Housing policy simulations to predict intervention outcomes
But ultimately, we need policy change more than we need apps. We need to build millions of homes, regulate speculation, tax vacancy, and treat housing as infrastructure, not investment vehicles.
Technology can support that. But it can't replace it.
This article represents my analysis as a developer and renter in an unaffordable housing market. I'm not an economist or housing policy expert, but I understand the algorithms—and I've chosen not to build systems that make the crisis worse.
Building Tech That Houses People, Not Just Maximizes Profit
I'm Prasanga Pokharel, a fullstack Python developer who believes technology should solve real problems for real people. I work with USA and Australia clients who want to build housing tech that increases access, not extraction.
My approach: Affordable housing tools, energy efficiency systems, transparent allocation algorithms, and technology designed for people over profit.
Let's Build Solutions That Actually Help →