Uber Énergie

Technical Specification - V1
CONFIDENTIAL

ANA Studio
April 15, 2026
Author: Aaron

1. Context & Objective

Uber Énergie is a B2B2C marketplace connecting energy installers (heat pumps, solar panels, insulation) with a network of independent sales reps.

The installer drops batches of 5 qualified appointments. The sales rep picks up a batch, completes the appointments, closes deals. The platform secures payment and guarantees the commission.

Phase 1 goal: functional platform tested with 4-5 installers and 20-50 sales reps. No integrated payments (manual transfers). Validate the concept before investing in Stripe Connect.

2. User Types

Installer
Sales Rep
Admin

3. User Flows

3.1 Installer drops a batch

Login
Create batch
5 appointments (name, phone, address, slot, notes)
Set price/batch
Publish
Notify sales reps

3.2 Sales rep picks a batch

Browse batches
Filter zone/type
Take batch
WhatsApp chat opens
Complete appointments
Update status

3.3 Appointment lifecycle

planned
accepted
completed
signed
installed

"cancelled" or "disputed" status possible at any stage

3.4 Secure payment (Phase 2)

Installer pays for batch
Stripe Escrow
Sales rep completes appointments
Installer confirms
Payment released

If no confirmation within 72h, auto-release. If dispute, admin arbitrates.

4. Data Model

users
iduuid PK
emailtext UNIQUE
phonetext
full_nametext
roleenuminstaller | sales_rep | admin
company_nametext?installers only
zonetextdepartment/region
energy_typestext[]heat_pump, solar, insulation...
avatar_urltext?
is_eliteboolP3
stripe_account_idtext?P2
created_attimestamp
batches
iduuid PK
installer_iduuid FK→ users
sales_rep_iduuid? FK→ users
statusenumopen | taken | done | cancelled
priceintin cents
zonetext
energy_typetext
taken_attimestamp?
completed_attimestamp?
created_attimestamp
appointments
iduuid PK
batch_iduuid FK→ batches
client_nametext
client_phonetext
client_addresstext
scheduled_attimestamp
statusenumplanned | completed | signed | installed | cancelled
notestext?
updated_attimestamp
reviews
iduuid PK
batch_iduuid FK
reviewer_iduuid FK
reviewed_iduuid FK
ratingint1-5
commenttext?
created_attimestamp
transactions P2
iduuid PK
batch_iduuid FK
payer_iduuid FKinstaller
payee_iduuid FKsales rep
amountintcents
platform_feeint
statusenumpending | held | released | refunded | disputed
stripe_payment_idtext
released_attimestamp?
referrals P2
iduuid PK
referrer_iduuid FK
referred_iduuid FK
codetext UNIQUE
commission_pctdecimal
expires_attimestamp+6 months
total_earnedintcents

5. API Endpoints (main)

Auth

POST/auth/registersign up (role required)
POST/auth/loginemail/password login
POST/auth/forgot-passwordemail reset

Batches

GET/batcheslist available batches (filter zone, type, price)
POST/batchescreate batch + 5 appointments (installer)
GET/batches/:idbatch detail + appointments
POST/batches/:id/taketake a batch (sales rep)
PUT/batches/:id/cancelcancel batch

Appointments

PUT/appointments/:id/statusupdate status (planned → completed → signed → installed)
PUT/appointments/:idedit appointment info

Profiles & Scoring

GET/users/:id/profilepublic profile + stats + reviews
GET/users/memy profile + my batches
POST/reviewsrate after batch completion
GET/leaderboardsales rep ranking

Payments P2

POST/payments/checkoutbatch payment (Stripe Checkout)
POST/payments/release/:batchIdrelease escrow
POST/payments/dispute/:batchIdopen dispute
POST/subscriptions/createsubscription €59.99/mo (sales rep)
POST/webhooks/stripeStripe webhook events

Admin

GET/admin/dashboardKPIs (batches, revenue, users, conversion rate)
GET/admin/usersuser management
PUT/admin/users/:id/validatevalidate sign-up
GET/admin/disputesopen disputes

6. Tech Stack

Next.js 15 (App Router) TypeScript Tailwind CSS Supabase PostgreSQL Supabase Auth Stripe Connect Stripe Billing Vercel Resend WhatsApp Business API
Frontend
  • Next.js 15 App Router, RSC + Server Actions
  • Tailwind + shadcn/ui (components)
  • Supabase Realtime for live notifications
  • Responsive mobile-first (PWA in P3)
Backend
  • Next.js API Routes (no separate backend)
  • Supabase: auth, DB, storage, realtime
  • Row Level Security (RLS) on Supabase
  • Vercel Cron for auto-release escrow 72h
Why Supabase over a custom backend? Auth + DB + Realtime + Storage in one service, free up to 500MB. Row Level Security = native security. Easy to migrate to custom later if needed for scale.

7. Phase Breakdown

Phase 1: MVP 4 weeks

Week 1-2
  • Project setup (Next.js, Supabase, Vercel)
  • Auth (sign-up/login/roles)
  • Public landing page
  • Installer dashboard (CRUD batches)
  • Data model + RLS policies
Week 3-4
  • Sales rep dashboard (browse + take batches)
  • Public profiles + basic scoring
  • Email notifications (Resend)
  • Auto WhatsApp links (wa.me)
  • Basic admin panel
  • Testing + production deploy

Phase 2: Payments & Trust 3 weeks

Week 5-6
  • Stripe Connect onboarding (KYC)
  • Batch payment checkout (escrow)
  • Stripe webhooks (events)
  • Auto-release 72h + dispute handling
Week 7
  • Two-way reviews (post-batch)
  • Stripe Billing subscription €59.99/mo
  • Referral system (code + tracking)
  • Transaction history

Phase 3: Growth & Scale 3 weeks

Week 8-9
  • Elite program (score threshold, badge)
  • Elite: team recruitment + sub-distribution
  • Advanced analytics dashboard (charts)
  • Public leaderboard
Week 10
  • Smart geo filtering (priority matching)
  • PWA (manifest, service worker, push)
  • WhatsApp Business API (automated msgs)
  • Final testing + go live

8. Security & Compliance

Data & GDPR
  • TLS encryption (forced HTTPS)
  • Supabase RLS (role-based access)
  • No credit card storage (Stripe handles it)
  • Right to data deletion
  • Terms of Service + Privacy Policy
Anti-fraud
  • Mandatory email verification
  • Admin validation before first batch
  • 1 active batch max per sales rep (P1)
  • Duplicate account detection (email/phone)
  • Audit logs on critical actions

9. KPIs to Track

Acquisition
  • Active installers count
  • Active sales reps count
  • Sign-up conversion rate
  • Acquisition source
Performance
  • Batches created / taken / week
  • Take rate (taken/created)
  • Conversion rate (signed/appointments)
  • Avg time to batch pickup
Revenue
  • Gross Merchandise Value (GMV)
  • Platform revenue (fees)
  • Subscription MRR
  • Dispute rate

10. Budget

PhaseDurationAmount
Phase 1 - MVP4 weeks€9,000
Phase 2 - Payments & Trust3 weeks€7,500
Phase 3 - Growth & Scale3 weeks€5,500
Total10 weeks€22,000
Post-delivery maintenance (optional): €1,000/mo retainer (bug fixes, minor evolutions, monitoring, support)
ANA Studio – Paris, Abidjan, Casablanca, Ho Chi Minh
Confidential – April 2026