Molti credono che nell'era dell'AI generativa basti un prompt magico per creare un business. La verità è che l'AI, senza una solida ingegneria del software alla base, è solo un generatore di prototipi instabili.
Nelle ultime 200 ore di sviluppo, ho costruito SeptimaDomus, una web app di astrologia basata su calcoli astronomici reali. Oltre alla vendita di Temi Natali e analisi di Affinità, il cuore pulsante del progetto è una vera e propria Media Factory automatizzata che genera Reel per Facebook e Instagram.

I risultati? A meno di un mese dal lancio (il primo mese scatta il 24 luglio), la pagina Facebook ha registrato 3.285.983 visualizzazioni, 54.000 interazioni e 4.560 follower netti, con 0€ di budget pubblicitario.
In questo articolo sul mio blog voglio portarvi "sotto il cofano" e mostrarvi come ho ingegnerizzato questo sistema, tenendo i costi a 3 centesimi per video e obbligando Claude Code a rispettare la Clean Architecture.

1. L'Architettura: Clean Architecture, CQRS e Wolverine
Quando sai che l'applicazione dovrà orchestrare chiamate API esterne, gestire scheduling asincroni e pagamenti, non puoi scendere a compromessi con l'architettura.
Ho optato per una Clean Architecture pura, implementando il pattern CQRS (Command Query Responsibility Segregation). Invece del classico MediatR, ho scelto Wolverine. Il motivo? Wolverine riduce drasticamente il boilerplate, offrendo una gestione nativa dell'outbox pattern e un bus di messaggistica integrato che si sposa perfettamente con le code.
Tutto il sistema è progettato per essere idempotente e totalmente incapsulato: un comando eseguito due volte per errore non produrrà mai side-effect indesiderati.
2. La Pipeline Video Programmatica (a 0.03€ a Reel)
Creare un video interamente con l'AI oggi costa tra i 2.50€ e i 10€ a render. Facendo 1-2 Reel al giorno, senza un ritorno economico immediato, è un suicidio finanziario per un progetto in bootstrap. Inoltre, ho notato che il mio target principale (utenti tra i 45 e i 70 anni su Facebook) preferisce contenuti più tradizionali e leggibili.
Ho quindi creato una pipeline custom e cruda, gestita interamente via codice:
-
Testi e Prompting: Gemini genera la caption e il testo da leggere, partendo da un prompt di base blindato e da un prompt "tematico" recuperato dal database (es. tema "Superpoteri" o "ImpossibileDaDimenticare").
-
Audio e TTS: Utilizzo Fal.ai per generare l'audio vocale.
-
Compositing con SkiaSharp: Sfrutto SkiaSharp per disegnare programmaticamente il testo e i sottotitoli dinamici sopra un'immagine fissa.
-
Montaggio con FFmpeg: Infine, passo tutto a FFmpeg che unisce audio, l'immagine renderizzata e applica un leggero effetto di zoom-in e zoom-out per dare dinamismo.
Il risultato? Un Reel altamente performante che mi costa appena 0.03€. Ho fatto dei test su TikTok con video AI ultra-dinamici nei primi 3 secondi: funzionano, hanno fatto 20k views, ma per ora il ROI non giustifica i costi rispetto al formato "statico".
3. Human-in-the-Loop via Telegram
Non ci si può mai fidare ciecamente dell'AI quando si pubblica sui social. Per questo ho implementato un sistema di approvazione umano.
Ogni giorno alle 18:00, Hangfire fa scattare un job che mi invia su Telegram il Reel programmato per le 19:00 del giorno successivo.
-
Se mi piace, lo lascio passare.
-
Se l'AI ha generato qualcosa di strano, lo elimino tramite il bot.
-
A quel punto, mi basta inviare il comando
/reele il sistema rigenera una nuova versione (V2, V3, ecc.) cambiando l'approccio del prompt, registrando il versionamento nel database.
4. Pagamenti resilienti: Macchina a Stati e Outbox Pattern
La monetizzazione del sito si basa su due prodotti gestiti come funnel (come il Tema Natale a 49€). Quando ci sono di mezzo i soldi, la transazionalità è tutto.
Il flusso di elaborazione di questi prodotti è gestito da una Macchina a Stati. Se, per qualsiasi motivo, un'API fallisce o c'è un timeout, Hangfire gestisce fino a 4 retry. Se dopo il quarto tentativo il prodotto non è stato generato correttamente, scatta il refund automatico del pagamento tramite Stripe. L'Outbox pattern mi garantisce che il database e i messaggi di evento siano sempre allineati, evitando inconsistenze.
5. Domare Claude Code (La vera sfida)
L'intero progetto è stato sviluppato con l'aiuto di Claude Code. Lavorare con un AI Agent in un progetto reale non è come scrivere script Python di 50 righe. L'AI tende a complicare le cose, a rompere i confini architetturali e a perdere il contesto.
Per fargli scrivere codice enterprise, ho dovuto stabilire regole di ingaggio militari:
-
Il principio YAGNI (You Aren't Gonna Need It) forzato: Ho dovuto ribadirgli continuamente di non creare astrazioni inutili finché non servivano.
-
Blindare l'architettura con NetArchTest: L'AI a volte pensava "faccio prima a chiamare il database dal controller". Per evitarlo, ho scritto degli Architecture Test (NetArchTest), unendoli agli Unit Test e ai Persistence Test. Se l'AI violava la Clean Architecture, la build si rompeva e lui doveva rifare il lavoro.
-
Micro-Tasking: Se gli chiedi di fare una feature complessa, ti modifica 500 file rendendo impossibile la code review. L'ho obbligato a salvare in memoria la richiesta totale, ma a eseguire e compilare a blocchi di 5-8 task per volta.
-
Gestione della Context Window: Quando il contesto superava i 700k token, Claude iniziava a "sragionare". La mia strategia? Fargli generare un riassunto delle specifiche e dei piani di sviluppo, salvare lo stato, killare la sessione e ripartire con una nuova "finestra" pulita, iniettando la memoria salvata.
Conclusioni
Le AI generative sono sviluppatori junior instancabili, ma necessitano di un Tech Lead esperto (voi) che definisca architetture, limiti e pipeline di test invalicabili.
SeptimaDomus è la prova che con un'infrastruttura robusta e una gestione intelligente dei costi (grazie a FFmpeg e SkiaSharp), anche un singolo sviluppatore può mettere in piedi un sistema mediatico in grado di fare milioni di visualizzazioni.
Se vi va di vedere il risultato, trovate la web app qui: SeptimaDomus
Che ne pensate di questo approccio per scalare progetti personali? Parliamone nei commenti