尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Valuation Assistance.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A finance web app for real estate underwriting and DCF valuation, with a transparent,
testable financial modeling engine built around explicit analyst conventions — designed to
demonstrate what AI-assisted software development looks like when domain expertise drives
the direction.
Live app: analyst-toolkit-ecru.vercel.app
Source: this repository查看完整 README ↗A finance web app for real estate underwriting and DCF valuation, with a transparent, testable financial modeling engine built around explicit analyst conventions — designed to demonstrate what AI-assisted software development looks like when domain expertise drives the direction.
Live app: analyst-toolkit-ecru.vercel.app Source: this repository
Analyst Toolkit is two connected calculators — real estate underwriting and DCF valuation — that take an analyst's assumptions and return the numbers a real deal or investment committee memo would need: IRR, equity multiple, cash-on-cash, enterprise value, value per share, and the full multi-year schedules behind them. Every material modeling convention and assumption is explicit; nothing is silently embedded in the calculations.
It's built for recruiters, hiring managers, PE professionals, real estate asset management professionals, and finance teams evaluating whether AI-assisted development can produce something genuinely useful — not a toy demo with a spreadsheet's worth of hardcoded numbers behind it.
DCF Valuation — the embedded Costco demo, sourced historical financials, editable assumptions, and the full valuation summary with price-implied FCF growth:
Real Estate Underwriting — the acquisition and financing inputs:
I'm the finance-domain owner: an Honours BComm in Financial Services, background in financial analysis, valuation, and real estate underwriting, limited software engineering experience. Claude Code wrote essentially all of the code. My role was direction and judgment — product scope, financial methodology, what's simplified versus what's configurable, and every genuine modeling-convention decision (debt amortization convention, discounting convention, exit valuation approach, and more) was explicitly flagged and decided together rather than silently assumed by the AI.
This is the honest story: I supplied domain expertise and direction, Claude implemented.
The full decision history — every methodology choice, why it was made, and what was
considered instead — is in docs/decisions.md, with the complete
chronological development log in docs/archive/PROGRESS_HISTORY.md.
Currently frozen pending validation of underwriting conventions with a CRE professional —
see docs/decisions.md.
-3.0% demo assumption for NWC Investment where the
company's own working-capital history is too unstable to seed automatically. Clearly labeled
as a demo snapshot throughout, never presented as live data, and never saved to the scenario
list.The module is laid out as a dense analyst workstation: sourced data, editable assumptions, and the resulting valuation sit side by side in one row on desktop, so the relationship between an input and its effect on the valuation is visible without scrolling.
Both modules ship with a one-click worked example. The Real Estate example is real-world-inspired: purchase price and NOI are sourced from a public industrial/flex listing (100 Symes Road, Toronto), with everything else clearly labeled illustrative rather than presented as sourced fact.
Every calculation is a pure, tested function, separate from the API and UI layers — see
backend/app/calculations/. Full current methodology (all conventions, stated explicitly):
docs/MODELING_CONVENTIONS.md. Highlights:
EBIT × (1 − effective tax rate) + D&A − CapEx − change in NWC — the standard enterprise-value-DCF construction. Any missing
input makes the result undefined rather than silently treating it as zero.docs/ROADMAP.md.Every calculation — cap rate, amortization, IRR, equity multiple, DSCR, debt yield, terminal value, enterprise value, unlevered FCF construction — is backed by automated tests checked against values computed independently by hand, not just "does the code agree with itself." 292 backend tests and 392 frontend tests total, plus a GitHub Actions CI pipeline that runs the backend suite and the frontend lint/build checks on every push and pull request.
Browser (React SPA, static build on Vercel)
│ fetch('/api/...')
▼
FastAPI backend (Render)
│ Pydantic validates input bounds
▼
Pure calculation functions (backend/app/calculations/)
│ no framework code, no side effects
▼
JSON response → rendered in the browser
For the DCF module's ticker search specifically, the backend also acts as a normalization layer in front of external data:
Browser: GET /api/company/{ticker}
▼
FastAPI backend (Render)
│ SEC EDGAR: primary source for historical fundamentals (XBRL company facts, no key
│ required) plus ticker → CIK lookup and a filings-index link
│ Alpha Vantage: fills any field SEC EDGAR can't confidently map for a period, and
│ remains the sole source for the reference price (server-side-only key)
▼
app/services/company_data.py — merges both, field by field, into one provider-agnostic
shape, computes unlevered FCF via app/calculations/company_financials.py (pure, tested).
Alpha Vantage requests are ordered and rationed against its shared free-tier daily
budget: the reference-price quote first (nothing else supplies it), then one profile
call, then the three financial-statement calls only where SEC EDGAR left a gap in what
the forecast modes actually need
▼
JSON response → populates the DCF form; the analyst still reviews and runs it manually
Full technical detail (module-by-module, testing, CI): docs/ARCHITECTURE.md.
docs/decisions.md.Shipped: foundation → real estate + DCF MVPs → scenario saving/export/print →
validation hardening → visual design → deployment → multi-year modeling, sensitivity, and
scenario comparison → real estate risk flags and Deal Summary → DCF ticker search and
workstation redesign → hardened DCF validation → SEC EDGAR as the primary DCF fundamentals
source → SEC-independent DCF data resilience (Alpha Vantage optional, never a hard
dependency) → per-value provenance and an editable, dated reference price → an embedded,
provider-independent Costco DCF demo → compact historical Revenue/Unlevered FCF trend
mini-charts → reverse DCF (price-implied FCF growth) → Driver-Based DCF (evidence-led
forecast entry) → standardized ±1pp driver sensitivity (tornado) → two-way Revenue Growth ×
EBIT Margin driver-interaction grid → DCF traceability (reported-history-to-forecast
continuity and enterprise-value composition) → saved-case source context and
assumption-difference comparison. Detail:
PROGRESS.md, docs/decisions.md.
What's next: docs/ROADMAP.md.
Long-term direction — not yet built: the modeling engine above is the foundation, not the end state. Analyst Toolkit is meant to grow into an AI-powered analyst workflow tool, not just a more elaborate calculator:
raw deal/company information → structured assumptions → financial model → scenarios/sensitivities → risks/insights → decision-ready summary/export
The idea is for AI and automation to progressively reduce the manual effort between those
stages — document extraction from OMs, rent rolls, and T12s; auto-structuring raw inputs;
flagging missing or inconsistent data; generating and comparing scenarios; flagging
underwriting or valuation risk; interpreting sensitivity results in plain language;
generating IC-style investment commentary. None of this is scoped or scheduled — it's
explicitly gated on the modeling engine being solid first, which is the work reflected in
this repository today. Full detail: docs/ROADMAP.md's Parked column.
# Backend
cd backend
python -m venv venv
./venv/Scripts/pip install -r requirements.txt
cp .env.example .env # ALPHA_VANTAGE_API_KEY is optional (free, see below) - ticker search works without it for SEC-supported tickers
./venv/Scripts/python -m uvicorn app.main:app --reload --port 8001
# Frontend (separate terminal)
cd frontend
npm install
npm run dev
Open http://localhost:5173. The Vite dev server proxies /api/* to the backend
automatically — see frontend/vite.config.js.
Run the backend test suite with ./venv/Scripts/python -m pytest from backend/.
A free Alpha Vantage API key (https://www.alphavantage.co/support/#api-key, no credit
card) set as ALPHA_VANTAGE_API_KEY — locally in backend/.env, and as an environment
variable in Render — enriches ticker search with a reference price and a few extra fields.
It's optional: SEC EDGAR is ticker search's independent primary path, so a SEC-supported
ticker loads with no key at all, reference price simply absent (still enterable manually).
React 19 · Vite 8 · FastAPI · Pydantic · pytest · numpy-financial · httpx · SEC EDGAR (primary historical fundamentals via XBRL) · Alpha Vantage (fallback fundamentals & reference price/quotes) · Vercel · Render · GitHub Actions (CI)
start → end (range) with the exact year-by-year schedule one click away, labelled with real
fiscal years when the compared cases agree on the period. Editing mode is not treated as a
difference: two rows holding the same values are the same forecast whether they were typed
cell-by-cell or generated. Cases recorded against genuinely different companies are refused;
an unknown identity is qualified rather than silently treated as a match.