Prototipo per automatizzare lo scouting di acceleratori e startup europee usando Google Sheets + Apps Script + LLM.
Trovatore AI Scouting - Google Sheet
Contiene:
accelerators- acceleratori europei (website, name, country, ...)startups- startup estratte dai portfolio (website, name, accelerator, value_proposition, ...)logs- log delle operazioni
Nota: API keys già configurate. Aprire il menu "Startup Scouting AI" per testare.
| Requisito | Status | Note |
|---|---|---|
Tab accelerators (website, name, country) |
✅ | + type, sector, portfolio_url, status |
Tab startups (website, name, country, accelerator, value_proposition) |
✅ | + sector, stage, description, metadata |
| Menu con 3 azioni | ✅ | Esattamente 3 come richiesto |
| Niente duplicati (match per website) | ✅ | Dedup automatico per URL normalizzato |
| API key sicura (PropertiesService) | ✅ | Groq + Gemini in Script Properties |
| Logging e gestione errori | ✅ | Tab logs + skip-and-continue |
| Repository Git + README | ✅ | github.com/Alemusica/ai-startup-scouting |
Aprire il Google Sheet → Menu "Startup Scouting AI"
Aggiunge nuovi acceleratori europei al foglio accelerators.
- Fonte: database curato di 45+ acceleratori verificati
- Include: Seedcamp, Techstars London, Antler, Station F, Plug and Play, etc.
- Campi: website (chiave), name, country, type, primary_sector, portfolio_url, status
Per ogni acceleratore con status pending, cerca startup nel portfolio e le aggiunge al foglio startups.
Pipeline di estrazione:
- Fetch pagina portfolio (Standard → Firecrawl → JS Renderer)
- Estrazione nomi (Cheerio CSS selectors + pattern matching)
- Enrichment URL (visita profili interni → estrae URL esterni)
- Salvataggio con dedup automatico (no duplicati per website)
Campi: website (chiave), name, country, accelerator, sector, stage, description, metadata
Per ogni startup senza value_proposition, visita il sito e genera una frase con lo schema:
"<Startup> helps <Target> do <What> so that <Benefit>"
git clone https://github.com/Alemusica/ai-startup-scouting.git
cd ai-startup-scoutingnpm install -g @google/clasp
clasp login
clasp create --type sheets --title "Trovatore AI Scouting"
clasp push- Vai su console.groq.com/keys
- Crea account (gratuito)
- Genera API Key
- Apri il Google Sheet
- Refresh pagina (appare menu "Startup Scouting AI")
- Menu > Utility > Configura API Key - inserisci Groq key
- Menu > Utility > Inizializza fogli - crea i 3 tab
| Assunzione | Motivazione |
|---|---|
| Acceleratori europei | Focus geografico del task |
| Portfolio pubblici | Necessario per scraping (no login) |
| Website come chiave univoca | Più stabile del nome (può cambiare) |
| Groq come LLM primario | Free tier: 30 req/min, 14400 req/day |
| Limite | Valore | Gestione |
|---|---|---|
| Esecuzione Apps Script | 6 min max | Continuation + time-driven trigger |
| Groq rate limit | 30 req/min | Delay automatico + Gemini fallback |
| SPA/React sites | JS-rendered | Custom JS Renderer (Puppeteer) |
| Portfolio protetti | Login required | Skip con log, non bloccante |
| Sito | Problema | Risultato |
|---|---|---|
| Techstars | SPA React + API protetta | ~20 startup (vs 3000+) |
| YCombinator | Heavy client-side | Parziale |
| Antler | Webflow dynamic | ~50-70% |
┌─────────────────────────────────────────────────────────────────┐
│ TROVATORE v95 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ MENU (3 azioni richieste) │
│ ├── 1. Scouting accelerators │
│ ├── 2. Aggiorna startups dagli acceleratori │
│ └── 3. Genera value proposition mancanti │
│ │
│ EXTRACTION PIPELINE │
│ ┌─────────┐ ┌───────────┐ ┌─────────────┐ │
│ │ Standard│──▶│ Firecrawl │──▶│ JS Renderer │ │
│ │ Fetch │ │ (fallback)│ │ (Puppeteer) │ │
│ └─────────┘ └───────────┘ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Cheerio CSS ──▶ Pattern Match ──▶ LLM Fallback │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Groq (FREE, primary) ◀──fallback──▶ Gemini (backup) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
src/
├── core/ # Config, Logger, State (continuation)
├── http/ # Fetcher, CheerioParser, HtmlParser, UrlUtils
├── browser/ # Emulator (Next.js, Nuxt, React, Webflow detection)
├── ai/ # LLMInterface, GroqClient, GeminiClient, Agents, OrchestratorV3
├── data/ # Sheets (CRUD + dedup), Metadata (TOON format)
├── domain/ # Accelerators, Startups, ValueProp
└── ui/ # Menu (3 azioni + Utility + Help)
js-renderer/ # Puppeteer serverless (deploy: Fly.io)
Formato compatto custom per comunicazione LLM che riduce il consumo di token del ~40%:
// TOON (42 chars)
{co:"Stripe",conf:"H",pri:"fintech"}
// JSON equivalente (70 chars)
{"company":"Stripe","confidence":"high","primary_sector":"fintech"}| Agente | Funzione | Output Format |
|---|---|---|
| TestimonialExtractor | Estrae startup da quote/testimonial | {co,pn,pr,hint,conf} |
| UrlEnricher | Trova URL mancanti (Google Grounding) | {url,conf,reason} |
| CountryValidator | Valida coerenza geografica | {valid,conf,country} |
| SectorClassifier | Classifica settore primario/secondario | {pri,sec[],conf} |
| Deduplicator | Identifica duplicati fuzzy | {same,conf,reason} |
| PortfolioDiscovery | Scopre URL portfolio quando 404 | {url,conf,method,alt[]} |
| ResultFilter | Filtra falsi positivi (categorie, UI) | {keep[],rm[]} |
- -40% token → costi LLM ridotti (benchmark: 39.6% meno token)
- +4% accuracy → 73.9% vs JSON 69.7% sui benchmark
- Parsing robusto → struttura esplicita, meno errori
- Fallback JSON → se TOON fallisce, prova JSON automaticamente
- Spec ufficiale: github.com/toon-format/spec
- TypeScript SDK: github.com/toon-format/toon
- Sito: toonformat.dev
| Scelta | Alternativa | Motivazione |
|---|---|---|
| TOON format | JSON verboso | -40% token, costi LLM ridotti |
| Groq + Gemini | Solo un provider | Free tier Groq + fallback affidabile |
| Cheerio CSS | Solo regex | Parsing HTML robusto, meno fragile |
| Save FIRST | Enrich then save | Evita perdita dati su timeout 6 min |
| 1 acceleratore/volta | Parallelismo | Rispetta rate limit, evita 429 |
| Custom JS Renderer | Solo Firecrawl | Controllo completo su SPA rendering |
Menu > Utility:
- Configura API Key - Setup Groq/Gemini
- Inizializza fogli - Crea tab accelerators/startups/logs
- Test connessione LLM - Verifica API funzionante
- Mostra statistiche - Conteggi e status
- 🛑 STOP ALL - Ferma trigger, pulisce stato
- Google Sheet: Trovatore AI Scouting
- Repository: github.com/Alemusica/ai-startup-scouting
- Groq Console: console.groq.com/keys (API Key gratuita)
Caso studio AI Engineer - Gennaio 2026