Office-to-residential conversion feasibility screening for CRE acquisition teams.
PivotPoint AI lets you upload any commercial floor plan PDF and get an instant Go/No-Go verdict — powered by Gemini's multimodal vision. The app reads the geometry of the floor plate, cross-references NYC or SF building codes, flags violation zones directly on the plan, and streams a plain-English executive summary in seconds.
Built as a prototype demo tool for PE analysts evaluating office conversion opportunities in New York City and San Francisco.
| Step | What happens |
|---|---|
| Upload | Drag and drop a PDF floor plan (up to 50 MB) |
| Select city | Choose NYC (NYC Zoning Resolution + Building Code) or SF (SF Planning Code) |
| Analyze | Gemini 2.5 Pro reads the floor plan and scores it against residential conversion requirements |
| Results | Go/No-Go score (0–100), annotated violation zones overlaid on the plan, and a streamed executive summary |
| Detail view | Click any violation box for a zoomed view with the specific code citation and business implication |
- Red box overlays — violation zones rendered directly on the PDF, numbered and clickable
- Animated score gauge — semicircular gauge sweeps from 0 to the feasibility score on load
- Streaming summary — executive risk summary types out character-by-character as Gemini responds
- React 19 + TypeScript + Tailwind CSS 4
- Gemini 2.5 Pro via
@google/genai— multimodal PDF analysis with streaming - react-pdf + PDF.js — client-side PDF rendering with violation overlays
- Recharts — RadialBarChart for the score gauge
- Vite 6 — build tool
All analysis runs client-side. No backend required.
Prerequisites: Node.js 18+
1. Clone and install
git clone https://github.com/skyexry/PivotPointAI.git
cd PivotPointAI
npm install2. Add your Gemini API key
Create a .env.local file in the project root:
GEMINI_API_KEY=your_key_here
Get a free key at aistudio.google.com. The .env.local file is gitignored — your key will never be committed.
3. Run
npm run devOpen http://localhost:3000.
For a dramatic NO-GO result, use a 1970s–1990s Manhattan office building with a deep floor plate (> 60 ft core-to-window depth). Good examples:
- 55 Water Street, NYC — extreme floor plate depth, near-certain NO-GO
- 1221 Avenue of the Americas, NYC — classic postwar deep plate
- One Penn Plaza, NYC — large floor plate with egress distance issues
Search "[building name]" "typical floor" filetype:pdf on Google, or find floor plan PDFs on LoopNet / CBRE listing pages.
For a GO result, search for pre-war NYC towers (1920s–1940s) with narrow rectangular plates — they were designed around natural light before fluorescent lighting existed.
src/
├── components/
│ ├── ScreenUpload.tsx # Screen 1 — PDF upload + city selector
│ ├── ScreenProcessing.tsx # Screen 2 — phase indicators while Gemini runs
│ ├── ScreenDashboard.tsx # Screen 3 — score gauge, annotated plan, summary
│ └── ScreenDetail.tsx # Screen 4 — zoomed violation detail view
├── services/
│ └── ai.ts # Gemini API call, prompt, response parsing
├── types.ts # TypeScript interfaces
└── App.tsx # State machine routing between screens
Confidential pre-screen only. Not a substitute for licensed architectural review.