96f93d0c93
- Animations: Added global page transitions and smooth sidebar toggle - Loaders: Implemented branded Loader component and page loading states - Fixes: Resolved hook order violations in Maps/Dashboard; fixed Layout import - Docs: Updated README with correct demo credentials and feature list
127 lines
5.8 KiB
Markdown
127 lines
5.8 KiB
Markdown
# Plano Realty CRM - Geospatial Field Service Platform
|
|
|
|
> **The Next Generation of Roofing Sales & Territory Management**
|
|
|
|
**Plano Realty CRM** is an advanced, data-driven platform designed to revolutionize how roofing professionals in Plano, Texas manage their territories, leads, and customer interactions. By combining geospatial intelligence, AI-driven insights, and intuitive workflows, we bridge the gap between field agents and office operations.
|
|
|
|
---
|
|
|
|
## 🏛️ PART 1: PRODUCT OVERVIEW
|
|
|
|
### 🌟 Value Proposition
|
|
In a competitive roofing market, speed and data are everything. Traditional spreadsheets and paper maps leave money on the table. **Plano Realty CRM** solves this by providing:
|
|
- **Precision Targeting**: Identify "Golden Leads" (older homes with high value) instantly on a map.
|
|
- **Operational Efficiency**: Automate scheduling and follow-ups with our AI Concierge.
|
|
- **Real-Time Intelligence**: Know the storm risk and roof condition of every property before you knock.
|
|
|
|
### 🤖 The "Plano AI Assistant" (Chatbot)
|
|
Our AI is not just a support bot; it is a context-aware worker that understands your business data.
|
|
|
|
#### For Field Agents (Workers)
|
|
- **"Smart Querying"**: Ask *“Show me the properties built before 2000”* or *“Which homeowner wants to sell?”*.
|
|
- **Lead Qualification**: The AI knows which leads are "Hot" and prompts you to prioritize them.
|
|
- **Risk Analysis**: Ask *“What is the current storm risk?”* to get a breakdown of wind speeds vs. roof vulnerability.
|
|
|
|
#### For Customers (Homeowners)
|
|
- **Instant Diagnostics**: (Future) Schedule inspections without waiting on hold.
|
|
- **Project Updates**: Check the status of their roof repair.
|
|
|
|
#### For Guests (Website Visitors)
|
|
- **Lead Capture**: The AI engages visitors, answers generic questions about roofing services, and encourages them to sign up or request a free estimate.
|
|
|
|
### 📊 The Data Dashboard
|
|
A 360-degree view of your territory's health.
|
|
|
|
1. **Golden Leads Scatter Plot**: Visualizes high-value opportunities (High Value + Older Built Year).
|
|
2. **Risk Index Gauge**: A real-time meter combining live wind speed data with the percentage of "Needs Repair" roofs.
|
|
3. **Revenue Potential**: Bar charts showing which neighborhoods offer the highest ROI based on renovation needs.
|
|
4. **Roof Health**: A visual breakdown of the entire territory's roof conditions (Good, Fair, Needs Repair).
|
|
5. **Owner Intent Funnel**: Tracks the pipeline from "Willing to Sell" -> "Hot Leads".
|
|
|
|
---
|
|
|
|
## � KEY FEATURES (Latest Updates)
|
|
|
|
### 🎨 "LynkedUp Pro" Branding & UX
|
|
- **Smooth Animations**: Global page transitions (Fade/Slide) and silky-smooth collapsible sidebar.
|
|
- **Visual Polish**: Glassmorphism everywhere, custom "LynkedUp" loaders, and pulsing interactive elements.
|
|
- **Dark Mode**: Fully supported system-wide dark mode with inverted map tiles for comfortable night viewing.
|
|
|
|
### 🌍 Advanced Mapping
|
|
- **Lead Creation**: Click anywhere on the map to reverse-geocode addresses and create new leads on the fly.
|
|
- **Polygon Visualization**: Color-coded property footprints indicating status (Hot Lead, Customer, etc.).
|
|
|
|
---
|
|
|
|
## �👥 USER ROLES & DEMO ACCOUNTS
|
|
|
|
To explore the platform, use these pre-configured accounts. **Password for ALL accounts is: `password`**
|
|
|
|
### 1. Field Agent (Worker)
|
|
*The primary user. Can view maps, access detailed property data, and manage leads.*
|
|
- **Username/ID**: `FA001` (Frank Agent)
|
|
- **Alternates**: `FA002`, `FA003`, `FA004`, `FA005`
|
|
- **Role Capabilities**:
|
|
- Access Dashboard & Widget Data.
|
|
- View/Edit Lead Status (Hot, Cold, Customer).
|
|
- Use Chatbot with full data context.
|
|
|
|
### 2. Administrator
|
|
*The manager. Sees all agents and global stats.*
|
|
- **Username/ID**: `ADM01` (Adam Admin)
|
|
- **Alternates**: `ADM02`, `ADM03`
|
|
- **Role Capabilities**:
|
|
- All Agent capabilities + User Management (Mock).
|
|
|
|
### 3. Customer (Homeowner)
|
|
*The client. Limited view of their own property.*
|
|
- **Username**: `alice`
|
|
- **Alternates**: `bob`, `charlie`
|
|
- **Role Capabilities**:
|
|
- View personal property details.
|
|
- Request Service.
|
|
|
|
---
|
|
|
|
## 💻 PART 2: DEVELOPER GUIDE
|
|
|
|
### 🛠 Tech Stack & Architecture
|
|
|
|
- **Frontend**: React 18 (Vite), Tailwind CSS, Glassmorphism UI.
|
|
- **State**: `MockStore` (Simulates Backend/DB), `AuthContext` (Session Management).
|
|
- **AI Engine**: Groq SDK (`qwen-3-32b`) injected with dynamic system prompts.
|
|
- **Visuals**: `react-leaflet` (Maps), `recharts` (Analytics), `lucide-react` (Icons).
|
|
|
|
### 🧠 Deep Dive: How It Works
|
|
|
|
#### 1. The "Mock Store" (Data Layer)
|
|
Located in `src/data/mockStore.jsx`. It generates ~60 realistic property records using weighted randomization algorithms to create organic-looking data distributions (e.g., 10% bad roofs, random build years).
|
|
- **Why?**: To provide a rich, testable dataset without needing a live backend database.
|
|
|
|
#### 2. AI Context Injection
|
|
Located in `src/components/Chatbot.jsx`.
|
|
- When a user sends a message, we don't just send their text. We inject a **System Prompt** containing live dashboard metrics.
|
|
- **Example Injection**:
|
|
```text
|
|
SYSTEM: You are a roofing assistant.
|
|
CONTEXT:
|
|
- 45 Total Properties
|
|
- 12 Golden Leads (Top: 123 Maple Dr)
|
|
- 8 Hot Leads needing canvassing
|
|
```
|
|
- This allows the AI to answer specific questions accurately.
|
|
|
|
#### 3. Leaflet Customization
|
|
Located in `src/pages/Maps.jsx`.
|
|
- We use custom SVGs overlays on the map.
|
|
- **Reverse Geocoding**: Clicking a blank spot calls the OpenStreetMap API to fetch the address, allowing agents to "create" new property records on the fly.
|
|
|
|
### 🚀 Setup & Contribution
|
|
|
|
1. **Clone**: `git clone <repo>`
|
|
2. **Install**: `pnpm install`
|
|
3. **Env**: Create `.env` with `VITE_GROQ_API_KEY` and `VITE_OPENWEATHER_API_KEY`.
|
|
4. **Run**: `pnpm run dev`
|
|
|
|
**Maintained by Satyam Rastogi**
|