Inspiration
Every time a resident contacts a government chatbot or public service portal, they start from zero re-entering their name, address, ID details, and case history as if they've never interacted before. We watched this "amnesia loop" frustrate real people navigating benefits, licensing, and civic services. Meanwhile, AI assistants are getting smarter at conversation but have no persistent, consent-aware memory across sessions. We asked: what if the AI already knew who you were securely, with your permission and could pick up right where you left off? That's RememberME.
What it does
RememberME is a memory layer for AI-assisted citizen services. Once a resident signs in and builds their credential profile (name, contact info, address, driver's license fields, uploaded ID documents, portrait photo), that structured context travels with them across sessions. An AI assistant can call our Context Resolution API to retrieve only the fields it needs with high-sensitivity values like license numbers automatically masked unless explicitly opted in. The result: shorter conversations, less friction, fewer drop-offs, and a dramatically better experience for both the resident and the agency.
How we built it
We split the system into two clean halves. The frontend is a Vite + React SPA handling the marketing site, authentication modals, and a full credential dashboard with inline field editing, portrait uploads, and a Leaflet-powered address map with geocoding. The backend is a Next.js App Router serving REST API routes backed by Supabase for auth, Postgres for profile storage, and Supabase Storage for documents and photos. We wrote Postgres migrations with row-level security, built an OpenAPI/Swagger spec for the entire API surface, and created a dedicated context resolution endpoint that formats profile data for safe LLM prompt injection complete with token estimation and field-level masking rules. A GitHub Actions workflow handles automated deployment of the frontend to GitHub Pages.
Challenges we ran into
Getting the security model right was tricky balancing convenience (the AI needs context) against privacy (you don't want license numbers floating in prompts by default). Designing the masking and opt-in system for the context resolution API took several iterations. CORS between the static GitHub Pages frontend and the separately hosted Next.js API was another headache, especially around preflight requests and origin matching. Coordinating across four contributors on a tight timeline also meant we had to be disciplined about schema migrations and not stepping on each other's database changes.
Accomplishments that we're proud of
What we learned
The Context Resolution API is the piece we're most proud of it's a clean, discoverable interface where an AI assistant can query available parameters, request specific fields, and get back structured context with automatic sensitivity masking, token estimates, and both flat and nested response formats. We also built a polished credential dashboard experience with real-time geocoding, map rendering, signed-URL document access, and portrait management it feels like a real product, not a hackathon prototype. And we shipped with full OpenAPI documentation and Swagger UI out of the box.
What's next for Remember ME
We learned that the hardest part of "AI memory" isn't storage it's trust and consent. Deciding which fields get masked by default, how to handle opt-in for sensitive data, and how to scope context so an LLM gets just enough without over-exposure forced us to think deeply about privacy-by-design. We also got much sharper on Supabase's row-level security model, signed URL patterns for document access, and the practical realities of deploying a split-stack app (static SPA + API server) across different hosting platforms.
Built With
- api
- context
- css
- github-actions-(ci/cd)-cloud-services-&-database:-supabase-(auth
- html
- languages:-javascript
- leaflet-(mapping)-platforms:-github-pages-(frontend-hosting)
- next.js-(app-router)
- nominatim-(server-side-geocoding-proxy)
- openapi-3.1-/-swagger-ui-(self-documented-api-spec)
- plpgsql-(sql)-frameworks-&-libraries:-react
- postgresql
- resolution
- storage)-apis:-supabase-auth-api
- vercel-(backend-hosting)
- vite