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.
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.
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.
A five-year unlevered DCF for a hypothetical acquisition of Two Embarcadero Center. deal.json holds the assumptions; model.py is the model.
| Metric | Value |
|---|---|
| Basis (incl. closing) | $395,850,000 |
| Year 1 yield on cost | 6.75% |
| Exit value | $527,053,284 |
| Unlevered IRR | 12.62% |
| Equity multiple | 1.71x |
It also ranks which assumptions actually move the answer:
| Assumption | IRR swing |
|---|---|
| Annual rent growth | 6.46% |
| In-place rent ($/SF) | 6.14% |
| Purchase price | 4.58% |
| Exit cap rate | 3.66% |
| Operating expenses ($/SF) | 3.44% |
| Stabilized occupancy | 3.15% |
| Annual opex growth | 0.85% |
| Months to stabilize | 0.20% |
Every input's range and sourcing is in deal.json. Disagree with a band? Change it.
SOURCES.md. Not investment advice.
Specify like you're briefing an analyst.
Say what you want, what "done" looks like, and what not to break.
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.
Or change the building entirely.
pwd — it should end in embarcadero-model.git checkout . to undo all your changes and start clean. Nothing is permanent.