Volet 1 · Photo Protocol par pièce

1 photo par zone. 4 niveaux d'anomalie. 56 zones. 19 types de biens.

L'agent ménage ne devient pas photographe immobilier. 1 photo de l'état RAS suffit. Des extras proportionnels documentent les anomalies. Le score chute par pénalité, jamais par seuil arbitraire.

Backend prêt v1.0.0
RAS
1photo
0 pénalité
Rien à signaler
MINOR
2photos
−5 pts · score zone
Anomalie mineure
DEGRADATION
3photos
−15 pts · commentaire obligatoire
Dégradation
SEVERE
4photos
−30 pts · commentaire obligatoire
Dégradation sévère

Quelques exemples de 19 typologies de biens

Apartment T2 · 6 photos Villa 5ch · 15 photos Château · 19+ photos Voilier 3 cabines · 9 photos Yourte SdB partagée · 2-3 photos Cabane plateforme · 3-4 photos Loft open-space · 4 photos Phare panorama · 6 photos

Calcul automatique

`computePhotoZones()` résout zones obligatoires + conditionnelles via hiérarchie listing → property → fallback profile type.

Limites · max 40/mission · 2s anti-spam

Score précis

Score par zone + score global = 100 − Σ pénalités. Manager voit immédiatement où concentrer attention.

Plancher · 0 · 5 index DB

Certificat horodaté

CERT-YYYYMMDD-XXXX format · QR vérifiable public · signature manuscrite voyageur · dispute workflow 1:N signatures.

États · DRAFT → ISSUED → SIGNED
Volet 2 · QR & NFC check-in / check-out · géofencing GPS

Pointage horodaté. GPS dans un rayon de 150m. Détection de fraude à 6 niveaux.

L'agent scanne le QR du boîtier clés en arrivant. Le serveur croise GPS Haversine, EXIF photo, hash SHA-256 et timestamps EXIF avec tolérance ±5 minutes. Trois méthodes de pointage. Six vecteurs de fraude. Une quarantaine automatique.

Backend prêt
Côté agent

Scan QR boîtier clés

Le boîtier clés porte un QR avec UUID property scoped tenant. L'agent ouvre l'app, scanne, le pointage check-in est créé avec GPS + timestamp + device_id.

UUID_RE · DEVICE_ID_RE · backend whitelist only
Côté serveur

Cross-check 6 méthodes fraude

Validation Haversine GPS · EXIF timestamp ±5min · hash SHA-256 cross-session · résolution photo · device fingerprint · device_id unauthorized.

GPS_MISSING GPS_MISMATCH TIMESTAMP_MISMATCH EXIF_MISSING RESOLUTION_BELOW DUPLICATE_DETECT
Quarantaine · auto si ≥1 FRAUD || ≥3 SUSPICIOUS

Géofencing 150m

Calcul Haversine entre GPS check-in et coordonnées Property. Tolérance configurable par tenant.

EXIF timestamp

DateTimeOriginal de la photo doit matcher ±5 min avec la session active. Détection retouche.

SHA-256 cross-session

Hash chaque photo URL · détection doublons inter-missions inter-agents · idempotency key @unique.

Anti-VPN

Vote pondéré : GPS propriété 0.5 + adresse 0.25 + GPS agent 0.15 + EXIF photo 0.1. Flag VPN_SUSPECTED_*.

Volet 3 · Enregistrement propriétés · 3 profils donneurs d'ordre

Particulier. Conciergerie. Cleaning Company. Même backend. Trois UX.

Le propriétaire Airbnb solo de 3 biens et la cleaning company de 80 agents partagent le même schéma Prisma multi-tenant. Mais l'expérience est radicalement différente. Onboarding ultra-simple ou dashboard avancé avec KPI agence.

Personas ratifiés · backend prêt
Profil A

Le particulier

Propriétaire individuel · 1-5 biens · Airbnb · CESU ou auto-entrepreneur · non-expert numérique · 1-10 sessions/mois.

  • Onboarding 3 écrans
  • Terminologie vulgarisée
  • Rassurance photo · état avant/après
  • Pas de PMS integration
Freemium ≤3 biens · 9€/mois ≤10 biens
Profil B

La conciergerie

B2B2C · 10-500 biens pour propriétaires tiers · équipe 2-20 · 50-500 sessions/mois.

  • Multi-biens dashboard + KPI
  • PMS Airbnb · Booking · Vrbo
  • Rôles équipe · automatisations
  • Reporting mensuel propriétaires
Business 49€/mois ≤10 biens · Pro 199€/mois illimité
Profil C

