Household Services App - Complete Specification 1. Overview A digital platform connecting Customers, Admin, and Workers for household services:- Cleaning- Recycling / Transport- Gardening (mowing, snow removal) Features:- Automated price calculation (~20% below market)- Bidding system- Live worker location- Photo verification before/after- Payment and receipt handling- AI customer support 2. Roles & Features Customer:- Submit service request (type, area, date, location)- Get estimated price & bid- Track job status and live location- Review photos & approve or dispute- Receive digital receipt & annual report- Use AI chat (escalation to admin if needed) Admin / Customer Service:- Approve final prices- Send counteroffers- Assign workers- Monitor job progress, images, payments, and stats- Handle disputes and compensation Worker / Driver:- View assigned jobs- Navigate via Google Maps- Update status: 'Arrived' -> photo before; 'Completed' -> photo after- Share live GPS- Upload notes and extra photos 3. Price Calculation Cleaning: (35 * m2) * frequency * 0.8 Example: 80 m2, 1/week -> 2240 SEK/session Recycling / Transport: (10 * km) + (250 * hours) + (100 * volume) Example: 12 km, 2h, 1 m3 -> 620 SEK Gardening / Snow: (25 * m2) * season * 0.8 Example: 100 m2 lawn summer -> 2000 SEK Season factor: Summer = 1.0, Winter = 1.2 4. Subscription Packages (Annual) Cleaning: 4/year (Quarterly) Recycling: 4/year (Quarterly) Gardening: 2/month (Year-round) Snow Removal: As needed / 4/season (Nov-Mar) Flow: Estimate -> Admin approval -> Job scheduled -> Worker status updates -> Customer review-> Payment released -> Receipt generated 5. Job Status Flow pending -> negotiating -> accepted -> in_progress -> completed -> customer_review -> paid / disputed -> receipt_generated 6. Photo Verification & Approval Worker: 'Arrived' -> photo before Worker: 'Completed' -> photo after Customer: Approve -> payment released Customer: Dispute -> upload evidence -> Admin resolves 7. Payment Flow Reserved at booking Released after customer approval Held if disputed until admin resolution 8. AI Support Handles common questions Escalates to admin if AI cannot answer or customer requests human help 9. Database Structure users: userId, role, name, email, phone requests: requestId, customerId, serviceType, parameters, approxPrice, adminApprovedPrice, status, assignedWorkerId, scheduledDate jobs: jobId, requestId, workerId, startTime, endTime, arrivalPhotoUrl, completionPhotoUrl, gpsCoordinates payments: paymentId, requestId, amount, status, timestamp ai_chat_history: chatId, userId, messages, escalated 10. Technical Stack App: Flutter / Dart Backend: Firebase Firestore + Functions Storage: Firebase Storage Payment: Stripe / Klarna / Swish API Maps: Google Maps API Notifications: Firebase Cloud Messaging AI Chat: GPT / NLP + fallback to admin