Selected work

Founder · Mobile, AI · 2025 to 2026

A free medication-reminder app for families: set up a parent's doses once, and the whole care circle hears about a missed one.

  • Flutter
  • Dart
  • GetX
  • Firebase
  • Firebase AI
  • Gemini
  • Cloud Functions
  • Firestore
  • i18n
  • SEO
Three Don't Forget Dad app screens on a dark backdrop: the Health Assistant with today's doses, the home screen with the day's medications, and the family dashboard calendar
The assistant, today's doses and the family dashboard, all on demo data.
  • 9

    Release AI sub-agents

  • 18

    Cloud Functions

  • 21

    App locales

  • 83

    Dart test files

Don't Forget Dad is a Flutter and Firebase app for adult children who look after aging parents. You add a parent's medications once, the app reminds them at each dose time, and everyone on the shared care profile gets an alert if a dose goes unconfirmed. It is on the App Store and Google Play, version 1.4.0. I built the app, the Cloud Functions behind it and the marketing website, and I run it as a founder. It gives no medical advice and never prescribes.

The product and who it is for

The user I had in mind is the adult child who lives somewhere else and keeps wondering whether Dad took his tablets. They create a care profile for a parent, add medications with dose times and snooze, and share the profile with siblings or a partner. The parent can also use the app themselves, and there is a self-care path through onboarding. Medications can be added by photographing the label. Reports export as PDF for a doctor visit. Streaks, XP and mood check-ins keep the daily habit going, and a premium tier adds streak freeze, extended history and a family dashboard. There are no ads and no data sales.

Shared caregiving and the missed-dose model

A care profile is the unit of sharing, so family members join a profile with a code or an invite rather than sharing a login. Each dose time on a medication card is its own control that reads taken, due, missed or upcoming, and you can log a past day too. The missed-dose path is server-side on purpose: a scheduled function sends due reminders every 5 minutes, and another checks every 15 minutes for doses nobody confirmed and notifies the caregivers on that profile. A third trigger tells the family when someone marks a dose taken, so the quiet case is visible too. The app stays calm about it: no alarm-red framing beyond what a missed dose naturally shows.

The AI assistant, as it exists in the code

The Health Assistant is a multi-turn tool-calling loop capped at 6 turns. A main orchestrator builds the system prompt from four layers (soul, identity, user context, session context), with the soul, identity, tool guidance and guardrails kept as markdown files outside the Dart code. It calls 9 sub-agents as tools in release builds: medication schedule, history, drug info, label scanner, health summary, medication management, profile, profile context and user progress. A calorie checker is registered only in debug builds, which makes 10 implementations in the code. Seven of the nine production agents are read-only. The two production agents that can write (medication management and profile) return a proposed action card instead of writing, and the debug-only calorie checker is a third that does the same. Nothing is saved until the user approves it. The model is Gemini 2.5 Flash through Firebase AI. The provider sits behind an IAIProvider interface, but Gemini is the only provider implemented today, so the Genkit and Ollama fallback I once described no longer exists. Answers come back as cards built from live app data (today's doses, streak and XP, a medication, a profile) with buttons that work in place. Long chats are kept under budget by a three-stage compactor (trim tool results, summarise the oldest half at 70% of the budget, hard snip at 90%), transcripts persist to Firestore, and each interaction is audit-logged.

Backend and Cloud Functions

Firebase carries the backend: Auth with Google, Apple and email sign-in, Firestore, Cloud Messaging, Storage, Crashlytics, Performance and App Check. Behind it sit 18 Cloud Functions in Node. Five run on a schedule (reminders, missed-dose checks, expiry warnings, a daily leaderboard, snooze cleanup), three react to Firestore writes, one is a callable for account deletion, one consumes Google Play subscription events from Pub/Sub, and eight are HTTP endpoints. The HTTP set covers the Apple and Google subscription webhooks, the contact form, the Android waitlist, invite-link tracking and the blog feed. Subscription state is synced from the stores rather than trusted from the client.

The multi-language website and SEO

dontforgetdad.com is plain HTML, CSS and JavaScript on Firebase Hosting, with no framework or bundler. It has 54 URLs in its sitemap: the home, about, contact, FAQ, privacy, terms and an account-deletion page, a medication-reminder-app landing page and a Medisafe-alternative comparison page, 32 blog posts, and localized homes in German, Spanish, Brazilian Portuguese and English (India), each with its own FAQ and comparison page. The localized pages and the blog are generated from scripts and data files, then committed. Pages ship JSON-LD, hreflang, a sitemap, llms.txt and llms-full.txt, and self-hosted fonts. A push to main deploys through GitHub Actions. The growth and marketing side is run by Agent Office, my AI-agent control room, which treats this company as its first client.

Highlights

  • Shared care profiles: family joins by code or invite, and each dose time is its own taken, due, missed or upcoming control
  • Server-side missed-dose alerts: reminders every 5 minutes, caregiver checks every 15
  • Tool-calling assistant loop capped at 6 turns, with 9 production sub-agents (plus a debug-only calorie checker) on Gemini 2.5 Flash via Firebase AI
  • Writes need approval: the 2 production mutating agents (and the debug calorie checker) propose a card, and nothing saves until the user confirms
  • Agent identity and guardrails live in markdown files, including no prescribing and no dosing advice
  • Three-stage memory compaction, Firestore transcripts and an audit log of agent runs
  • Photograph a pill bottle and the label scan fills in the medication form
  • 18 Cloud Functions, with Apple and Google subscription webhooks and account deletion
  • 21 app locales and a static site with localized homes, 32 blog posts and llms.txt
Related projectAgent OfficeThe AI-agent control room that runs the growth and marketing for this company.

© 2026 Theophilus Rex Danquah

Accra, Ghana