Claude Code for Real Estate

A hands-on introduction, built around a working valuation model

Material from a Claude Code workshop I ran for real estate people. The logistics and install steps have come down; the model and the prompting notes are still here.

Get the model running

Assumes you already have Claude Code installed. Paste this into Claude Code and press Enter:

Clone https://github.com/lsarta/embarcadero-model.git into a folder on my desktop, then run the dashboard and open it in my browser.

Claude will ask permission before running commands. That's a feature. Approve and keep moving.

Success: your browser opens a dashboard and the big number reads 12.62%.

Try this first

In Claude Code, type:

Change the exit cap to 7% and re-run the model. What happened to the IRR?

Then click "Re-run model" in the dashboard and watch the number move.

The model

A five-year unlevered DCF for a hypothetical acquisition of Two Embarcadero Center. deal.json holds the assumptions; model.py is the model.

MetricValue
Basis (incl. closing)$395,850,000
Year 1 yield on cost6.75%
Exit value$527,053,284
Unlevered IRR12.62%
Equity multiple1.71x

It also ranks which assumptions actually move the answer:

AssumptionIRR swing
Annual rent growth6.46%
In-place rent ($/SF)6.14%
Purchase price4.58%
Exit cap rate3.66%
Operating expenses ($/SF)3.44%
Stabilized occupancy3.15%
Annual opex growth0.85%
Months to stabilize0.20%

Every input's range and sourcing is in deal.json. Disagree with a band? Change it.

The building is real. The deal is not. Two Embarcadero Center is owned by BXP and not for sale. Assumptions are illustrative — see SOURCES.md. Not investment advice.

How to ask for what you want

Specify like you're briefing an analyst.

Weak add a sensitivity table
Strong Add a two-way sensitivity grid to this model. Exit cap rate across the columns from 5.75% to 7.00% in 0.25% steps, annual rent growth down the rows from 0.00% to 4.00% in 0.50% steps. Each cell shows the unlevered IRR. Put the grid in the dashboard below the assumption ranking. Don't change the values in deal.json — the base case should still come out at 12.62%.

Say what you want, what "done" looks like, and what not to break.

Make it yours

The model runs. Now change it into something you'd actually use — pick something from your own work, not a generic exercise.

You can't break anything permanently. git checkout . puts the model back exactly how it started.

Don't know where to start?

Or change the building entirely.

Not sure how to phrase it? Describe what you want to Claude in chat and ask Claude to write the Claude Code prompt for you. That is a legitimate move, not cheating.

If something breaks

What's next