Un team GTM sembra un'operazione di invio. La maggior parte del suo vero lavoro è giudizio: quale azienda merita un messaggio questa settimana, cosa dire per dimostrare che hai notato qualcosa, a quale no-show dare seguito, cosa ha effettivamente mosso il pipeline.
L'invio è sempre stato la parte economica. Il giudizio è ciò per cui serviva un team, ed è esattamente ciò che una persona più Claude Code può ora gestire dall'inizio alla fine.
Quindi smetti di pensare in termini di organico e inizia a pensare in termini di mansioni.
Un team GTM è un elenco di queste, e la maggior parte ha la stessa forma: leggere una pila di dati, prendere una decisione, scrivere qualcosa, fare follow-up e ricordare cosa è successo.
Collega ogni mansione a un agente, dagli una memoria condivisa e mettili su un programma. Le persone hanno una UX, il software ha un'API, un agente ha una riga di comando, quindi l'intero team gira da una singola riga cron alle otto del mattino. Ogni mattina fa rapporto, e il tuo lavoro diventa modificare invece di operare.
Qui di seguito c'è la costruzione, posto per posto, con il prompt che incollo in Claude Code per ciascuno.

La rosa: cinque posti
Decidere chi merita un messaggio
La parte difficile dell'outbound non è mai stata l'invio. Era il giudizio che lo precedeva: tra tutte le aziende del mercato, quale vale la pena contattare questa settimana, e cosa dire per dimostrare che hai notato qualcosa.
Quel giudizio è il primo posto.
Osserva quattro tipi di movimento, i quattro che un decennio di dati di mercato continua a restringere:
- Un ruolo viene aperto o ripubblicato.
- Un'azienda ingaggia un concorrente o pubblica qualcosa sul problema che risolvi.
- Un'azienda lancia, si espande o cambia stack.
- Il denaro si muove attraverso un round o un'acquisizione.
Valuta ciascuno in base a chi si adatta realmente e a tutto ciò che già sai di quell'account, poi abbozza a partire dal trigger stesso.
La regola che non infrange mai è citare la cosa che si è mossa. "Ho visto che hai ripubblicato il ruolo di Head of RevOps, seconda assunzione operativa del trimestre." Mai "Ciao {{Nome}}." Se il messaggio poteva essere inviato invariato il mese scorso, il trigger è stato saltato e l'account aspetta.
1Scrivi team/prospector.py: run(memory, source, delivery, icp, sequences, weights, offline, dry_run).2Rileva nuovi segnali nei quattro bucket (job, social, company, funding) e scrivili nella memoria3condivisa. Raggruppa per account. Per ogni account, giudica rispetto all'ICP e alla cronologia completa4con prompts/judge.md (Claude, temperatura 0), ricadendo su un'euristica a bucket pesata che salta segnali5deboli e fuori ICP. Per quelli che superano la soglia, abbozza a partire dal trigger più forte con6prompts/draft.md, passa la bozza a delivery (dry-run di default) e registra il contatto. Restituisci7righe di standup classificate.
Preparare ogni chiamata prima che inizi
Prima di una prima chiamata, qualcuno passava venti minuti a costruire un one-pager: cos'è questa azienda, cosa si è mosso, cosa gli hai già inviato, dove si è raffreddata l'ultima conversazione.
Affida questo al secondo agente.
Scrive il brief per ogni chiamata prenotata usando la stessa memoria su cui scrive il prospector. Quando la chiamata inizia, la pagina è già lì, con il trigger che li ha portati, la cronologia e l'unica cosa su cui vale la pena aprire.
Nessuno prepara alle 23 per una chiamata delle 9, e nessuno arriva a freddo.
1Scrivi team/researcher.py: run(memory, calendar, icp, offline).2Per ogni chiamata nel calendario di oggi, estrai la cronologia completa dell'account dalla memoria3condivisa e scrivi un brief di una pagina con prompts/brief.md: cosa si è mosso, cosa abbiamo già inviato4e come è stato accolto, e la singola cosa migliore su cui aprire la chiamata. Fondamenta ogni riga sulla5cronologia, mai inventare. Ricadi su un template semplice costruito dall'ultimo segnale quando non c'è6una chiave API. Restituisci una riga di standup per chiamata.
Lascia che la sequenza faccia il chasing
Un segnale è la linea di partenza. La sequenza è ciò che converte, ed è la parte in cui le persone sono peggiori, perché il follow-up dipende da un umano che si ricorda di seguire. Dimentichiamo, esitiamo, lo facciamo una volta e ci fermiamo.
Quindi l'invio e il chasing girano in Overloop AI come sequenze che si attivano da sole una volta che l'agente le passa. L'agente decide chi e scrive il primo contatto. Overloop porta avanti il resto su un programma, via email e LinkedIn, così la cadenza non vive o muore mai sulla memoria di nessuno.
1Scrivi team/sequencer.py: run(memory, delivery, sequences, offline, dry_run, min_age_days, max_age_days).2Chiedi alla memoria condivisa gli account il cui ultimo contatto ha qualche giorno e che non hanno risposte3o riunioni in programma. Abbozza un follow-up leggero che aggiunga un angolo genuinamente nuovo, invialo4nella sequenza follow_up e registra il contatto. Lascia stare i contatti freschi rispettando la finestra5di min-age. Restituisci una riga di standup per account.
Recuperare i no-show
Un no-show è un lead qualificato che ha avuto un conflitto di calendario. Escono dal pipeline per un motivo: il recupero manuale non avviene mai.
Quindi lo stesso motore esegue una sequenza di recupero per ogni assenza. Quattro contatti in una settimana, due canali, nessun rimprovero in nessuno di essi:
- Un'ora dopo l'assenza: un link per riprogrammare in due click.
- Il giorno dopo: la stessa offerta su LinkedIn.
- Terzo giorno: una cosa utile legata al loro settore, senza richiesta.
- Settimo giorno: un semplice ultimo avviso.
Toglie l'emotività dal follow-up e recupera circa un terzo dei no-show che prima semplicemente sparivano. Nessuno deve ricordarsi di inviarne nemmeno uno.
1Scrivi team/recoverer.py: run(memory, calendar, delivery, sequences, offline, dry_run).2Per ogni no-show recente dal calendario, iscrivilo nella sequenza no_show_recovery definita in3config/sequences.yaml (quattro contatti in una settimana, due canali, nessun rimprovero in nessun passo),4registra il contatto e restituisci una riga di standup. La cadenza vive in config, non nel codice.
Far sì che il report settimanale si sintonizzi da solo
Ogni venerdì qualcuno assemblava il retro: cosa è uscito, cosa è stato prenotato, cosa è bloccato, a che punto è il pipeline. L'ultimo agente lo costruisce dalla stessa memoria, ogni settimana, senza che glielo si chieda.
Poi fa la cosa che un report umano non fa mai.
Valuta le proprie giocate: i segnali che continuano a prenotare riunioni ottengono più peso, i copy che continuano a fallire vengono tagliati. La shortlist del prossimo mese è ordinata da ciò a cui il mercato ha effettivamente risposto, non da ciò che hai indovinato a gennaio. Il report smette di essere una registrazione della scorsa settimana e diventa la cosa che sintonizza la successiva.
1Scrivi team/reporter.py: run(memory, weights, days, offline).2Leggi le statistiche della settimana dalla memoria condivisa. Inizia con il conteggio delle riunioni.3Ripondera i quattro bucket di segnali in base al tasso di vittoria, contando una riunione più di una4risposta, con un pavimento in modo che nessun bucket scenda mai a zero. Restituisci le righe di standup5e i nuovi pesi per la prossima esecuzione. prompts/report.md scrive la versione in prosa quando è6impostata una chiave.
I due prompt che girano ogni mattina
Ogni prompt di costruzione sopra gira una volta. Questi due girano su ogni account, ogni giorno, quindi sono quelli da conservare e ottimizzare. Il giudizio e la voce vivono qui, in file semplici, non sepolti nel codice.
Il prospector giudica su questo:
1RUOLO Sei il livello di giudizio del prospector. Per un account, decidi se un segnale di acquisto vale2la pena di essere attivato ora e come.3INPUT { icp, new_signals: [{bucket, summary}], history, days_since_last_touch }4PUNTEGGIO 80-100 forte aderenza ICP e segnale ad alta intenzione (funding, o due raggruppati); 50-79 buona5aderenza, un segnale solido; 20-49 debole aderenza o un singolo segnale a bassa intenzione; 0-19 fuori ICP o rumore6REGOLE Sotto 7 giorni dall'ultimo contatto, preferisci nurture o skip, mai first_touch. Se il segnale è7debole o fuori ICP, dagli un punteggio basso e salta; dire di no fa parte del lavoro. why_now deve citare8il trigger effettivo, in parole che un rappresentante potrebbe dire al compratore.9OUTPUT (solo JSON) { "score": 0-100, "why_now": "...", "play": "first_touch|follow_up|nurture|skip", "rationale": "..." }
E scrive su questo:
1RUOLO Scrivi il messaggio di apertura. Il segnale è il motivo per cui ti stai rivolgendo, e il messaggio2deve dimostrare che lo hai notato.3INPUT { trigger, bucket, why_now, play, guardrails: {goal, must, never} }4REGOLE Apri la prima frase sul trigger, mai "Ciao {{Nome}}". Collega il trigger a un problema che risolvi,5in una singola frase. Chiudi con una richiesta a basso attrito. Frasi semplici, lunghezza mista, nessuna6falsa urgenza, nessun trattino, nessun buzzword. Se il messaggio poteva essere inviato invariato il mese7scorso, hai saltato il trigger; ricomincia.8OUTPUT (solo JSON) { "subject": "6-9 parole", "body": "3-5 frasi" }
Cosa rende cinque agenti una squadra

