尚未检测到更新。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).