尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Assistente AI (RAG) per bandi e concorsi italiani: pgvector + ricerca ibrida, agente Claude/Gemini, server MCP. Live: bandobot.vercel.app
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Assistente AI che legge bandi pubblici, concorsi e selezioni italiane e risponde con quello che c'è scritto, citando la pagina. Se gli descrivi il tuo profilo, controlla i requisiti uno per uno (✅ / ❌ / ❓).
Nasce da un problema vero: un bando di 10 pagine per capire, alla pagina 2, che servono 3 anni di esperienza.
| Parte | Come è fatta |
|---|---|
| RAG | PDF → testo per pagina (unpdf) → blocchi da ~900 caratteri con sovrapposizione → embeddings multilingua multilingual-e5-small (384 dim, eseguiti in locale, zero costi) |
| Vector DB | Supabase Postgres + pgvector, indice HNSW, RLS in sola lettura |
| Ricerca ibrida | Funzione SQL hybrid_search: similarità coseno + full-text in italiano (tsvector), fuse con Reciprocal Rank Fusion |
| Agente | Claude (Anthropic SDK, tool runner) con 3 tool: list_bandi, search_bandi, read_page. Fa più ricerche, legge le pagine intere, cita [slug p.N] |
| Costo zero | Senza chiavi: modalità solo ricerca (passaggi + estratto della frase più pertinente). Con una chiave Gemini gratuita: risposta generata con citazioni. La modalità si sceglie da sola in base alle chiavi presenti |
| MCP server | Gli stessi tool esposti via Model Context Protocol (stdio) per Claude Desktop / Claude Code |
| Frontend | Next.js 15 (App Router) + Tailwind, citazioni cliccabili che aprono il passaggio, traccia dei passaggi dell'agente, tema chiaro/scuro |
docs/*.pdf ──► scripts/ingest.ts ──► Supabase (documents, chunks + vector(384) + tsvector)
▲
src/lib/search.ts (hybrid_search RPC) ◄── embeddings query (locale)
▲ ▲
src/lib/agent.ts (Claude + tool) mcp/server.ts (MCP stdio)
▲
/api/chat ◄── UI Next.js
npm install
cp .env.example .env.local # poi inserisci SUPABASE_URL, SUPABASE_ANON_KEY, ANTHROPIC_API_KEY
npm run dev
Endpoint:
POST /api/chat – agente con citazioni ({ messages: [{ role, content }] })GET /api/search?q=...&slug=... – solo ricerca ibrida, senza LLMGET /api/bandi – elenco dei bandi indicizzatidocs/ e aggiungi una voce in docs/manifest.json (slug, titolo, ente, scadenza).npx tsx scripts/ingest.ts --upload (con SUPABASE_SERVICE_ROLE_KEY in .env.local), oppure senza flag per generare i batch SQL in scripts/out/.npx tsx scripts/mcp-test.ts # test end-to-end
claude mcp add bandobot -- npx tsx /percorso/bandobot/mcp/server.ts
Claude Desktop (claude_desktop_config.json):
{ "mcpServers": { "bandobot": { "command": "npx", "args": ["tsx", "C:/percorso/bandobot/mcp/server.ts"] } } }
Online su https://bandobot.vercel.app (Vercel Hobby, regione fra1, gratis). Un cron giornaliero chiama /api/bandi così il progetto Supabase gratuito non va in pausa per inattività. Il modello di embeddings viene scaricato in /tmp al primo avvio; dalla build sono esclusi i binari ONNX non Linux per restare sotto il limite di 250 MB per funzione.
Autore: Daniele Luigi Barbieri – sviluppato con un flusso di lavoro AI-first (Claude Code).