Cinque agenti, una memoria condivisa
Cinque script che tengono ciascuno le proprie note non sono una squadra. Ciò che li trasforma in una è una singola memoria condivisa: un record per account che ogni posto legge e scrive.
Il prospector registra un contatto lunedì. Il sequencer lo legge giovedì, vede nessuna risposta e invia il passo successivo. Il reporter lo conta venerdì e ripesca i bucket. Stesso record, un'unica fonte di verità. Costruisci prima quel deposito, mantieni stabili i nomi dei suoi metodi, e ogni posto si basa su di esso invece di indovinare.
Come lo gestisce una persona

Lo standup mattutino
Non lo operi. Lo modifichi, che è un lavoro più piccolo e molto diverso.
Il team gira su cron prima che tu sia sveglio. Quando ti siedi, lo standup ti aspetta su Slack: chi contattare oggi e perché, un brief per ogni chiamata sul calendario, i no-show seguiti, i numeri della scorsa settimana ripesati in base a cosa ha effettivamente prenotato. Due minuti: approva, modifica o elimina.
Nessuna lista da costruire, nessun oggetto da indovinare, nessuna riunione del lunedì su chi chiamare. L'intero team gira per circa 400 dollari al mese di token, l'intero costo operativo del dipartimento. Ciò che resta è editoriale: avere gusto su ciò che il team mette davanti a te e dire di no alla maggior parte.
Dove gli umani vincono ancora

