Ajwad Rauf← All work
Case study

BadgeForge

A badge brief in, a reviewed, deployment-ready email asset out.

An internal production platform for an enterprise retail CRM email program. It moves every promotional badge from first request to final deployment through one auditable workflow, with the reviews, bilingual copy and compliance checks built in. I designed and built it end to end.

Role
Design & build — solo
Timeline
2025–2026
Client
Loblaw Companies — internal
Type
Internal web app, in production
Internal toolingWorkflow automationNext.js + Firebase

Built inside Loblaw. Proprietary process detail and internal metrics are withheld; a full walkthrough is available on request.

01

What it is

BadgeForge is the system a retail marketing team uses to brief, build, review and ship the promotional badges that run in their CRM emails — the offer tiles that carry a campaign's price points, dates and calls to action.

Before a single system, that work lived across briefs, threads and spreadsheets. Badges stalled between hand-offs, versions drifted, and no one could see where a given badge was in the process. BadgeForge makes it one place with one source of truth, from intake to release.

Discipline
Product design + full-stack build
Users
Marketers, producers, approvers
Access tiers
Admin · Agency · Marketer
Languages
Bilingual EN / FR
02

The workflow I designed

Two phases, one thread. Every badge follows the same path, and each stage is tracked, notified and time-stamped.

Phase 1 — Intake

  1. 01
    Brief

    Request captured with campaign, dates and targeting.

  2. 02
    Badge Build

    Creative and links assembled against the brief.

Phase 2 — Production & release

  1. 03
    Review

    Agency review with structured feedback.

  2. 04
    QA

    Copy, links and compliance checks.

  3. 05
    Approval

    Sign-off gated by role.

  4. 06
    Deploy

    Released to the email production pipeline.

03

What I built into it

Enterprise SSO
Single sign-on through Microsoft Entra ID (OIDC), with three role tiers governing what each user can see and do.
Two-phase intake
A Brief → Badge Build split so a request can be logged early and completed later, without losing the thread.
Bilingual by default
Every badge carries paired EN / FR fields, kept together through review and deployment.
AI copy checks
Subject-line validation and spell-check via Gemini 2.5 Flash (Genkit), run before anything is sent.
Auto-generated briefs
Structured PDF briefs produced from the record, so the paperwork writes itself.
UTM link builder
Consistent, validated tracking links generated in place rather than hand-assembled.
Transactional email
Stage-by-stage notifications (brief, review, QA, approval, follow-up) so hand-offs never sit silent.
Scheduled automation
Cron jobs send a daily digest plus link-plan and UTM reminders and rejection follow-ups — and skip weekends.
04

Under the hood

A single Next.js application, server-rendered on managed infrastructure, with the data, auth, storage and AI wired through one Google Cloud project.

Role-based access, enforced twice

Server-side route gating plus client route guards, backed by least-privilege database and storage rules. Access is decided by role, and the admin-only tooling stays admin-only.

An AI gate before send

Subject lines and copy pass an AI validation step before a badge can move forward, catching typos and weak lines while they are still cheap to fix.

Notifications as a system, not an afterthought

Each stage transition fires its own templated email, and scheduled jobs chase the work that would otherwise stall — reminders, digests and follow-ups on a weekday cadence.

One record, many outputs

A single badge record generates its brief PDF, its tracking links and its bilingual fields, so the same source of truth drives every downstream artifact.

05

Outcome