L'arte del non sapere: come stiamo costruendo un AI Coach da zero
Learnings and advice from our experiments with building an AI web app and two mobile apps with zero prior experience.
Non lo avevamo pianificato. Non davvero.
Il nostro cursore è posizionato sul pulsante "Invia per revisione" per le app del nostro AI Agile Coach che stiamo costruendo da 4 settimane. Non sapevamo davvero come creare app 4 settimane fa. Lo abbiamo fatto comunque.
"Cosa può succedere di peggio?"
"Potrebbero rifiutarla."
"Premi il pulsante."
Spoiler: entrambe le app sono state accettate in un paio di giorni.
Come siamo arrivati qui?
È il 2023 e l’intelligenza artificiale è ovunque. ChatGPT è il nuovo giocattolo scintillante. "Guarda, può fare una poesia sugli Scrum Master!" ha postato qualcuno nel nostro Slack. "Gli ho fatto scrivere la mia email; è come la magia", ha scritto un altro. Iniziamo a usare l’IA per piccole cose — generare idee, gestire compiti banali — e semplicemente divertirci.
Ma era più di un trucchetto e lo sapevamo tutti. Eravamo stupefatti e forse ci sentivamo un po’ indietro. Era una novità, grande e in rapido movimento, e noi eravamo lì, cercando di stare al passo.
È stato allora che ci ha colpito: questa non era una cosa da guardare da bordo campo. Potevamo costruire qualcosa con tutto questo.
Ecco cosa abbiamo fatto, cosa abbiamo imparato, e qualche sguardo dietro le quinte.
1. Tuffarsi: nessuna idea perfetta, basta iniziare
Non avevamo un grande piano o un’idea chiara di cosa creare. Ma sapevamo che il nostro focus è l’apprendimento e la condivisione di conoscenza in un modo che resti impresso.
E ora, l’IA era questo enorme e brillante strumento che potevamo usare in modo nuovo. Ma cosa esattamente avremmo costruito? E come lo avremmo fatto?
Invece di aspettare l’idea perfetta, abbiamo semplicemente iniziato a sperimentare. Niente roadmap elaborate, niente lunghi dibattiti — solo noi, una manciata di idee e la voglia di vedere cosa potevamo creare.
Lezione appresa:
Non aspettare l’idea perfetta. Inizia in piccolo, sperimenta con la tecnologia e lascia che la direzione emerga da ciò che impari. Con una tecnologia in rapida evoluzione, aspettare troppo potrebbe significare perdere il momento giusto.
2. Definire una visione: oltre il semplice chatbot
Fin dall’inizio, non volevamo costruire l’ennesimo chatbot. ChatGPT era già lì e sapevamo che non potevamo (e non volevamo) competere con la sua scala. Ma ciò che ChatGPT offriva in scala, mancava in qualità per argomenti di nicchia, dove i dettagli contano.
E se il nostro AI Agile Coach potesse sfruttare la nostra competenza per fornire una guida affidabile e stimolante, oltre a risposte semplici e generiche?
Qualità, fiducia e un tocco umano sono diventati i pilastri della nostra visione. Volevamo contrastare i problemi comuni dell’IA — essere generica, impersonale e inaffidabile — trasformandoli nei nostri punti di forza.
Lezione appresa:
Inizia con una visione e lavora a ritroso da lì. Non hai bisogno di tutti i dettagli fin dall’inizio; nuove idee emergeranno naturalmente man mano che procedi.
3. Formare un team snello e un processo snello: mantenere la semplicità
Una volta deciso di costruire l’AI coach, si è formato un piccolo team — un designer, due sviluppatori e il resto del team in background per feedback e idee.
Senza troppa pianificazione, abbiamo adottato un processo lean: brevi sincronizzazioni giornaliere, conversazioni informali tipo retrospettiva per aggiustare gli strumenti e demo settimanali per condividere i progressi. Non si trattava di seguire un framework agile rigido; si trattava di mantenere le cose semplici e reattive.
Lezione appresa:
Lascia che il tuo processo si evolva naturalmente. Check-in giornalieri, feedback regolare e demo semplici possono mantenerti allineato. Non pensarci troppo — a volte, l’approccio migliore è quello che si adatta al ritmo del tuo team.
4. L’arte del prompting: tentativi ed errori
Sapevamo che prompt innovativi (le istruzioni che dai al modello linguistico) sarebbero stati fondamentali per la nostra app. Il prompting sembra facile finché non provi a farlo bene. Abbiamo sperimentato con diversi prompt — modificando parole, riscrivendo frasi, testando finché non sembrava giusto.
Il nostro prompt attuale è lungo oltre 5.000 caratteri, pieno di dettagli che fanno sembrare la nostra IA come noi. È come scrivere una ricetta segreta, e ci sono volute molte degustazioni per arrivarci, e continuiamo a perfezionarlo regolarmente.
Lezione appresa:
Sperimenta con i prompt. Testa diverse varianti per vedere cosa funziona e regolali frequentemente. Buoni prompt sono cruciali per le prestazioni dell’IA.
5. Rilasciare presto e spesso: lasciar andare la perfezione
Non abbiamo aspettato la perfezione. Appena la nostra prima versione era sufficientemente buona, l’abbiamo rilasciata. Era impeccabile? Includeva le innumerevoli idee e funzionalità a cui avevamo pensato? Assolutamente no. Ma non aveva senso continuare senza feedback da persone reali.
Con l’IA, non puoi prevedere ogni risultato, e ogni interazione dell’utente è diversa. L’unico modo per sapere cosa funziona è metterlo là fuori, vedere come le persone lo usano e adattarsi in base a ciò che impari.
Lezione appresa:
Non puntare alla perfezione prima del lancio. Rilascia un prodotto minimo funzionante il più velocemente possibile e impara dal feedback degli utenti per miglioramenti rapidi. Non è un’idea nuova, ma nel panorama dell’IA in rapida evoluzione conta più che mai.
6. Sulle spalle dei giganti
Si scopre che non devi costruire tutto da solo. Ci siamo affidati a framework e boilerplate come Gravity, che gestisce tutte le cose noiose ma necessarie come gestione utenti, autenticazione ed email, così potevamo concentrarci su ciò che contava. Ci siamo appoggiati molto a strumenti come LangChain e naturalmente le API di OpenAI, che facevano gran parte del lavoro pesante dietro le quinte.
Lezione appresa:
Sfrutta gli strumenti esistenti per velocizzare lo sviluppo. Non costruire da zero quando qualcun altro ha già risolto il problema. Gli strumenti giusti possono far risparmiare molto tempo.
7. Imparare dagli esperti (come il vero Henrik)
Dobbiamo molto a Henrik Kniberg, che ci ha guidato attraverso alcune delle parti più critiche del processo di sviluppo. Ha dato il via al tutto con un workshop che ha impostato il tono e la direzione del nostro lavoro. Come mentore del team e omonimo del nostro prodotto, Henrik ci ha spinto in nuove direzioni e ci ha aiutato a dare forma all’AI Agile Coach in ciò che è oggi. La sua influenza è stata inestimabile e siamo grati per il suo supporto lungo il percorso.
Lezione appresa:
Contatta e impara dagli esperti. Una prospettiva fresca da qualcuno con esperienza può aprire nuovi percorsi che non avevi considerato.
8. La sfida dei contenuti: cosa diamo in pasto all’IA?
Abbiamo passato anni a creare e curare contenuti in cui crediamo, e ora dovevamo capire come renderli la base del nostro AI coach. Non si trattava semplicemente di buttare i nostri materiali nel sistema. Volevamo che la nostra IA fosse affidabile, coinvolgente e genuinamente utile. Così abbiamo passato ore a selezionare e perfezionare i pezzi giusti di conoscenza, assicurandoci che l’IA potesse comprenderli e usarli efficacemente.
Lezione appresa:
Investi tempo nel curare i tuoi contenuti. Assicurati che siano accurati e riflettano il tono e la voce della tua IA. Contenuti migliori portano a un’IA più affidabile.
9. Iterare l’implementazione del LLM: adattarsi, adattarsi, adattarsi
Migliorare l’AI coach ha richiesto molteplici iterazioni, ognuna delle quali ci ha insegnato cosa funzionava e cosa no:
1. Usare Custom GPT dentro ChatGPT:
Abbiamo iniziato con GPT personalizzati dentro ChatGPT. Era facile — nessun codice richiesto. Tuttavia, abbiamo rapidamente raggiunto i limiti di controllo e qualità dell’output. Sapevamo anche che volevamo rilasciare un nostro prodotto al di fuori dell’ecosistema OpenAI con il proprio branding e una connessione più diretta con i nostri altri prodotti.
2. UI personalizzata con l’Assistant API:
Inizialmente abbiamo costruito una UI personalizzata usando l’Assistant API. Questo ci dava più controllo su quali documenti l’IA usava. Ma presto abbiamo incontrato limitazioni sulla scalabilità e era difficile controllare quali parti della conoscenza personalizzata venivano usate per generare le risposte.
3. UI personalizzata con LangChain e Weaviate Vector DB:
Successivamente, abbiamo implementato un assistente personalizzato usando LangChain e conoscenza da un database vettoriale Weaviate. Questa configurazione ci permetteva di incorporare solo la conoscenza rilevante, migliorando la qualità. I risultati erano ottimi nella maggior parte dei casi, ma a volte l’assistente si perdeva in loop infiniti o forniva risposte strane e innaturali.
4. LangChain Agent:
Per contrastare questi problemi, abbiamo implementato un agente LangChain. Questo approccio relativamente nuovo ha fornito i migliori risultati finora. L’agente può decidere quali strumenti e informazioni utilizzare in base alla query dell’utente ed è più efficiente con la sua memoria delle interazioni passate. Ad esempio, se un utente dice "Ciao", l’agente decide che non ha bisogno di cercare nella sua conoscenza specializzata per rispondere semplicemente a un saluto.
Il compromesso è che si rinuncia a un po’ di controllo perché l’agente ha più autonomia. Tuttavia, i benefici di una qualità ed efficienza migliorate superano ampiamente questo aspetto. La libreria degli agenti di LangChain offre molte opzioni e configurazioni per ottimizzare le prestazioni del modello.
5. Qualche nuova, fantastica soluzione.
Cosa viene dopo gli agenti, non lo sappiamo ancora. Vediamo...
Lezione appresa:
Se una configurazione non funziona, non restare ancorato ad essa. Continua a provare nuove configurazioni e impara da ciascuna. Nuove soluzioni emergono quotidianamente nel panorama dell’IA, quindi resta aperto e pronto ad adattarti agli strumenti e approcci più recenti per migliorare il tuo prodotto.
10. Costruire l’app mobile: un atto di fede
Sapevamo da sempre che avremmo avuto bisogno di un’app mobile, ma costruirne una sembrava scoraggiante. Quando Sohrab ha chiesto cosa ci sarebbe voluto per creare un’app, eravamo esitanti. Le app mobile sono complesse e non lo avevamo mai fatto prima. Nonostante la nostra web app fosse ancora nelle fasi iniziali con molto ancora da fare, aveva senso iniziare l’app mobile presto. Facendo funzionare l’app con un set limitato di funzionalità, abbiamo evitato il rischio di dover recuperare il ritardo più avanti quando il prodotto sarebbe stato più complesso. Inoltre, ci ha dato un’opportunità precoce per imparare e adattarci.
Usando Expo e React Native, abbiamo costruito le versioni iOS e Android in quattro settimane. Premere il pulsante "Invia per revisione" è stato piuttosto emozionante. Ci ha ricordato di fare il salto e vedere dove atterriamo.
Lezione appresa:
Se gli utenti esprimono un bisogno, fai il salto. La curva di apprendimento può essere ripida, ma l’esperienza pratica batte la pianificazione teorica. Framework come Expo e React Native funzionano bene per costruire app multipiattaforma. In passato, le app non native potevano sembrare goffe o fuori luogo, ma questi framework si sono evoluti significativamente. Sacrifichi solo un po’ della sensazione nativa, e in cambio ottieni sviluppo rapido e manutenzione più semplice su tutte le piattaforme.
11. Usare l’IA per costruire l’IA: dare potere a tutti
Una delle cose più belle è stata usare l’IA per aiutare a costruire la nostra IA. Abbiamo configurato diversi GPT per compiti specifici: uno per il codice, un altro per la scrittura e così via. Persino io, un designer con capacità di programmazione limitate, mi sono ritrovato a scrivere codice con l’aiuto di Cursor, un editor di codice con un assistente integrato. L’IA è diventata un abilitatore, permettendo a tutti di contribuire in modi nuovi.
Lezione appresa:
Usa l’IA per migliorare il tuo processo di sviluppo e costruire strumenti specializzati. Come abbiamo imparato da Henrik Kniberg: con ogni compito nella tua lista, chiediti: come può l’IA aiutarmi in questo?
12. Mantenere il tocco umano
In un progetto guidato dall’IA, è facile perdere di vista l’elemento umano. Così, abbiamo fatto uno sforzo consapevole per evitarlo:
- Il logo è stato prima disegnato su un post-it.
- Il codice è stato controllato, selezionato e scritto manualmente.
- I testi di marketing sono stati prima scritti su carta — con una matita.
- Le email agli utenti sono state scritte e inviate manualmente con un approccio bootstrap, senza pensare ancora alla scalabilità. (Suggerimento: non ottimizzare per la scala prematuramente)
Lezione appresa:
L’IA è uno strumento potente, ma sono gli elementi umani che rendono un prodotto genuino e riconoscibile. Mantieni vivo il tocco personale nel tuo progetto.
13. Siamo solo all’inizio
Abbiamo costruito molto velocemente, ma stiamo ancora capendo. Ogni giorno porta nuove sfide, lezioni e idee da testare. Stiamo ancora imparando, iterando e cercando di creare qualcosa che funzioni.
E va bene così, perché è così che abbiamo sempre operato. Viviamo secondo i principi che insegniamo: impara velocemente, adattati rapidamente e continua ad andare avanti.
Lezione appresa:
Resta curioso e flessibile. Continua a testare le assunzioni, abbraccia ciò che impari e sii pronto a cambiare direzione.
E non dimenticare di divertirti lungo il percorso.
---