Skip to content
karim.semaan(open to work)
WorkExperienceAboutSkillsContactResume ↓
← All work
Birthday Buddy preview
Generative AIProtected2025

Birthday Buddy

AI WhatsApp birthday concierge

Generative AI · PreviewBirthday BuddyAI WhatsApp birthday concierge

WhatsApp-native chatbot; private build, so the preview uses synthetic contacts.

Protected work

A private SaaS build, so source, WhatsApp Business wiring, and user data are not public. Happy to demo it on synthetic contacts.

Request access

Birthday Buddy is a WhatsApp chatbot SaaS that tracks the birthdays of people you care about and generates personalized, natural-sounding messages. A two-stage inference engine (a deterministic multilingual rule stack followed by a batched Claude Sonnet pass) auto-tags every contact's relationship and closeness; Claude Haiku classifies inbound intents and Sonnet drafts in-voice messages, with prompt caching and prompt-injection hardening. The backend runs entirely on Supabase Edge Functions (Deno/TypeScript) over a Postgres schema with RLS and pg_cron nudges, integrating the WhatsApp Business Cloud API (HMAC-verified webhooks) and Google OAuth.

  • TypeScript
  • Deno
  • Supabase Edge Functions
  • PostgreSQL
  • Claude (Haiku + Sonnet)
  • WhatsApp Business API
  • Google OAuth

Architecture · contacts → in-voice WhatsApp messages

  1. 01

    Contact import

    Contacts import via Google OAuth into a Postgres schema with row-level security.

  2. 02

    Relationship inference

    A two-stage engine (a deterministic multilingual rule stack, then a batched Claude Sonnet pass) tags each contact's relationship and closeness.

  3. 03

    pg_cron reminders

    Scheduled pg_cron nudges fire before each birthday.

  4. 04

    Intent + drafting

    Claude Haiku classifies inbound intents; Claude Sonnet drafts a message in your own voice (prompt caching + injection hardening).

  5. 05

    WhatsApp delivery

    Sent via the WhatsApp Business Cloud API over HMAC-verified webhooks, all on Supabase Edge Functions (Deno).

Function code
~5,128 LOC TS
AI
Claude Haiku + Sonnet
Kinship languages
7+
Security review
18 pass / 0 fail
Private · request access
Want something like this? Get in touch →
© 2026 Karim SemaanBuilt with Next.js, Tailwind & Supabase.LinkedIn ↗GitHub ↗