Obiettivo del progetto
I tool di generazione contenuti AI standard producono idee generiche perché mancano di contesto personale: l'utente deve ripetere ogni volta chi è, per chi scrive e con che tono. ContentAI nasce per risolvere questo problema con un approccio più prodotto: un generatore di idee che ricorda il brand di chi lo usa e rende visibile il costo reale di ogni generazione.
Problema iniziale
- le idee generate "a freddo" sono generiche e richiedono sempre correzioni manuali di tono e contesto;
- il posizionamento del creator (bio, audience, pillar di contenuto) va ripetuto ad ogni prompt;
- l'output non strutturato richiede lavoro di editing prima di poter essere usato;
- il costo reale delle chiamate AI (token, modello, spesa) è invisibile all'utente.
Soluzione implementata
Ho progettato e sviluppato un micro-SaaS con account reali, persistenza cloud e tracking economico integrato — non un semplice wrapper su un modello AI.
Funzionalità principali
- Brand Memory persistente: profilo con bio, audience, tono, worldview, pillar di contenuto, storie e sample di scrittura, iniettato in ogni prompt di generazione.
- Generazione strutturata: ogni idea torna come card con hook, angle, CTA, step di esecuzione, difficoltà, piattaforma e formato.
- Autenticazione reale: Supabase Auth con magic link e Google OAuth.
- Persistenza cloud multi-utente: Brand Memory, generazioni, idee, feedback e usage event salvati per utente.
- Dashboard Usage & Costs: token, modello/provider, spesa stimata, costo per generazione e costo per idea.
- Modalità di strategia: l'interfaccia espone modalità come fast/balanced/strategic invece dei nomi dei modelli, mappati lato server.
Architettura e stack tecnico
Frontend
- Next.js 16 (App Router)
- React 19
- Tailwind CSS v4
Backend applicativo
- API routes Next.js per generazione, profilo e usage
- Adapter AI OpenRouter-first con fallback OpenAI
- Parsing e validazione dell'output JSON strutturato
Data layer
- Prisma come schema/migration tooling
- PostgreSQL su Supabase con Row Level Security
Auth e sicurezza
- Supabase Auth via
@supabase/ssr(Google OAuth + magic link) - Row Level Security con policy
auth.uid()su tutte le tabelle utente - API key esclusivamente lato server
Data model (alto livello)
Entità principali:
usersbrand_profilesgenerationscontent_ideasidea_feedbackusage_events
Le policy RLS scopano ogni riga all'utente proprietario tramite auth.uid().
Stato attuale
Il prodotto è considerato concluso come demo di portfolio: flusso di autenticazione, Brand Memory, generazione e dashboard costi sono tutti funzionanti in produzione. Restano margini di miglioramento su copertura test e affinamento SMTP per i magic link.
Cosa dimostra nel portfolio
- product thinking oltre il semplice "wrapper AI": memoria di contesto e unit economics come feature di prodotto;
- autenticazione e persistenza multi-utente sicura con RLS;
- integrazione AI con provider abstraction, prompt engineering e parsing di output strutturato;
- attenzione ai costi reali delle chiamate LLM, tracciati e mostrati all'utente.
Link
- Repository GitHub: github.com/DavideZaninelloo/Content-Idea-Generator
- App live: content-idea-generator-six.vercel.app