Pre/3

An AI underwriting platform for multifamily real estate — turning a stack of broker PDFs into a populated Purchase Template in minutes, not half an hour.

What it is

Pre/3 automates the part of the deal pipeline that quietly eats the most analyst time: pulling structured financial data out of Operating Memorandums, T12s, and Rent Rolls and dropping it into the firm's Purchase Template. Each broker formats things differently; every deal used to be a manual translation job.

The platform pairs agentic extraction with human-in-the-loop review — autonomous where the data is unambiguous, escalating to a person the moment confidence drops. A persistent memory layer learns broker-specific quirks so repeat deals get faster over time.

How it works — the pipeline

Three stages, with a human checkpoint where it matters. Each stage is independently testable against fixtures of real broker formatting variance.

01Upload

Ingest

Analysts drop deal packages — Operating Memorandums, T12s, Rent Rolls — as PDFs or Excels into the dashboard. A document-type detector routes each file to the right specialist extractor; OCR handles scanned PDFs.

02Agentic processing

Extract & categorize

Structured extraction runs through LLM calls orchestrated by the Vercel AI SDK, with deterministic parsers for Excel grids. Line items are mapped into Pre/3's 12-category expense structure; low-confidence mappings are flagged rather than guessed at.

03Human-in-the-loop

Review & export

Underwriters review flagged items and apply corrections through a streaming AI-assisted UI. Corrections feed back into agent memory so the system learns broker formatting patterns. The output is a populated Purchase Template with formulas and references preserved.

Architecture

Two services, one shared store, a deal package walking from raw broker files to a populated analyst workbook. Each stage is independently testable; nothing commits without a confidence pass and a human checkpoint on the edges where it matters.

01 · Upload
Analyst drops a deal package

PDFs and Excel files land in Supabase Storage; a deal row is created in Postgres. Auth scopes everything to the analyst and their firm.

02 · Detect
Document-type classifier

The file detector inspects each upload — sometimes by header signature, sometimes by content — and tags it as Operating Memorandum, T12, Rent Roll, or unknown, then routes to the right extractor.

03 · Parse
FastAPI extraction service

A Python microservice on Railway handles document parsing: pdfplumber for text PDFs, OCR for scanned, openpyxl for Excel grids. Returns raw structured data tailored to the document type.

04 · Reason
Vercel AI SDK + LLM

The TypeScript orchestrator calls the LLM with the raw extraction, applies Pre/3's 12-category mapping, and gets back structured fields with per-line confidence scores. Low-confidence rows are tagged.

05 · Persist
Postgres + Letta memory

Validated rows persist to Supabase. Broker-specific formatting patterns and prior corrections flow into Letta agent memory so the next deal from the same broker starts smarter.

06 · Review
Human-in-the-loop dashboard

The analyst opens the deal; flagged fields surface first. A streaming chat lets them ask the agent about specific cells. Corrections write back through the orchestrator and trigger a memory update.

07 · Export
Populated Purchase Template

The Excel template is regenerated with formulas and cell references intact, the extracted data slotted into the firm's standard layout. Analyst downloads a workbook that looks like the ones they've always used.

Designed for trust

Human-in-the-loop by default

Low-confidence mappings are surfaced for review rather than silently committed. Underwriters keep full control over the final output; the system learns from every correction.

Specialist beats generalist

Per-document-type extractors outperform one-size-fits-all prompts on broker-format variance. Each extractor is independently evaluable, so accuracy regressions can be traced and tested.

Self-improving via memory

Letta persists categorization patterns and broker-specific quirks. Repeat deals from familiar brokers process faster and need less review over time.

Standardized, comparable output

Every deal lands in the same 12-category expense structure and Purchase Template format, so analysts can compare deals directly and the firm builds a proprietary deal database as a side effect of normal work.

Built with
TypeScriptNode.jsNext.jsVercel AI SDKPythonFastAPIpdfplumberopenpyxlOpenAI / LLM APILettaSupabasePostgreSQLVercelRailway

Curious about the rest?

Ask Iris about Pre/3, the rest of my work, or how to reach Chris directly.

Talk to Iris →