Shadowlineasset underwriting engine
Open the test portal

Portfolio spreadsheets in. A Shadow Variables report out.

A Python backend that reads institutional asset schedules and cash-flow ledgers the way they arrive, cross-references them against macro series, scores fifteen hidden-risk variables per asset, and writes the executive PDF. Password-protected tenants, encrypted at rest.

1. IngestTitle rows, header synonyms, "$12.4M", "(35,000)", "93%", "Nov-27", subtotal rows, duplicates, a rent roll on sheet two, a long-format ledger in a CSV. Every fix is written to the lineage log.
2. Cross-reference10-year Treasury, SOFR, CPI, sector cap rates and refinance spreads, market unemployment and rent growth. Sample series today, FRED adapter in code.
3. ScoreRefinance gap, DSCR at refinance, rate shock, maturity cliff, rollover, tenant concentration, ledger trend and drift, marked value, break-even occupancy. One weighted score, three named drivers.
4. ReportCover, executive summary, DSCR telemetry eight quarters forward under base and adverse paths, maturity ladder, heatmap, a page per asset, data lineage and methodology appendices.

The fifteen variables

  1. DSCR today
  2. DSCR at refinance
  3. Months to maturity
  4. Refinance shortfall (equity check)
  5. DSCR at +200 bps (floating)
  6. Rent expiring in 24 months
  7. Largest tenant share
  8. NOI trend, T12 vs prior 12
  9. NOI volatility
  10. Expense drift vs revenue
  11. Insurance cost change
  12. Equity erosion at market cap rates
  13. LTV at market value
  14. Occupancy cushion over break-even
  15. Market softness

Each variable carries a severity from 0 to 100, a weight, and the sentence that explains it. Variables the data cannot support are shown grey and drop out of the weighting instead of being guessed.

Test access

Two tenants, two portfolios, strict isolation: a run id from one tenant returns 404 in the other, and the stored blob would not decrypt with the other tenant's key.

TenantIdPasswordSeeded portfolio
Harrow Point Capitalharrowpointharrow-demo-2026Core Plus Fund II, 14 assets, 24-month ledger
Meridian Lane Holdingsmeridianlanemeridian-demo-2026Sunbelt Value-Add I, 8 assets, floating-rate heavy

Sign in

Try an upload

A third fictional fund in a different layout (CSV with a title row and a "Portfolio Total" line) plus its ledger. Upload both inside either tenant and the report is ready in a few seconds.

Under the hood

Python 3.12, FastAPI, pandas and openpyxl for ingest, ReportLab for the PDF, Jinja for the portal. Passwords PBKDF2-HMAC-SHA256 at 210,000 iterations; sessions are signed, time-limited cookies; tenant data is envelope-encrypted (HKDF per tenant, AES-128-CBC with HMAC) before it reaches the store, which is Redis here and S3 or GCS with a KMS-held master key in production. Deployed as one serverless function; the same code runs offline with a local encrypted file store.

Everything on this page is fictional: the tenants, the assets, the tenants' tenants. The macro snapshot is a frozen sample series so every run is reproducible.