Proposta · Consolidamento dei due cervelli "Sole" (2026-05-30)
Stato: PROPOSTA · decisione founder pending. Niente migrazione eseguita senza ok esplicito. Autore: Claude (sessione eloquent-lovelace, VIA B Opus 4.8). Per: Gregorio.
Il problema in una riga
Oggi Multiverbe ha due orchestratori AI diversi che fanno cose simili con stack diversi. Vanno unificati prima di scalare, altrimenti ogni feature AI va costruita due volte e la qualità diverge.
I due cervelli oggi
| (1) Foundation Agentica — il "Sole" nuovo | (2) ai-copilot — il "Sole" vecchio | |
|---|---|---|
| Runtime | Vercel serverless api/ (Node) |
Supabase Edge Functions (Deno) |
| Modelli | Anthropic 3-tier canon (Opus 4.8 / Sonnet 4.6 / Haiku 4.5) | Gemini 2.5 Flash (Groq rimosso 2026-05-30) |
| Codice | api/_lib/agent-core.ts, llm-client.ts, models.ts, api/ai/sole-crm-suggestions.ts, api/_inngest/functions/analyze-planet-data.ts |
supabase/functions/ai-copilot-* (chat/competitors/goals/scan/pulse/monthly/weekly/yearly) + _shared/{ai-client,context-builder,brain-loader,...} |
| Memoria | brand_memory pgvector + tabelle pianeta |
brand_intelligence + ai_conversations + ai_notifications + ai_goals + ai_reports |
| Auth | requireWorkspaceAuth (Supabase getUser + membership) |
requireWorkspaceOrCron (aggiunto oggi VIA A) |
| PII | pseudonimizzazione lato handler | pseudonimizzazione aggiunta oggi (_shared/pii-pseudonymize.ts, VIA A #17) |
| Stato | nuovo, allineato al canon, in crescita (Inngest workflow engine) | precedente (design 2026-02-24), funzionante ma fuori dal routing canon |
Sono due implementazioni dello stesso concetto ("l'AI che osserva il workspace e suggerisce/agisce"). Divergono su modello, runtime, tabelle e convenzioni.
Perché consolidare (e perché non subito tutto)
A favore: un solo routing (canon 3-tier), un solo set di tabelle memoria, una sola pseudonimizzazione, un solo punto per effort/adaptive thinking/task budgets, niente doppio mantenimento. Coerenza di qualità e di costo.
Cautela: ai-copilot funziona ed è wirato a UI esistenti (la chat copilot via useAIChat, le notifiche, i report). Una migrazione big-bang rischia regressioni a 10 giorni dal gate. Va fatta a fette, con un PoC che prova il pattern prima di toccare il resto.
Direzione raccomandata
Migrare ai-copilot dentro la Foundation Agentica (runtime Vercel api/ + Anthropic), una funzione alla volta, mantenendo le tabelle dati esistenti (ai_conversations ecc.) finché non c'è motivo di unificarle. Gemini resta legittimo per il multimodale (immagini/video content), non per il ragionamento testuale del copilot (quello torna su Anthropic canon).
Ordine suggerito (dal più contenuto al più rischioso):
- PoC →
ai-copilot-pulse(anomaly detector · piccolo · LLM solo quando c'è un'anomalia · nessuna UI critica che si rompe). - report batch (
monthly/weekly/yearly) → cron lato Vercel/Inngest. competitors/goals/scan→ on-demand o cron.ai-copilot-chat(user-facing, il più importante) → ultimo, con A/B e fallback.
PoC pronto da eseguire (post-ok founder)
Obiettivo: dimostrare che una funzione ai-copilot gira sul routing Anthropic canon senza perdere funzionalità.
Scope: portare la logica di supabase/functions/ai-copilot-pulse/index.ts in un endpoint Vercel api/ai/pulse.ts che:
- usa
requireWorkspaceOrCron(req, workspaceId)(gemello Vercel:api/_lib/require-workspace-auth.ts+ unrequireCronSecretda aggiungere lì, oggi esiste solo lato Deno); - legge gli stessi dati (
outreach_log,review_data) via l'admin helperapi/booking/_lib/supabase-admin.ts; - pseudonimizza (già c'è
src/lib/pii-pseudonymize.ts) PRIMA di chiamare il modello; - chiama Anthropic via
agent-coreollm-client(Haiku 4.5 per il batch · costo basso), NON Gemini; - scrive in
ai_notificationscome oggi (zero cambi di schema/UI).
Validazione: esbuild bundle pulito + una run di prova su un workspace seed (anomalia simulata → 1 notifica). Confronto qualità output vs Gemini su 3-5 casi.
Criterio di successo: parità funzionale + costo/latenza accettabili → si procede con le funzioni successive. Altrimenti si tiene ai-copilot su edge e si documenta la decisione.
Costo stimato PoC: ~3-4h una sessione. Reversibile (l'edge function resta in piedi finché il PoC non è validato).
Cosa NON cambia in questa proposta
- Le tabelle dati restano dove sono (nessuna migrazione DB nel PoC).
- Gemini resta per il content multimodale (canon).
- L'edge ai-copilot resta attivo finché il PoC non sostituisce davvero la funzione.
Decisione richiesta al founder
- OK a partire dal PoC su
ai-copilot-pulse? (sì / no / scegli un'altra funzione) - Conferma direzione "ai-copilot → Vercel api/ + Anthropic, Gemini solo multimodale"?
- Priorità relativa vs altri task del gate 10 Giu (è un investimento di pulizia, non un blocker MVP).