Skip to content

Alemusica/ai-startup-scouting

Repository files navigation

Trovatore - AI Startup Scouting

Prototipo per automatizzare lo scouting di acceleratori e startup europee usando Google Sheets + Apps Script + LLM.


Link al Google Sheet

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.


Requisiti Completati

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

Come Eseguire i 3 Comandi dal Menu

Aprire il Google Sheet → Menu "Startup Scouting AI"

1. Scouting accelerators

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

2. Aggiorna startups dagli acceleratori

Per ogni acceleratore con status pending, cerca startup nel portfolio e le aggiunge al foglio startups.

Pipeline di estrazione:

  1. Fetch pagina portfolio (Standard → Firecrawl → JS Renderer)
  2. Estrazione nomi (Cheerio CSS selectors + pattern matching)
  3. Enrichment URL (visita profili interni → estrae URL esterni)
  4. Salvataggio con dedup automatico (no duplicati per website)

Campi: website (chiave), name, country, accelerator, sector, stage, description, metadata

3. Genera value proposition mancanti

Per ogni startup senza value_proposition, visita il sito e genera una frase con lo schema:

"<Startup> helps <Target> do <What> so that <Benefit>"

Setup (per nuovo deployment)

1. Clona repository

git clone https://github.com/Alemusica/ai-startup-scouting.git
cd ai-startup-scouting

2. Configura clasp

npm install -g @google/clasp
clasp login
clasp create --type sheets --title "Trovatore AI Scouting"
clasp push

3. Ottieni API Key Groq (gratuita)

  1. Vai su console.groq.com/keys
  2. Crea account (gratuito)
  3. Genera API Key

4. Configura nel Google Sheet

  1. Apri il Google Sheet
  2. Refresh pagina (appare menu "Startup Scouting AI")
  3. Menu > Utility > Configura API Key - inserisci Groq key
  4. Menu > Utility > Inizializza fogli - crea i 3 tab

Assunzioni e Limiti

Assunzioni

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

Limiti Tecnici

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

Siti con Copertura Limitata

Sito Problema Risultato
Techstars SPA React + API protetta ~20 startup (vs 3000+)
YCombinator Heavy client-side Parziale
Antler Webflow dynamic ~50-70%

Architettura

┌─────────────────────────────────────────────────────────────────┐
│                    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)   │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Struttura Codice

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)

TOON - Token-Oriented Object Notation

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"}

7 Agenti TOON Specializzati

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[]}

Vantaggi TOON

  • -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

Riferimenti


Scelte Tecniche (Trade-off)

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

Utility

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

Link


Caso studio AI Engineer - Gennaio 2026

About

AI Startup Scouting - Google Sheets + Gemini API prototype

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages