← Back to Portfolio

Staff Engagement Automation

Automation Engineer

The Challenge

A time-triggered birthday and engagement system with custom HTML email templates for institutional staff.

The Engineering Win

Iterated through real-world rendering bugs across mail clients, fixing DD/MM/YYYY date parsing, HTML-entity-encoding emoji to prevent question mark characters on Android, and per-year deduplication so no staff member receives a duplicate message.

Per-year deduplication to prevent repeat birthday emails

function hasAlreadySentThisYear(staffId) {
  const props = PropertiesService.getScriptProperties();
  const key = "sent_" + staffId + "_" + new Date().getFullYear();
  return props.getProperty(key) !== null;
}

function markAsSent(staffId) {
  const props = PropertiesService.getScriptProperties();
  const key = "sent_" + staffId + "_" + new Date().getFullYear();
  props.setProperty(key, "true");
}

See It In Use

A real birthday email as received, recipient details blurred for privacy

A real birthday email as received, recipient details blurred for privacy

Quantifiable Result

100% zero-touch automation for staff engagement across the Kano Zone.

Full Capabilities

  • Fully automated daily trigger, no manual step to send a message
  • Custom HTML email template with cross-client rendering fixes
  • HTML-entity-encoded emoji to prevent broken characters on Android mail clients
  • Robust DD/MM/YYYY date parsing to correctly match birthdays
  • Per-year deduplication so no staff member receives a duplicate message

Tech Stack

Google Apps ScriptTime-Driven TriggersHTML Email Templates