Marketplace · Case study

VendoHub AI

Il venditore compone l’annuncio, Google Vision analizza le foto, un revisore decide se pubblicarlo.

VendoHub AI è un marketplace Laravel che ho sviluppato per intero: composizione dell’annuncio con anteprima dal vivo, elaborazione delle immagini in coda, dashboard di revisione e un Listing Coach basato su regole. Ricerca, chat, preferiti e area account stanno intorno all’annuncio pubblicato.

Apri la repository (si apre in una nuova scheda)

Il codice è pubblico, la demo no: tutte le schermate qui sotto arrivano da un clone locale con dati demo.

Schermata di composizione VendoHub: un form con campi titolo, marca, prezzo, categoria e tag, un pannello descrizione e una card di anteprima dal vivo con immagine, categoria e prezzo del prodotto.
La schermata di composizione. Campi strutturati a sinistra, descrizione al centro, anteprima dal vivo a destra.

01 Flusso di pubblicazione

Dalla creazione dell’annuncio alla pubblicazione.

Cinque fasi lavorano sullo stesso annuncio. I job automatici aggiungono informazioni, ma nessuno di loro decide se può essere pubblicato.

  1. 01 Persona

    Composizione

    Il venditore compila campi strutturati — titolo, marca, prezzo, categoria, tag — e carica fino a sei immagini. L’anteprima accanto al form si aggiorna mentre scrive.

  2. 02 Sistema

    Elaborazione delle immagini

    Il salvataggio avvia una catena di job in coda: rileva e maschera i volti, ritaglia un 300 × 300 con watermark, poi legge da Google Vision i rating SafeSearch e le label.

  3. 03 Sistema

    In coda per la revisione

    L’annuncio viene salvato senza nessuna decisione. Compare nella dashboard del revisore insieme a immagini, label e rating di sicurezza.

  4. 04 Persona

    Decisione

    Un revisore accetta o rifiuta l’annuncio. È l’unica fase che cambia la sua possibilità di arrivare in catalogo.

  5. 05 Persona

    Interazione nel marketplace

    L’annuncio accettato entra in catalogo, dove subentrano ricerca, preferiti, chat e carrello di sessione.

02 Architettura

L’elaborazione delle immagini avviene fuori dalla richiesta.

Mascherare i volti e interrogare una vision API è troppo lento per farlo mentre il venditore aspetta: succede in una catena di job in coda. Tutto il resto è un’applicazione Laravel normale.

Seleziona un livello per leggere di cosa si occupa.

Interfaccia

La composizione è un componente Livewire: è quello che permette all’anteprima di ridisegnarsi mentre il venditore scrive, invece che dopo l’invio del form.

Applicazione

Un venditore può modificare soltanto i propri annunci e la dashboard di revisione sta dietro un middleware dedicato. Fortify gestisce autenticazione e rate limiting sul login.

Dominio e dati

Le schermate di venditore, acquirente e revisore leggono lo stesso modello Article. È predisposto per l’indicizzazione con Scout, ma la ricerca pubblica gira ancora su filtri testuali Eloquent: l’indice è collegato, non attivo.

Coda media

Google Vision viene chiamato qui, nella coda, e mai nella richiesta in cui il venditore sta aspettando. Le risposte vengono salvate accanto all’immagine e rilette dopo dal revisore.

03 Moderazione

Cosa restituisce l’analisi e cosa ne fa il revisore.

I risultati di Vision vengono salvati per ogni immagine e mostrati accanto all’annuncio. Accettare e rifiutare sono le uniche due azioni che portano un annuncio dentro o fuori dal catalogo, e sono entrambe umane.

Dashboard di revisione VendoHub con un annuncio di poltrona in attesa: categoria, prezzo, venditore demo, stato corrente e descrizione.
Un annuncio in attesa come lo riceve il revisore: venditore demo, stato corrente, descrizione e immagine già elaborata.

Seleziona uno stato per leggere cosa comporta per l’annuncio.

In attesa

Qui arriva ogni nuovo annuncio. Esiste, non è in catalogo e resta nella coda di revisione con le sue immagini già elaborate.

Accettato

Il revisore ha approvato l’annuncio. Diventa idoneo al catalogo e si può trovare da ricerca e pagine di categoria.

Rifiutato

Il revisore ha respinto l’annuncio. Resta al venditore e fuori dal catalogo.

Cosa produce il livello automatico

  • I volti trovati in un caricamento, mascherati prima che l’immagine venga salvata.
  • Un crop fisso 300 × 300 con il watermark del progetto.
  • Le probabilità SafeSearch, convertite in stati che la dashboard può mostrare.
  • I risultati del rilevamento label, conservati come contesto per chi revisiona.

Il prodotto include un pannello con etichette e valutazioni SafeSearch, ma in questa cattura il testo è troppo piccolo per essere letto.

Dettaglio dei controlli del revisore: un pulsante Rifiuta e un pulsante Accetta.
I due controlli che cambiano lo stato. Nessun job automatico può premerli.

04 Listing Coach

Un punteggio 0–100 basato su regole esplicite.

La console venditore valuta quanto è completo un annuncio e affianca il punteggio ai suoi numeri di traffico. Il prodotto lo chiama AI; sotto il cofano ci sono regole e soglie esplicite.

Card del Listing Coach VendoHub che assegna 76 su 100 a un annuncio di cuffie, con conteggi di visite, click, preferiti e chat, due diagnosi, tre azioni consigliate e un prezzo suggerito.
Un annuncio a 76 su 100: due diagnosi, tre azioni consigliate e un prezzo suggerito più basso, perché le visite non si stanno trasformando in messaggi.

Come si somma il punteggio

Seleziona un criterio per vedere quali segnali legge.

Massimo 100

Segnali che legge

  • Lunghezza descrizione
  • Numero immagini
  • Categoria
  • Prezzo
  • Lunghezza titolo
  • Stato evidenza
  • Visite
  • Click
  • Preferiti
  • Messaggi
  • Giorni online

Gli ultimi cinque segnali alimentano la diagnosi e il suggerimento sul prezzo, non il punteggio.

05 Limiti

Cosa non fa ancora.

Il progetto funziona da capo a fondo in locale. Quello che segue è ciò che ancora non fa.

  • Non c’è traffico di produzione, quindi non ci sono dati su conversioni o ricavi. Non è stata condotta ricerca con utenti.
  • La ricerca pubblica gira su filtri testuali Eloquent. Scout è integrato nel modello ma non serve le query.
  • Il Listing Coach è basato su regole. La dicitura «AI» appartiene al linguaggio del prodotto e non indica un modello generativo.
  • Il checkout registra una transazione completata dentro il prototipo. Non è un’integrazione di pagamento verificata.