La cleaning company

5-200 agents salariés · clients particuliers + conciergeries + hôtels · 100-2000 sessions/mois.

  • Planning équipe + paie RH
  • Facturation multi-client B2B
  • Tournées géo-optimisées
  • Certification qualité agent ≥95
Enterprise 299€/mois · 20 agents · 50 clients

Multi-tenant strict

organization_id scoping global via `requireTenantScope()`. Cross-org leak = 404 (pas 403). Verify property org avant créer session.

PMS sync

Listing.listing_type = airbnb · vrbo · booking · direct. Calendar integration · external_id · sync_status automatique.

Switch dynamique pays

Agent traverse FR → ES → MA même semaine, l'app s'adapte : langue · devise · régime juridique · salaire minimum · notation policy.

Volet 4 · Gamification CECRL · 6 tiers · XP · avatars · boss battle

De ROOKIE à DIVINE. Le ménage devient une progression. Sans culpabilisation.

Chaque mission complétée donne du XP. Chaque streak protège la dignité. Six tiers alignés sur les niveaux CECRL pour les agents qui apprennent la langue. Trois univers d'avatars personnalisables. Boss battles évaluent les compétences sommatives.

Modèle Prisma codé
Rookie
0 – 99 XP
A1.1 – A1.3
Explorer
100 – 299
A2.1 – A2.3
Commander
600 – 999
B2.1 – B2.3
Legend
1000 – 1499
C1.1 – C1.3
Divine
1500 +
C2 · maître

Progression XP

1ère tentative correcte+15 XP
2e tentative+10 XP
3e tentative+5 XP
5-streak bonus+25 XP
10-streak bonus+50 XP
Mission complète+100 XP
Mission parfaite+200 XP

3 univers d'avatars

Réaliste 50+ pays · Vectrys spatial · superhero. Customization granulaire skin tone · cheveux · yeux · morphologie.

Boss battles CECRL

Évaluations sommatives avec grille CECRL. Certificat de compétences à QR code vérifiable. Disclaimer clair · pas diplôme d'État.

LanguageProgress

listening · speaking · reading · writing scores 0-100. Streak counters. Visible dashboard agent + manager pour suivi formation.

Volet 5 · Planning · horaires · tournée biomimétique · Mission FSM

Huit états de mission. Une tournée optimisée biomimétique. Un planning consultable à l'avance.

La machine d'états Mission FSM traduit le terrain réel : missions assignées, acceptées, en cours, pausées, terminées, validées, annulées. Le moteur d'optimisation calcule la tournée la plus courte selon le mode de déplacement déclaré.

Modèle Prisma + routes codés

Machine d'états Mission · 8 statuts

pending assigned accepted in_progress paused completed validated cancelled

Consultation à l'avance

L'agent consulte ses missions de la semaine · scheduled_date + scheduled_start_time + estimated_duration_min. Tasks JSON détaillées par mission.

GET /missions?housekeeper_id

Tournée biomimétique

Optimization géo selon mode déplacement déclaré (voiture · pieds · transports). Calcul CO2 + temps + rentabilité par tournée.

F21 SWOT · moat technique

Event pipeline

MISSION_STARTED · MISSION_COMPLETED · MISSION_CANCELLED → eventPipelineService → cascade processMissionStockCascade automatique.

PATCH /missions/:id/status

SLA agent

Fenêtre check-in serrée signalée 2h17 avant. Notifications proactives sans flicage.

Incidents & SOS

Modèle incidents · sos_events liés à mission. Dispatch manager immédiat · workflow escalade.

Mission reports

Rapport fin de mission · queued offline · sync IDB cross-reconnect · supertest E2E.

Stats perso

Missions/SLA/note moyenne agent · /stats/agent/:id endpoint · CV portable agent inter-employeurs.

Volet 6 · Stickers analphabétisme · accessibilité radicale

L'identification produit sans savoir lire. Sticker physique. Image identique dans l'app. Voix native.

Le sticker porte un pictogramme universel + un QR code, imprimé depuis Vectrys Lingua sur fiche mémo A5. L'employeur colle sur la bouteille. L'agent scanne, l'image apparaît à l'écran, la voix dit le nom dans sa langue maternelle.

Brevet candidate · mockup détaillé

Maria, 55 ans, Cap-Verdienne, quasi-illettrée.

Maria reconnaît les produits à la couleur du bouchon. Avec Vectrys, l'image du sticker physique correspond à l'image dans l'app. Elle scanne, elle entend "Nettoyant sol" en portugais, elle sait que le produit va dans la cuisine. La dignité est préservée — on ne lui demande jamais "savez-vous lire".

