← 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
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