Project / 01Selected Work

Product ownership + platform modernization

Brand Activation Manager

Internal shorthand / BAM

Rebuilding a fragile operations platform into a maintainable product system.

Engagement
End-to-end product ownership
Platform
Campaign operations
Scope
UX / architecture / full stack
Stack
Next.js / Django / MySQL / Redis

Thirty-second read

Problem

Slow, fragile legacy workflows constrained the operation.

Owned

Product, UX, architecture, full stack, and integration.

Key decision

Campaign operations

Proof

Responsive data-heavy workflows and an extensible foundation.

Full stack

Ownership

Product through integration

Selective

Data loading

Less work on critical paths

Extensible

Architecture

Patterns built for handoff

01 / Context

Problem / opportunity

A tightly coupled legacy application had hardcoded rules, incomplete workflows, and performance problems that made every change riskier.

The opportunity was to redesign the product around the operation—not simply replace old code.

End-to-end product ownership—from identifying weaknesses in the legacy experience and redesigning core workflows to architecting and building the full-stack platform. The result is a cleaner, maintainable system designed so other engineers can extend it confidently.

02 / Ownership

What I owned

  1. 01Diagnosed weaknesses across the product and underlying system.
  2. 02Redesigned core workflows around real campaign operations.
  3. 03Architected, built, and integrated the full-stack platform.
  4. 04Established patterns other engineers could extend confidently.

03 / System

System / product architecture

Legacy

  • Hardcoded rules
  • Tightly coupled
  • Fragile workflows
  • Slow data paths

Rebuilt platform

  • Clear workflows
  • Service boundaries
  • Extensible patterns
  • Selective loading
  1. 01

    Product workflows

  2. 02

    Next.js interface

  3. 03

    Django services

  4. 04

    MySQL + Redis/RQ

  5. 05

    S3 + integrations

A modern product surface backed by explicit services, queues, storage, and instrumentation.

1

Next.js 14, React 18, and TypeScript for the product interface.

2

Django 4.2 and DRF for application and domain services; MySQL for system records.

3

Redis and RQ for caching and queued work; S3, Mixpanel, and Docker Compose for operations.

4

Selective loading kept large calculations and high-volume data away from interaction-critical paths.

04 / Evidence

Product evidence

Campaign workspace for the Heineken Silver campaign showing lifecycle states, setup cards, operations, and approval state.
Primary evidence / 01Heineken Silver campaign with lifecycle states, setup cards, operations, and approval state.
Campaign review modal with a footprint map of 2,011 locations in the area and mobile home and detail previews.
Targeting evidence / 02Review modal with footprint map, 2,011 locations in area, and mobile home/detail previews.
Edit Creative modal showing the campaign image, call-to-action configuration, and a live-style mobile preview.
Workflow evidence / 03Edit Creative modal with campaign image, CTA configuration, and live-style mobile preview.
Edit campaign type modal with Brand Campaign, on-premise and off-premise channel choice, and Generic Market and Retail / Establishment campaign options.
Modeling evidence / 04Edit campaign type modal: Brand Campaign, on/off-premise channel choice, Generic Market and Retail / Establishment campaigns.

05 / Outcome

What changed

A brittle collection of workflows became a maintainable product system with clearer journeys and a disciplined technical foundation.

Caching, selective loading, and controlled calculation work kept data-heavy interactions smooth.

Let's discover what's possible.

Every business has hidden opportunities.

Some require better decisions. Some require automation. Some require entirely new software.

Let's find yours.

Schedule a Strategy Session