AI Sale

L’achat-revente de smartphones, en pilote automatique.

Un outil qui repère les smartphones d’occasion vendus sous le prix du marché, laisse un LLM négocier leur achat, puis les remet en vente et gère les acheteurs.

Rôle
Conception & développement
Stack
Python · LLM · Scraping
Résultat
~100 smartphones qualifiés / jour
Année
2026
main.py
# AI Sale - achat-revente de smartphones d'occasionfrom sourcing import scrape_listingsfrom pricing import market_prices, find_dealsfrom swipe import reviewfrom agent import negotiate, publish_listing, handle_buyersdef acheter(seuil=50):    scrape_listings()                      # annonces -> base de données    prix = market_prices()                 # moyenne & médiane par modèle    deals = find_deals(prix, seuil=seuil)  # X € sous le marché    for item in review(deals):             # swipe à droite = retenu        negotiate(item)                    # le LLM contacte le vendeurdef revendre(phone):                       # une fois le téléphone testé    publish_listing(phone)                 # le LLM rédige et publie    handle_buyers(phone)                   # questions, offres, contre-offres

Extraits simplifiés, réécrits pour illustrer le fonctionnement.

Le constat

Trouver un smartphone sous le prix du marché, c’est des heures à éplucher les annonces, comparer les prix et négocier, avant même de penser à la revente.

La réponse

Calculer le vrai prix de chaque modèle, remonter les bonnes affaires et confier la négociation et la revente à un LLM. Il ne reste qu’à swiper et tester.

Comment ça marche.

  1. 01

    Scraping & base de données

    Un script récupère en continu les annonces de téléphones, anciennes comme nouvelles, sur les plateformes de seconde main. Chaque annonce est rangée en base par attributs : marque, modèle, couleur, stockage, état de la batterie, prix…

    sourcing.py
    FIELDS = ["marque", "modele", "couleur", "stockage",          "etat_batterie", "prix", "photos", "url"]def scrape_listings():    for platform in PLATFORMS:             # plateformes de seconde main        for ad in platform.search(categorie="telephones"):            phone = extract_attributes(ad, FIELDS)            db.upsert("annonces", phone, key="url")
  2. 02

    Le prix du marché

    Pour chaque modèle, le script calcule le prix moyen et le prix médian. Il remonte ensuite les annonces sous la moyenne d’un écart réglable, par exemple 50 €.

    pricing.py
    import pandas as pddef market_prices():    df = pd.read_sql("SELECT * FROM annonces", db)    return (df.groupby(["marque", "modele", "stockage"])["prix"]              .agg(moyenne="mean", mediane="median", nb="count"))def find_deals(prix, seuil=50):    df = pd.read_sql("SELECT * FROM annonces WHERE statut = 'nouveau'", db)    df = df.join(prix, on=["marque", "modele", "stockage"])    return df[df["prix"] <= df["moyenne"] - seuil]
  3. 03

    Tri en un swipe

    Les bonnes affaires défilent sous forme de cartes : photo, prix, écart avec le marché. À droite, l’article est retenu ; à gauche, il est oublié.

    Exemple

    Bonnes affaires

    24 à trier · seuil -50 €

    iPhone 13 · 128 Go

    Minuit · Batterie 89 %

    320 €-62 € vs marché

    Moyenne 382 € · Médiane 375 €

  4. 04

    Négociation par le LLM

    Pour chaque article retenu, le LLM contacte le vendeur et tente de faire baisser le prix. On n’intervient qu’au moment d’acheter, que la négociation ait abouti ou non.

    Annonce « iPhone 13 128 Go » · 320 €

    Exemple

    Bonjour ! Votre iPhone 13 est-il toujours disponible ? Je peux vous proposer 290 € avec un paiement rapide.

    ✦ Envoyé par le LLM

    Bonjour, oui. Je peux descendre à 305 €, pas moins.

    Ça me va pour 305 €. Je vous confirme l’achat dans la journée.

    ✦ Négocié par le LLM · achat à valider

  5. 05

    Test et remise en vente

    À réception, le téléphone est testé. Le LLM reçoit les photos et la description de l’annonce d’origine, puis rédige et publie la nouvelle annonce.

    Exemple

    iPhone 13 128 Go Minuit - Très bon état

    379 €

    • Très bon état
    • Batterie 89 %
    • Testé

    iPhone 13 128 Go coloris Minuit, testé et vérifié à réception : écran, appareil photo et batterie à 89 %. Envoi soigné et rapide.

    ✦ Annonce rédigée par le LLM

  6. 06

    Service client

    Le LLM répond aux questions des acheteurs, refuse les offres trop basses et fait des contre-offres.

    Votre annonce « iPhone 13 128 Go » · 379 €

    Exemple

    Bonjour, vous le laissez à 320 € ?

    Bonjour ! 320 € c’est un peu bas pour un modèle testé avec 89 % de batterie. Je peux vous le faire à 360 €.

    ✦ Contre-offre du LLM

Le pipeline complet.

  1. 01

    Scraping

    Script
  2. 02

    Prix du marché

    Script
  3. 03

    Swipe

    Moi
  4. 04

    Négociation

    LLM
  5. 05

    Achat & test

    Moi
  6. 06

    Revente & SAV

    LLM

Le script et le LLM font le travail répétitif ; les décisions d’achat et le test restent humains.

~100

smartphones repérés chaque jour sous le prix du marché.

Ce que j’en retiens.

  • La donnée fixe le prix

    Le prix moyen et médian calculé sur toutes les annonces remplace l’intuition : on sait tout de suite si une affaire en est une.

  • Automatiser, pas déléguer

    Le script fait le tri et prépare l’offre, mais la décision finale reste humaine.

  • Partir d’un vrai besoin

    Un outil construit pour mon propre usage, testé au quotidien et amélioré au fil des annonces.