Zeytouni
Marketplace d'achat groupé avec séquestre, pour le Sénégal
Marketplace sénégalaise fondée sur l'achat groupé et la confiance : l'acheteur verse une caution de 30 %, le solde à la livraison, et l'argent reste sous séquestre jusqu'à ce qu'il confirme avoir reçu sa commande. Un copilote IA aide en parallèle les vendeurs à fixer leurs prix et calculer leur seuil de rentabilité.
- 30/70
- caution / reliquat
- 4
- opérateurs mobile money
- 3
- applications
Architecte & développeur — backend, frontend, superadmin
Le commerce en ligne en Afrique de l'Ouest bute sur un problème de confiance dans les deux sens. L'acheteur ne veut pas payer d'avance quelqu'un qu'il ne connaît pas ; le vendeur ne veut pas expédier sans garantie de paiement. Le paiement à la livraison résout la peur de l'acheteur et ruine la trésorerie du vendeur. Il fallait un mécanisme qui protège les deux parties simultanément.
Le cœur du système est un cycle de vie d'engagement en quatre états : caution de 30 % versée, reliquat de 70 % versé, livraison, puis décaissement. L'argent transite par un séquestre et n'est libéré vers le vendeur qu'après confirmation de réception par l'acheteur. Le vendeur sait que les fonds existent, l'acheteur sait qu'il les récupère si rien n'arrive.
Les paiements passent par PayDunya et couvrent les quatre opérateurs de mobile money du marché — Wave, Orange Money, Free Money, Expresso — chacun avec redirection. Deux webhooks entrants distincts gèrent l'IPN de paiement et le décaissement vendeur, parce que ce sont deux flux financiers aux échecs indépendants.
Le copilote vendeur ne fait pas d'IA générative sur les chiffres. Les moteurs de prix, de logistique, de comparaison marché et de seuil de rentabilité sont du calcul déterministe en PHP ; le LLM sert uniquement à expliquer les résultats et à répondre en langage naturel. Sur des décisions de marge, on ne laisse pas un modèle faire l'arithmétique.
- 01
API
Laravel 13 sur PostgreSQL. Deux réalms d'authentification séparés : utilisateurs/vendeurs sous Sanctum, administrateurs sur un modèle Admin distinct avec permissions spatie.
Laravel 13 · Sanctum
- 02
Séquestre & paiements
PayDunya avec les quatre opérateurs mobile money. Webhooks séparés pour l'IPN de paiement et le décaissement vendeur.
PayDunya · webhooks
- 03
Copilote vendeur
Calcul déterministe (prix, logistique, comparaison marché, seuil de rentabilité) + une couche RAG pour l'explication en langage naturel.
PHP engines · RAG
- 04
Stockage
Cloudflare R2 pour les médias produits — pas d'egress facturé, ce qui compte quand le catalogue est très visuel.
Cloudflare R2
- 05
Économie de jetons
Packs, achats, transactions et codes de rachat, plus les boosts produits et les annonces vendeurs.
domain models
- 06
Interfaces
Un front acheteur/vendeur et un superadmin séparé, tous deux en Next.js 16 avec shadcn/ui.
Next.js 16
Deux modèles d'authentification, pas un champ `is_admin`
Sur une plateforme qui manipule de l'argent en séquestre, un booléen sur la table utilisateurs est une élévation de privilèges à une requête d'écriture près. Les administrateurs vivent donc sur un modèle et un realm distincts, derrière leur propre middleware et leurs propres permissions. Le coût est un peu de duplication ; le bénéfice est qu'aucun bug côté utilisateur ne peut produire un admin.
L'arithmétique reste déterministe
Il aurait été plus rapide de demander au LLM de calculer un prix conseillé. Mais un modèle qui se trompe de 8 % sur une marge coûte de l'argent réel à un commerçant, et l'erreur est invisible parce que la réponse reste plausible. Les formules sont donc écrites et testées en PHP ; l'IA reste sur ce qu'elle fait bien — expliquer.
- Cycle d'achat groupé en quatre états avec fonds sous séquestre jusqu'à confirmation de livraison
- Les quatre opérateurs mobile money du marché sénégalais via PayDunya
- Copilote vendeur : prix conseillé, logistique, comparaison marché et seuil de rentabilité
- Gestion des litiges, retraits vendeurs, coupons, boosts produits et annonces
- Deux realms d'authentification isolés et permissions granulaires côté administration