Spaces:
Running
Running
| # π Three Listing Methods - Visual Guide | |
| ## Method Comparison | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β TEXT vs IMAGE vs VIDEO β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| METHOD 1: TEXT | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| User Flow: | |
| User Types: "3-bed, 2-bath, Lagos, 500k/month, has WiFi, AC" | |
| β | |
| AI Extracts: bedrooms=3, bathrooms=2, location=Lagos, price=500000, etc. | |
| β | |
| User Uploads: Images (2-3 photos) | |
| β | |
| Backend: Validates images (property check) + uploads to Cloudflare | |
| β | |
| Result: TEXT DATA + VALIDATED PHOTOS | |
| Data Source: | |
| ββ Bedrooms: FROM TEXT β | |
| ββ Bathrooms: FROM TEXT β | |
| ββ Price: FROM TEXT β | |
| ββ Location: FROM TEXT β | |
| ββ Title: FROM TEXT β | |
| ββ Description: FROM TEXT β | |
| ββ Images: VALIDATED FROM UPLOAD β | |
| ββ Amenities: FROM TEXT OR IMAGES | |
| UI Shows: Draft card with text-extracted data + photos | |
| User Edits: "Change price to 450k", "Add gym to amenities" | |
| Storage: Images β Cloudflare (smart filenames) | |
| METHOD 2: IMAGE | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| User Flow: | |
| User Clicks: "List with Photos" | |
| β | |
| User Uploads: 2-5 photos (NO TEXT DATA PROVIDED) | |
| β | |
| Backend: | |
| ββ Validates images (property check) | |
| ββ EXTRACTS bedrooms, bathrooms, amenities | |
| ββ GENERATES SHORT title (max 2 sentences) | |
| ββ GENERATES description | |
| ββ Creates smart filenames | |
| ββ Uploads to Cloudflare | |
| β | |
| AI Analysis Results: | |
| ββ Bedrooms: 3 (detected from images) | |
| ββ Bathrooms: 2 (detected from images) | |
| ββ Amenities: WiFi, AC, Parking, Pool | |
| ββ Title: "Modern 3-Bed Apartment. Great location!" β SHORT | |
| ββ Description: "Beautiful apartment with modern furnishings..." | |
| ββ Confidence: { bedrooms: 0.95, bathrooms: 0.88, ... } | |
| β | |
| System Asks: "Location? Address? Price?" | |
| β | |
| User Provides: "Lagos, Victoria Island, 500,000/month" | |
| β | |
| Result: COMPLETE LISTING DATA FROM IMAGES + USER-PROVIDED INFO | |
| Data Source: | |
| ββ Bedrooms: FROM IMAGE ANALYSIS β | |
| ββ Bathrooms: FROM IMAGE ANALYSIS β | |
| ββ Amenities: FROM IMAGE ANALYSIS β | |
| ββ Title: AI-GENERATED (SHORT) β | |
| ββ Description: AI-GENERATED β | |
| ββ Images: VALIDATED & UPLOADED β | |
| ββ Price: USER PROVIDED β | |
| ββ Location: USER PROVIDED β | |
| ββ Address: USER PROVIDED β | |
| UI Shows: Draft card with IMAGE-EXTRACTED data + photos | |
| User Edits: "Change title", "Update amenities", "Add bedroom" | |
| Storage: Images β Cloudflare with smart filenames (location_title_date.jpg) | |
| METHOD 3: VIDEO | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| User Flow: | |
| User Clicks: "List with Video" | |
| β | |
| User Uploads: Video (walkthrough, 2-5 minutes) | |
| β | |
| Backend: Uploads to Cloudinary with smart filename | |
| β | |
| System Suggests: "Video uploaded! Please upload 2-3 photos for analysis" | |
| β | |
| User Uploads: 2-3 photos | |
| β | |
| Backend: EXTRACTS data from PHOTOS (same as IMAGE method) | |
| β | |
| Result: DATA FROM PHOTOS + VIDEO URL | |
| Data Source: | |
| ββ Bedrooms: FROM PHOTO ANALYSIS β | |
| ββ Bathrooms: FROM PHOTO ANALYSIS β | |
| ββ Amenities: FROM PHOTO ANALYSIS β | |
| ββ Title: AI-GENERATED from PHOTOS β | |
| ββ Description: AI-GENERATED from PHOTOS β | |
| ββ Images: FROM PHOTOS β | |
| ββ Video: FROM UPLOADED VIDEO β | |
| ββ Price/Location: USER PROVIDED β | |
| UI Shows: Draft card with PHOTO data + video embedded | |
| User Edits: Same as IMAGE method | |
| Storage: | |
| ββ Photos β Cloudflare (smart filenames) | |
| ββ Video β Cloudinary | |
| ``` | |
| --- | |
| ## File Storage Comparison | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β STORAGE LOCATIONS β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| TEXT METHOD: | |
| Images β Cloudflare (smart filename) | |
| ββ Example: Lagos_Apartment_2025_01_31_0.jpg | |
| IMAGE METHOD: | |
| Photos β Cloudflare (smart filenames) | |
| ββ Example: Lagos_Modern_Apartment_2025_01_31_0.jpg | |
| ββ Example: Lagos_Modern_Apartment_2025_01_31_1.jpg | |
| ββ Example: Lagos_Modern_Apartment_2025_01_31_2.jpg | |
| VIDEO METHOD: | |
| Photos β Cloudflare (smart filenames) | |
| ββ Example: Lagos_3Bed_Apartment_2025_01_31_0.jpg | |
| ββ Example: Lagos_3Bed_Apartment_2025_01_31_1.jpg | |
| ββ Example: Lagos_3Bed_Apartment_2025_01_31_2.jpg | |
| Video β Cloudinary | |
| ββ Example: Lagos_Property_Video_2025_01_31_0.mp4 | |
| ``` | |
| --- | |
| ## Title & Description Details | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β TITLE (SHORT) vs DESCRIPTION (FULL) β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| TITLE GENERATION (IMAGE/VIDEO METHOD): | |
| ββββββββββββββββββββββββββββββββββββββββ | |
| Format: MAX 2 SENTENCES - Keep it SHORT! | |
| β GOOD Examples: | |
| - "Modern 3-Bed Apartment. Great location!" | |
| - "Spacious family home with garden." | |
| - "Luxury studio in downtown area. Fully furnished!" | |
| - "Cozy 2-bed with AC and parking. Prime location!" | |
| β BAD Examples (too long): | |
| - "This is a beautiful 3-bedroom, 2-bathroom modern apartment with contemporary furnishings..." | |
| - "A stunning property featuring modern amenities, excellent lighting, perfect for families..." | |
| DESCRIPTION GENERATION (IMAGE/VIDEO METHOD): | |
| ββββββββββββββββββββββββββββββββββββββββββββββ | |
| Format: FULL 2-3 SENTENCE DESCRIPTION | |
| Example: | |
| "Beautiful 3-bedroom, 2-bathroom modern apartment featuring contemporary | |
| furnishings, air conditioning, WiFi, and private balcony overlooking the | |
| city. Located in a secure, gated community with excellent amenities." | |
| TEXT METHOD: | |
| ββββββββββββ | |
| User-provided title and description (not generated by AI) | |
| ``` | |
| --- | |
| ## Smart Filename Examples | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β INTELLIGENT FILENAME GENERATION β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| Pattern: {location}_{title}_{timestamp}_{index}.jpg | |
| Examples with different properties: | |
| ββββββββββββββββββββββββββββββββββββββ | |
| Property 1: 3-bed in Lagos | |
| AI-Generated Title: "Modern Apartment with Pool" | |
| Generated Filenames: | |
| ββ Lagos_Modern_Apartment_With_Pool_2025_01_31_120530_0.jpg | |
| ββ Lagos_Modern_Apartment_With_Pool_2025_01_31_120530_1.jpg | |
| ββ Lagos_Modern_Apartment_With_Pool_2025_01_31_120530_2.jpg | |
| Property 2: Cozy studio in Cotonou | |
| AI-Generated Title: "Affordable Studio Apartment" | |
| Generated Filenames: | |
| ββ Cotonou_Affordable_Studio_Apartment_2025_01_31_145000_0.jpg | |
| ββ Cotonou_Affordable_Studio_Apartment_2025_01_31_145000_1.jpg | |
| Property 3: Luxury 5-bed villa in Victoria Island | |
| AI-Generated Title: "Luxury Villa with Garden" | |
| Generated Filenames: | |
| ββ Victoria_Island_Luxury_Villa_With_Garden_2025_01_31_090000_0.jpg | |
| ββ Victoria_Island_Luxury_Villa_With_Garden_2025_01_31_090000_1.jpg | |
| ββ Victoria_Island_Luxury_Villa_With_Garden_2025_01_31_090000_2.jpg | |
| ββ Victoria_Island_Luxury_Villa_With_Garden_2025_01_31_090000_3.jpg | |
| CLOUDFLARE WORKER DEDUPLICATION: | |
| βββββββββββββββββββββββββββββββββ | |
| If same filename uploaded twice: | |
| 1st upload β Lagos_Modern_Apartment_With_Pool_2025_01_31_120530_0.jpg | |
| 2nd upload β Lagos_Modern_Apartment_With_Pool_2025_01_31_120530_0_1.jpg | |
| 3rd upload β Lagos_Modern_Apartment_With_Pool_2025_01_31_120530_0_2.jpg | |
| ``` | |
| --- | |
| ## Unified Response Format | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β SAME RESPONSE FORMAT FOR ALL THREE METHODS β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| All three methods return the EXACT SAME structure: | |
| { | |
| "success": true, | |
| "listing_method": "text" | "image" | "video", β Method identifier | |
| "extracted_fields": { | |
| "bedrooms": 3, β Number or null | |
| "bathrooms": 2, β Number or null | |
| "amenities": ["WiFi", "AC", "Parking"], β Array of strings | |
| "description": "Beautiful apartment...", β Full description (2-3 sentences) | |
| "title": "Modern 3-Bed. Great location!" β SHORT title (max 2 sentences) | |
| }, | |
| "confidence": { β How confident AI is | |
| "bedrooms": 0.95, β 0.0 to 1.0 | |
| "bathrooms": 0.88, | |
| "amenities": 0.72, | |
| "title": 0.85, | |
| "description": 0.90 | |
| }, | |
| "image_urls": [ β Photo URLs | |
| "https://imagedelivery.net/lojiz/Lagos_Modern_Apartment_2025_01_31_0/public", | |
| "https://imagedelivery.net/lojiz/Lagos_Modern_Apartment_2025_01_31_1/public" | |
| ], | |
| "video_url": "https://cloudinary.../video.mp4", β ONLY for video method | |
| "suggestions": [ β Next steps | |
| "Verify bedroom count", | |
| "Upload more photos for better accuracy" | |
| ] | |
| } | |
| FRONTEND RECEIVES: | |
| β Same structure | |
| β Shows same UI | |
| β Same editing experience | |
| β Same publishing flow | |
| Only difference: listing_method and video_url (if applicable) | |
| ``` | |
| --- | |
| ## Decision Tree | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β HOW USER LISTS? β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| START | |
| β | |
| βΌ | |
| Does user have details? | |
| / \ | |
| YES NO | |
| / \ | |
| βΌ βΌ | |
| Uses CHAT: Uses UPLOAD: | |
| Provides Uploads | |
| details via photos/video | |
| text directly | |
| β β | |
| β ββββ Is it a video? | |
| β / \ | |
| β YES NO | |
| β / \ | |
| β βΌ βΌ | |
| β VIDEO METHOD IMAGE METHOD | |
| β (upload video) (upload photos | |
| β + photos only) | |
| β | |
| ββββββββββββ Uploads photos to validate | |
| β | |
| βΌ | |
| TEXT METHOD | |
| (validate | |
| with photos) | |
| β | |
| βΌ | |
| BACKEND PROCESSES: | |
| βββββββββββββββββββββββββββββββββββββ | |
| β 1. Validate image (property?) β | |
| β 2. Extract/validate fields β | |
| β 3. Generate title + description β | |
| β 4. Create smart filenames β | |
| β 5. Upload to Cloudflare/Cloudinaryβ | |
| βββββββββββββββββββββββββββββββββββββ | |
| β | |
| βΌ | |
| RETURN SAME FORMAT | |
| (bedrooms, bathrooms, | |
| amenities, title, | |
| description, images, | |
| confidence, video_url) | |
| β | |
| βΌ | |
| FRONTEND SHOWS | |
| UNIFIED DRAFT UI | |
| β | |
| βΌ | |
| USER EDITS + PUBLISHES | |
| ``` | |
| --- | |
| ## Quick Reference | |
| ``` | |
| METHOD INPUT EXTRACTION OUTPUT | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| TEXT Text details From text Complete data | |
| + photos + validate from text | |
| photos + photos | |
| IMAGE Photos only From images Complete data | |
| (no text) (AI analyzes) from images | |
| VIDEO Video From photos Complete data | |
| + photos (AI analyzes) from photos | |
| + video URL | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| COMMON THEME: All produce same result β same UI β same experience | |
| ``` | |