Un agente intelligente integrato in Google Sheets per automatizzare il discovery di Acceleratori e lo scouting di startup in Europa.
Questo progetto automatizza il processo di ricerca e analisi di acceleratori e startup attraverso una pipeline integrata in Google Sheets. Funziona su tre livelli:
- Ricerca Acceleratori: identifica automaticamente nuovi programmi di accelerazione in Europa.
- Scouting Startup: estrae e analizza i portfolio degli acceleratori.
- Generazione Pitch: crea value proposition standardizzate per ogni startup.
Per utilizzare il tool, è necessario installare il codice (o aprire il foglio condiviso) e configurare obbligatoriamente la Gemini API Key (ottenibile su Google AI Studio).
Se parti dal codice sorgente su GitHub, segui questi passi. Se hai già accesso al Google Sheet pronto, salta direttamente al punto 2. Configurazione Sicurezza.
- Prerequisiti: Node.js installato e Clasp (
npm install @google/clasp -g). - Deploy:
git clone https://github.com/Luigina2001/StartupScoutingAI.git cd StartupScoutingAI clasp login clasp create --type sheets --title "AI Scouting" clasp push
Le API Key sono gestite tramite il PropertiesService di Google. Il tool viene fornito senza chiavi: è necessario inserire la propria per poterlo utilizzare.
- Genera la tua chiave gratuita su Google AI Studio.
- Apri il Google Sheet.
- Nel menu in alto, vai su Estensioni > Apps Script.
- Nel nuovo editor, clicca sull'icona Impostazioni del progetto nella barra laterale sinistra.
- Scorri in basso fino alla sezione Proprietà script e clicca su Aggiungi proprietà script.
- Inserisci questi valori:
- Proprietà:
GEMINI_API_KEY - Valore: [Incolla qui la tua chiave ottenuta da Google AI Studio]
- Proprietà:
- Clicca su Salva proprietà script.
Una volta configurata la chiave, ricarica la pagina del Google Sheet. Dopo qualche secondo vedrai comparire un nuovo menu personalizzato chiamato "Startup Scouting AI" (come illustrato nello schema riassuntivo in basso).
Warning
Autorizzazione Primo Utilizzo: La prima volta che esegui un comando, Google chiederà i permessi. Clicca su Continue > Seleziona il tuo account > Advanced > Go to AI Scouting (Unsafe) > Allow.
Ecco le funzionalità disponibili e come utilizzarle:
- Funzione: Inizializza l'ambiente di lavoro. Crea i fogli
acceleratorsestartupsse non esistono, applica la formattazione (header blu, righe bloccate) e rimuove i fogli vuoti inutili. - Procedura: Clicca su
Startup Scouting AI>Set Up Database. Usalo al primo avvio.
- Funzione: Cerca 10 nuovi programmi di accelerazione in Europa, verifica che i siti siano attivi e filtra i duplicati già presenti nel tuo database.
- Procedura:
- Clicca su
Startup Scouting AI>Scouting Accelerators. - Attendi il messaggio "Running script".
- Dopo circa 30-60 secondi, le nuove righe appariranno nel foglio
accelerators.
- Clicca su
- Funzione: Visita il sito dell'acceleratore, trova la pagina portfolio ed estrae le startup usando l'AI. Gestisce il merging N-to-N: se una startup esiste già, aggiunge solo il nuovo tag senza duplicare la riga.
- Procedura:
- Metodo A (Consigliato): Nel foglio
accelerators, seleziona col mouse le righe degli acceleratori che vuoi analizzare e clicca suUpdate Startups. - Metodo B (Manuale): Clicca sul comando senza selezionare nulla e digita un sito web (es.
ycombinator.com) nella box di input.
- Metodo A (Consigliato): Nel foglio
- Funzione: Visita il sito di ogni startup e genera un pitch di una frase seguendo il pattern: "Startup X helps [Target] do [Action] so that [Benefit]".
- Procedura:
- Nel foglio
startups, seleziona le celle vuote (o quelle che vuoi riscrivere) nella colonna Value Proposition (Colonna E). - Clicca su
Startup Scouting AI>Generate value propositions. - Conferma il range e osserva le celle popolarsi in tempo reale.
- Nel foglio
La scelta del modello "Flash" non è casuale, ma risponde a specifici vincoli architetturali dell'ambiente serverless di Google Apps Script:
| Sfida Tecnica 🛑 | Soluzione Gemini Flash ⚡ |
|---|---|
| Timeout Apps Script (6 min) | Ultra-Low Latency Flash permette di processare interi batch di startup sequenzialmente senza mandare in timeout l'esecuzione dello script. |
| Dirty HTML & Token Limits | High Context Window (1M+) Lo scraping web produce HTML "sporco" e voluminoso. Flash gestisce finestre di contesto grandi a costi frazionari, permettendo di analizzare il DOM grezzo senza complesse logiche di chunking. |
| Precisione vs Costi | Extraction Capabilities Per task di Information Extraction (Testo -> JSON), i benchmark mostrano che i modelli Flash eguagliano i modelli "Pro" in accuratezza, ma con un'efficienza superiore. |
La sfida principale nell'uso di LLM leggeri (gemini-flash) per l'estrazione dati è la tendenza all'allucinazione. Questo progetto implementa una pipeline di validazione basata su letteratura scientifica recente:
Ispirato al paper "ReAct: Synergizing Reasoning and Acting in Language Models" (Yao et al., 2022).
Forziamo il modello a generare un campo "thought" (pensiero esplicito) prima di estrarre il dato JSON. Questo obbliga l'LLM a giustificare la rilevanza dell'acceleratore o della startup nel contesto fornito, riducendo i falsi positivi dovuti a menzioni casuali nel testo.
Implementazione della tecnica descritta in "Prompt Repetition Improves Non-Reasoning LLMs" (Xu et al., 2024). I vincoli critici e le istruzioni di formato vengono ripetuti alla fine del prompt (post-context). Questo mitiga il fenomeno del "Lost in the Middle", garantendo che il modello aderisca alle regole anche dopo aver processato migliaia di token di HTML "sporco".
Ogni entità estratta dall'AI subisce una verifica incrociata con il DOM (Document Object Model) della pagina.
- L'algoritmo cerca una corrispondenza tra il nome estratto e i tag
href(link reali) presenti nell'HTML. - Se l'AI "inventa" una startup che non ha un link corrispondente nella pagina, il sistema notifica l'anomalia o applica euristiche di fallback.
- Anti-Bot Resilience: Siti protetti che bloccano
UrlFetchAppnon causano il crash dello script. Il sistema applica un Soft Fallback: logga un warning e tenta un inserimento basato su euristiche sintattiche del dominio. - No Cascading Delete: Se un acceleratore viene rimosso dal foglio, le startup a esso associate rimangono nel database come record "orfani".
- Token Limits: L'HTML viene troncato a ~30k caratteri per rispettare i limiti TPM del tier gratuito.
- API Quota: Gestione degli errori
429con arresto controllato.
📦 StartupScoutingAI
├── 📄 Accelerators.js # Agente di ricerca Acceleratori
├── 📄 Startups.js # Core logic: Scraping, Merging & AI Extraction
├── 📄 Setup.js # Inizializzazione DB e Menu UI
├── 📄 Utils.js # API Handler, HTML Parsing, URL Normalization
├── 📄 appsscript.json # Configurazione Manifest
└── 📄 README.md # Documentazione tecnica