Voir le mockup détaillé

5 langues natives · TTS souverain EU

FRNettoyant sol
ENFloor cleaner
ESLimpiador
PTLimpa-chão
ARمنظف

Fiche mémo A5 imprimable

10 stickers par feuille · QR codes · pictogrammes universels · employeur télécharge depuis Lingua puis imprime.

Apprentissage incident

Chaque scan alimente discrètement le vocabulaire dans Lingua catégorie Produits 🧴. Pas de notification durant le service.

Partenariats ANLCI · AEFTI

Inclusion lutte illettrisme · 15% population FR + 3 milliards d'agents sans smartphone dans le monde · marché captif inexploité.

Volet 7 · Modules connexes · RH · Stock · Accessibility

DRH stratégique. Stock multi-zones. 7+1 profils d'accessibilité radicale.

Le portail n'est pas qu'un outil terrain. C'est un écosystème : un dashboard RH opérationnel et stratégique, une gestion de stock multi-zones avec marketplace fournisseurs, et un toolkit accessibilité étendu jusqu'à l'illettrisme.

Specs détaillées

Dashboard RH opérationnel · J → J+30

127 agents actifs · arrêts maladie en cours · congés · CDD expirant < 15 jours · variables paie · DPAE URSSAF automatique · timesheet lié Gantt missions · Convention Collective Propreté pré-intégrée.

Amplitude · 6h-22h · secteur cleaning

Dashboard DRH stratégique · M+3 → A+3

Budget €3.15M scope · CODIR · syndicats · prud'hommes counsel · décision arbitrage · cohérent compliance multi-pays (CDI/CDD/intérim/CESU/TESE/portage).

20+ contrats · 11 FR + 20 EU

Stock multi-zones

Étages hôtels · secteurs conciergeries · agences · véhicules · chariots mobiles · réserves. Inventaire 4 priorités. ROI -15-20% achats.

Marketplace fournisseurs

Scoring multidimensionnel (fiabilité · qualité · réactivité · prix). Comparaison auto. Pennylane API intégration. Workflow approbation.

A11y toolkit 7+1 profils

Mobilité réduite · malvoyance · daltoniens · auditif · cognitif · seniors · TDH · illettrisme. WCAG AAA · TTS · 80px touch · 28 améliorations.

Volet 8 · Backend production-ready · 97 modèles Prisma · 11 endpoints

100% backend prêt. 43/43 tests verts. Souveraineté EU. Tenant scoping strict.

Le portail n'est pas un projet conceptuel — c'est une plateforme déjà bâtie. Node ESM Express + PostgreSQL 16 + Redis 7 + Prisma 97 modèles. Quarante-trois tests passent. Onze endpoints REST documentés. Sentinel + Vault + Audit Log + Article 9 GDPR avec pgcrypto.

100% prêt

11 endpoints REST · cleaning + sessions + photos + stats

POST/cleaning-sessionsCréer session · tenant scoped
GET/cleaning-sessionsList paginée · filters
POST/photosUpload + EXIF + fraud check
PATCH/completeAgent finalise · score auto
PATCH/cancelRaison ≥5 chars
POST/approve-reviewManager lève quarantaine
GET/certificates/:id/fullVue détaillée + signatures
POST/certificates/:id/disputeManager conteste
GET/stats/agent/:idKPI agent · CV portable
GET/stats/zonesZones problématiques
GET/stats/overviewVue d'ensemble org

Branches Forgejo actives · feature scope visible

demo-aramis-2026-06-02 feat/cleaning-ui-v70 feat/cleaning-certificates-v2 feat/multi-tenant-employee-v1.5 feat/guest-portal-launch-readiness feat/foundation-v2-v1 feat/audit-log-db feat/art9-pgcrypto feat/air-gap-s3 feat/vectrysai-f17-polyglot feat/manager-dashboard-dl9-aramis-demo

Sentinel + Vault

Module sécurité actif · vault metadata enrichment · backup encrypted air-gap S3 · Article 9 GDPR pgcrypto.

Audit log immuable

5 actions tracées : create · update · approve · reject · archive. Source preuve juridique opposable.

Souveraineté EU

Hostinger VPS Paris · pas dépendance cloud non-EU · TTS souverain · YesWeHack bug bounty · pgcrypto local.

Tests verts 43/43

Vitest unitaires + Playwright E2E + supertest API. CI Forgejo Actions souverain. Pre-commit hooks gitleaks.