1. Il problema: gli annunci sono il tipo di messaggio meno letto su Discord
Ogni amministratore di comunità conosce lo schema. Scrivi un annuncio accurato, lo fissi, avvisi tutti, e nel giro di un'ora è sepolto sotto meme e due discussioni. Discord è un flusso in tempo reale senza uno strato editoriale. Un membro che ha controllato martedì non vedrà mai ciò che hai pubblicato lunedì.
Un riassunto settimanale sostituisce quella scommessa con un contratto diverso. Invece di spingere più messaggi nel flusso, estrae la settimana dal flusso e la ripubblica come un documento strutturato e facilmente leggibile. Il riassunto è generato dalle conversazioni dei membri, non dagli annunci dell'amministratore. Questa distinzione è ciò che impedisce che sembri marketing.
2. La pipeline: campionare, raggruppare, scrivere, pubblicare
Il processo di riassunto di Sovereign viene eseguito ogni lunedì alle 09:00 UTC. Campiona gli ultimi 7 giorni di messaggi (fino a 100, mantenendo solo contenuti reali più lunghi di 3 caratteri), risolve la lingua di destinazione da una catena di priorità — lingua della dashboard, poi impostazioni del tenant, poi la locale preferita della gilda Discord, poi un fallback — e consegna il campione all'LLM sotto uno stretto contratto di prompt.
Quel contratto è il controllo qualità. Il prompt vieta il riempitivo aziendale, limita l'output a 15–20 righe e impone una struttura fissa a tre blocchi: punti salienti chiave (3–4 punti fattuali), vittorie e metriche (2 punti brevi) e due priorità per la settimana successiva. Il modello è istruito a basare ogni riga sui messaggi reali nel campione. Non inventa benchmark.
Il riassunto pubblicato viene memorizzato con i suoi confini settimanali, il riepilogo e gli argomenti principali, in modo che lo stesso contenuto possa essere riprodotto come email di newsletter, un thread del forum o un messaggio di canale fissato.
// Language resolution: dashboard UI > tenant settings > guild locale > fallback
const LANG_PRIORITY = [targetLang, settings.language, guildLocale, 'fr'];
const effectiveLang = LANG_PRIORITY.find(Boolean);
// 7-day sampling window, max 100 messages, real content only
const weekStart = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);
const sample = await prisma.unifiedMessage.findMany({
where: { member: { tenantId }, createdAt: { gte: weekStart } },
orderBy: { createdAt: 'asc' },
take: 100
});
// Prompt contract enforced on the LLM:
// 1. Key highlights: 3-4 factual bullets taken from real messages
// 2. Wins & metrics: 2 short points
// 3. Focus for the week: 2 priorities
// Hard cap: 15-20 lines. Corporate filler: forbidden.3. Pubblicazione: il webhook del Fondatore, non un post del bot
Sovereign pubblica il riassunto tramite un webhook del canale vestito con il profilo del brand della comunità — nome e avatar del fondatore o dell'azienda, mai il nome utente del bot. I membri lo leggono come una voce umana, il che cambia sia l'engagement che la fiducia.
Discord limita i messaggi a 2.000 caratteri, quindi la pipeline suddivide il riassunto a 1.900 e pubblica i blocchi in sequenza. Se nessun webhook è disponibile, il bot ricade su un messaggio normale. Un meccanismo, due percorsi, nessuna logica duplicata.
Il prompt del riassunto proibisce esplicitamente il riempitivo aziendale e il marketing generico. Se la settimana non ha prodotto veri punti salienti, il riassunto lo dichiara. Una settimana onesta e scarna guadagna più fiducia di una inventata e impressionante.