323 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Reonomy Contact Extractor - Video Storyboard
**Duration:** 37 seconds (1100 frames @ 30fps)
**Resolution:** 1920 × 1080
**Style:** Product demo with Canvas Viewport technique (camera moves WITHIN screenshots)
---
## Scene 1: Title Card
**Frames:** 0120 (4 seconds)
**Source:** Generated background (gradient)
### Visual Content
- Deep purple-to-indigo gradient background (`#0f172a → #1e1b4b → #0f172a`)
- Centered title: "🏢 Reonomy Contact Extractor"
- Subtitle below: "CRE Leads → Your CRM … On Demand"
### Motion
- **Title animation:** Fades in + slides up from 40px below (spring damping: 25)
- **Subtitle animation:** Same motion, delayed 25 frames (staggered entrance)
- **Background:** Subtle static gradient, no movement
### Typography
- Title: 72px, weight 800, white
- Subtitle: 28px, weight 400, slate-400 (`#94a3b8`)
### Transition Out
- Crossfade (20 frames overlap with next scene)
---
## Scene 2: Login
**Frames:** 110260 (5 seconds)
**Source:** `02-login-filled.png` (Reonomy login page with email pre-filled)
### Visual Content
- Reonomy login modal showing:
- Logo at top
- "Log In" / "Sign Up" tabs
- "Sign in with Google" button
- "Sign in with Salesforce" button
- Email field showing `henry@realestateenhanced.com`
- Step badge in bottom-left: "1" + "Login to Reonomy"
### Motion (Canvas Viewport)
| Time | X | Y | Zoom | What's Visible |
|------|---|---|------|----------------|
| Start | 0.5 | 0.2 | 2.0× | Reonomy logo and top of login form |
| End | 0.5 | 0.7 | 2.5× | Login buttons and email field (zoomed tight) |
**Camera movement:** Slow vertical pan DOWN the login form, zooming IN as it descends to draw attention to the authentication area.
### Overlays
- Radial vignette (transparent center, 50% black at edges)
- Step badge animates in with spring (delay: 10 frames after scene start)
### Audio Cue (if added)
- Soft "whoosh" on scene entrance
---
## Scene 3: Search Interface
**Frames:** 250400 (5 seconds)
**Source:** `04-search-results.png` (Reonomy home/search page)
### Visual Content
- Reonomy search interface showing:
- Navigation bar with "Saved Searches", "Data Upload"
- Hero section: "What would you like to search for today?"
- Large search input with placeholder text
- Illustrated cityscape background
- Step badge: "2" + "Search & Filter"
### Motion (Canvas Viewport)
| Time | X | Y | Zoom | What's Visible |
|------|---|---|------|----------------|
| Start | 0.0 | 0.0 | 1.8× | Top-left: nav bar and start of search area |
| End | 0.3 | 0.5 | 1.6× | Centered on search bar, slight pull-back to show context |
**Camera movement:** Diagonal drift from top-left corner toward center, slight zoom OUT to reveal the full search interface. Creates sense of "arriving" at the workspace.
### Overlays
- Same vignette
- Step badge with spring animation
---
## Scene 4: Property Selection
**Frames:** 390530 (4.7 seconds)
**Source:** `05-property-detail.png` (Property detail page with satellite map)
### Visual Content
- Property detail page showing:
- Satellite/aerial view of property (Orlando, FL area)
- Yellow property boundary outline on map
- Address: "...od Bay Dr, Orlando, FL 32821"
- Map controls (zoom, rotate, layers)
- Mini map inset on right
- Step badge: "3" + "Select Property"
### Motion (Canvas Viewport)
| Time | X | Y | Zoom | What's Visible |
|------|---|---|------|----------------|
| Start | 0.3 | 0.0 | 1.6× | Top portion: property header and map top |
| End | 0.5 | 0.4 | 1.4× | Centered on satellite view, showing property outline |
**Camera movement:** Gentle drift down and right, slight zoom OUT. Mimics "exploring" the property details. The yellow boundary should be clearly visible mid-scene.
### Overlays
- Vignette
- Step badge
---
## Scene 5: Owner Tab
**Frames:** 520660 (4.7 seconds)
**Source:** `06-owner-tab.png` (Property page with Owner tab visible)
### Visual Content
- Same property view but scrolled/panned to show:
- Satellite map (upper portion)
- Address visible
- Tab navigation at bottom: "Sales", "Debt", "Tax", "Demographics", "Notes"
- Owner tab should be highlighted/selected
- Step badge: "4" + "Owner Tab"
### Motion (Canvas Viewport)
| Time | X | Y | Zoom | What's Visible |
|------|---|---|------|----------------|
| Start | 0.5 | 0.2 | 1.5× | Map and upper property info |
| End | 0.6 | 0.5 | 1.8× | Lower portion with tabs visible, zoomed into Owner area |
**Camera movement:** Pan DOWN and slightly RIGHT while zooming IN. The motion "discovers" the Owner tab, guiding the viewer's eye to click target.
### Overlays
- Vignette
- Step badge
---
## Scene 6: Contact Extraction
**Frames:** 650830 (6 seconds)
**Source:** `09-contact-modal.png` (Contact modal with phone numbers and emails)
### Visual Content
- Contact modal/panel showing:
- "Phone Numbers" header
- Multiple phone contacts with company names:
- 919-469-9553 (Greystone Property Management)
- 727-341-0186 (Seaside Villas Gulfport)
- 903-566-9506 (Apartment Income Reit, L.P.)
- 407-671-2400 (F.P. Management, Inc.)
- Property type pie chart visible in background
- Company name "INTERNATIONAL LLC +5 more companies"
- Step badge: "5" + "Extract Contacts"
### Motion (Canvas Viewport)
| Time | X | Y | Zoom | What's Visible |
|------|---|---|------|----------------|
| Start | 0.6 | 0.1 | 1.8× | Top of contact list, first phone number |
| End | 0.6 | 0.6 | 2.2× | Scrolled down, showing multiple contacts |
**Camera movement:** Vertical scroll DOWN through the contact list while zooming IN. This is the "money shot" — the viewer sees real contact data appearing. Slow, deliberate movement to let them read the numbers.
### Overlays
- Vignette
- Step badge
- **Key moment:** Camera should pause slightly on each phone number (achieved via easing, not literal pauses)
---
## Scene 7: Results Summary
**Frames:** 8201100 (9.3 seconds)
**Source:** Generated (React components, not screenshot)
### Visual Content
#### Phase 1: Title (frames 820870)
- "🎉 Contacts Extracted" title
- Spring animation entrance
#### Phase 2: Contact Lists (frames 870980)
Two columns side by side:
**Left column — Phone Numbers (green accent)**
```
📞 Phone Numbers
┌─────────────────┐
│ 919-469-9553 │
│ 727-341-0186 │
│ 903-566-9506 │
│ 407-671-2400 │
│ 407-382-2683 │
└─────────────────┘
```
**Right column — Email Addresses (purple accent)**
```
📧 Email Addresses
┌──────────────────────────────┐
│ berrizoro@gmail.com │
│ aberriz@hotmail.com │
│ jasonhitch1@gmail.com │
│ albert@annarborusa.org │
│ albertb@sterlinghousing.com │
└──────────────────────────────┘
```
#### Phase 3: Stats (frames 9801100)
Four stat counters across bottom:
| Stat | Value | Color |
|------|-------|-------|
| Contacts | 10 | Purple (`#6366f1`) |
| Phones | 5 | Green (`#10b981`) |
| Emails | 5 | Amber (`#f59e0b`) |
| Time | 60s | Pink (`#ec4899`) |
### Motion
- **Title:** Fade in + slide up (spring, damping 25)
- **Column headers:** Staggered fade in (phones at frame 870, emails at 875)
- **Contact items:** Cascade animation — each item slides in from the side with 8-frame stagger
- Phones: slide in from LEFT (`translateX(-30px → 0)`)
- Emails: slide in from RIGHT (`translateX(30px → 0)`)
- **Stats:** Scale up from 0.5× to 1× with spring, 10-frame stagger between each
### Typography
- Title: 52px, weight 800, white
- Column headers: 22px, weight 700, accent color
- Contact items: 18px, weight 600, slate-800 on white cards
- Stat values: 48px, weight 800, accent color
- Stat labels: 16px, weight 400, slate-400
### Background
- Same gradient as title card (`#0f172a → #1e1b4b → #0f172a`)
### Transition Out
- Global fade to black over final 30 frames
---
## Global Elements
### Vignette Overlay
Applied to all screenshot scenes (26):
```css
background: radial-gradient(
ellipse at center,
transparent 30%,
rgba(0, 0, 0, 0.5) 100%
);
```
Creates focus on center content and masks rough edges of zoomed screenshots.
### Step Badge Component
Persistent UI element in bottom-left during screenshot scenes:
- Purple circle (48px) with step number
- Black pill with step description
- Spring entrance animation (damping: 20)
- Positioned: `bottom: 50px, left: 50px`
### Easing
All camera movements use: `Easing.inOut(Easing.cubic)`
All UI animations use: `spring({ damping: 18-25 })`
### Color Palette
| Use | Color | Hex |
|-----|-------|-----|
| Background dark | Slate 900 | `#0f172a` |
| Background accent | Indigo 950 | `#1e1b4b` |
| Primary | Indigo 500 | `#6366f1` |
| Secondary | Violet 500 | `#8b5cf6` |
| Success | Emerald 500 | `#10b981` |
| Warning | Amber 500 | `#f59e0b` |
| Accent | Pink 500 | `#ec4899` |
| Text primary | White | `#ffffff` |
| Text secondary | Slate 400 | `#94a3b8` |
| Text on cards | Slate 800 | `#1e293b` |
---
## Asset Checklist
### Screenshots Needed
- [x] `02-login-filled.png` — Login page with email filled
- [x] `04-search-results.png` — Search/home interface
- [x] `05-property-detail.png` — Property with satellite map
- [x] `06-owner-tab.png` — Property showing owner tab
- [x] `09-contact-modal.png` — Contact list modal
### Generated Assets
- [ ] Intro background gradient (or use CSS gradient)
- [ ] Outro background gradient (same as intro)
### Audio (Optional Future)
- [ ] Background music (upbeat, corporate-friendly)
- [ ] Whoosh sounds on scene transitions
- [ ] "Pop" sounds on stat reveals
---
## Implementation Notes
### Canvas Viewport Technique
Each screenshot scene uses the `CanvasViewport` component which:
1. Renders the image at 2.5× the viewport size
2. Positions a clipping viewport over a portion of the image
3. Animates X, Y, and Zoom values to create camera movement
4. Creates the illusion of moving THROUGH the UI rather than just showing it
### Key Insight
The zoom values (1.4× to 2.5×) mean we're always cropped IN — never showing the whole screenshot. This:
- Hides any rough edges or UI inconsistencies
- Forces focus on the relevant area
- Creates cinematic "documentary" feel
- Allows lower-res source images to still look sharp
### Timing Philosophy
- **Scene 1 (Title):** 4 seconds — enough to read, not too long
- **Scenes 2-5 (UI flow):** ~5 seconds each — enough for camera to move meaningfully
- **Scene 6 (Contacts):** 6 seconds — the payoff, give it room
- **Scene 7 (Results):** 9 seconds — celebration, let animations complete, end strong