Deterministic office-to-residential conversion feasibility scoring for NYC.
Upload a commercial floor plan PDF and an address. PivotPoint returns a 0–100 feasibility score with violations highlighted on the plan, building-code citations from a pgvector knowledge base, and a deal-memo executive summary.
- PLUTO + Supabase enrichment — NYC PLUTO data (zoning, year built, floor count) merged with landmark, MPDA boundary, and subway-distance fields
- Gemini 2.5 Pro vision — extracts violations, WWR, aspect ratio, and floor-plate depth; findings rendered as overlays on the PDF
- 14-subscore deterministic formula — scores from structured building features; Gemini does not score
- pgvector RAG —
gemini-embedding-001embeds the query; top-4 Supabase regulation chunks surface as in-UI code citations
| Dimension | Weight |
|---|---|
| Physical Suitability | 50% |
| Regulatory Compliance | 20% |
| Incentive Eligibility | 20% |
| Market Conditions | 10% |
Thresholds: GO ≥ 90 · CONDITIONAL ≥ 70 · NO-GO below 70.
Hard veto: M2/M3 zoning forces NO-GO regardless of score.
- Frontend: React 19, Vite 6, Tailwind CSS 4, Mapbox GL, PDF.js
- Backend: Express (local dev) / Vercel Serverless Functions (prod)
- AI: Gemini 2.5 Pro, gemini-embedding-001
- Data: NYC PLUTO, Supabase Postgres + pgvector, NYC GeoSearch
cp .env.local.example .env.local # GEMINI_API_KEY, SUPABASE_URL, SUPABASE_SERVICE_KEY
npm install
npm run dev:all # Vite :3000, Express API :3001