Dove restano gli umani
Questo non gestisce l'intero go-to-market, e le parti che salta sono quelle che contano di più. Gli agenti decidono chi contattare e scrivono la prima riga. Non chiudono, e non costruiscono la relazione che fa sì che un compratore ti scelga un anno dopo, quando finalmente arriva il budget.
Quando arriva una risposta con una domanda reale, un'esitazione, un tranquillo "non siamo sicuri che faccia per noi", quella è una conversazione umana, e dovrebbe restare tale. Il sistema è molto bravo a farti entrare nella stanza. Non ha nulla da dire una volta che ci sei dentro.
Quindi le persone che avresti speso per il lavoro di routine vanno dove sono sempre state più utili: la chiamata, la fiducia, la chiusura. Il team riacquista le ore che prima sparivano nel decidere chi meritava una chiamata, e le spende nelle conversazioni che decidono le trattative.
Prendi il team
Ho impacchettato il tutto in un repository che puoi clonare ed eseguire: i cinque posti, la memoria condivisa su cui girano, i prompt che portano il giudizio e la voce, e lo standup che li lega insieme.
1gtm-team/2 team/ prospector · researcher · sequencer · recoverer · reporter3 core/ memory · models · adapters · llm4 prompts/ judge · draft · brief · report5 config/ icp · sequences · signals · team6 run.py the morning standup
È una build funzionante, non lo stack interno che eseguiamo su Sortlist. Il posto del prospector è il gtm-brain dell'ultimo drop. Questo è il team che lo circonda.
Commenta TEAM e te lo invierò. Seguimi così il DM passa.
Se preferisci che lo esegua per te invece di cablarlo da solo, quello è MAX: la stessa idea con le cuciture nascoste. Un agente con cui parli che osserva i segnali, esegue le sequenze via email e LinkedIn e ti passa lo standup, supportato da dieci anni di dati di matching acquirente-venditore che non puoi estrarre da un'API pubblica. Visita: yourmax.ai





