Mobile AI assistant · Surigao City LGU

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.

MY ROLEFull-stack development · Mobile app & AI backend
PROJECT TYPEGovernment client · OJT
YEAR2026
THE STARTING POINT

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.

THE APPROACH

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.
ENGINEERING

Inside the build.

  1. Citizen appFlutter · Dart · BLoC
  2. API & streamingPython · FastAPI · Server-Sent Events
  3. 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.

THE WORKFLOW

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.
A LITTLE REFLECTION

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
Flutter app source
UP NEXT

UTV

UTube and UMovie for TV, with Brave Shields ad blocking.