CharlieBot.
A mobile AI assistant for Surigao City government services. Citizens can ask about requirements, check a document’s progress, and find the right office through chat, voice, and maps.
A problem worth exploring.
Dealing with the city starts with questions: which office handles a request, what it requires, and where a document is right now. Those answers usually mean a trip to city hall or a call to the right office. CharlieBot gives citizens one place to ask, in their own words, from their phone.
Less friction. More intention.
CharlieBot works like asking at the counter. A citizen types or speaks a question in their own words, and the answer is drawn from the city’s own information on its services, so it follows how each office actually works. Replies can appear as they are written and be read aloud, and the conversation stays on the phone. For a document already filed, the same app shows its status and every office it has passed through, so checking on it no longer means a trip to city hall.
- Chat about city services, from business permits to birth certificates.
- Voice conversations with speech recognition and spoken replies.
- Document tracking with a summary, current status, office-routing history, and processing time.
- Location-based help through maps, right inside the app.
Inside the build.
- Citizen appFlutter · Dart · BLoC
- API & streamingPython · FastAPI · Server-Sent Events
- Grounded answersRetrieved city information · Ollama
- Separate the app from the model
- The Flutter app communicates through REST endpoints and a streamed chat endpoint. Model execution and retrieval belong to the backend, while conversation history stays on the device.
- Ground answers in city information
- The RAG layer supplies relevant service information to the local model. Working with the LGU’s IT staff keeps requirements and document-routing workflows tied to the city’s processes.
- Make the workflow reviewable
- The public demo demonstrates the mobile interface with fictional records and scripted conversations, so a visitor can explore it without accessing government systems.
Checks & walkthrough
In the browser demo, try a business-permit conversation or track sample document PDID-20261001. The document summary and office timeline demonstrate the interface; they are sample records.
What the system enables.
- Before
- Citizens had to call or visit the right office to ask about requirements or follow up on a document.
- With CharlieBot
- Citizens can look up service requirements and see a document’s status and office-routing history from their phone.
What this project taught me.
An assistant for public services has to be right before it is clever. Grounding every answer in retrieved city information mattered more than the model itself, and working beside the LGU’s IT staff kept the app tied to real service workflows.
BUILT WITH
- Mobile app
- Flutter, Dart, BLoC, Material 3
- On the device
- Speech recognition, Audio playback, SharedPreferences
- Backend & AI
- Python, FastAPI, Ollama, RAG
- API
- REST APIs, JSON, Server-Sent Events
- Deployment
- Docker
UTV
UTube and UMovie for TV, with Brave Shields ad blocking.
