Samsun Municipality AI Assistant
Independent RAG assistant that turns continuously collected municipal information into grounded, streamed answers for citizens.



Problem
Municipal information is spread across news, announcements, service pages and frequently changing sources. Citizens may know what they need but not which page or department contains the answer.
Context & role
I built the ingestion pipeline, retrieval layer, multi-provider answer flow and React chat experience as an independent public-service technology project. It is not an official product of Samsun Metropolitan Municipality.
How it works
- ↳A .NET worker crawls news, announcements, events and services and synchronises the knowledge base every hour.
- ↳Content is chunked and embedded locally with bge-m3 on Ollama, avoiding a paid embedding dependency.
- ↳An ASP.NET Core Minimal API embeds each question, searches Qdrant and combines retrieved context with live sources for time-sensitive information.
- ↳Gemini, OpenRouter and Groq form an automatic fallback chain; answers stream to the browser over Server-Sent Events.