A living backlog. The near edge is making the model one Agent-organized surface and wiring the Agents to the canonical agent layer; the far edge is taking the Agents fully online and adapting to any deal a client brings.
/model becomes the product: levers held within each Agent, a per-section Human/Agent toggle, the no-go→go gap.
Refactor the Python agents from lever-families into the five Agents, each with a vetted, sourced move set. Orchestrator stays green.
Per-section "Agent" applies the real, sourced moves (with citations); a Lead Agent "optimize" composes the path to pencil. Heuristic today; LLM is a backend swap away.
Grow /model to every lever and dashboard, then fold /full into it.
Drop in a deal's spreadsheet; extract and prefill the assumptions (human-confirmed).
A defensible PDF with the value waterfall and every assumption's source — for the IC / lender.
Scheduled re-underwriting — flag the day a no-go becomes a go (rates, comps, a new incentive).
Every change the agents make is an assumption that still needs to be proven. Output the checklist to validate them — "get a construction quote for $273/SF," "confirm the TIF capacity with the URA" — and, later, a second set of agents that runs that validation process and reports back. The deal moves from assumed to confirmed.
Design/layout quality, business-model variants (co-living, flex), proptech-driven opex, deeper green-infra economics — the levers those Agents need.
Map an arbitrary client workbook onto the model — structured template + AI field-mapping with confirmation. (Q10.)
Developer, LP, lender, city — each with their own targets, views, and levers in one model.
Logo, the two-color wordmark, and a short tagline — polish the brand for outside eyes.
The Agents reason with heuristics today. To make them LLM-reasoned — arguing each move against live comps — needs a backend the static site can call. That means: a host / containers for the Python engine + agents behind a small API, and a Claude API key wired in (off by default, clamped, graceful fallback — the seam already exists in ncue/llm_agent.py). Everything up to that line is being built so this is a contained swap, not a rebuild.
The Lead Agent / Orchestrator coordinates the Agents internally. The client-facing conversation is best as an LLM-in-the-window wearing the Lead Agent's persona: it turns plain-language intent into loop specs, drives the deterministic orchestrator, and explains the reasoning back. So the Orchestrator is the liaison's *voice*; a conversational LLM is the *interface*. To confirm.
Output is the underwriting + the no-go→go path, not a generic score.
Code stays ncue for now.
Not one agent per incentive — the value is in the combination.
A capability inside Agents, not its own agent.