For ten years I built the tools a major media company's teams ran every day — one connected loop. PubHub is where a small social team plans a week, composes per-platform posts through one guided flow, and publishes across four networks. Callout is where operators launch rule-driven on-site promotions with exact confidence, previewing against the same renderer readers see. Tag Yourself is where the content loops back — a quiz result becomes a personalized generated image worth sharing, and the share pulls friends into the site.
The through-line: non-engineers driving complex systems safely. Automation proposes and a human disposes. The preview is the real thing. The share comes back.
A social publishing platform for scheduling and publishing content across four networks — YouTube, Instagram, Facebook, and Twitter. It's the tool a small social team uses to plan a week of posts, compose per-platform posts through one guided flow, see which accounts are connected or need attention, and review automation-suggested posts before they go out.
┌────────────────┐
│ Automations │
│ (rule-based │
│ bots) │
└───────┬────────┘
▼
┌──────────────────────┐
│ Recommendation queue │
│ (candidate posts, │
│ awaiting approval) │
└──────────┬───────────┘
│
┌───────────┐ ┌───────────┐ ┌───────▼──────────────┐ ┌────────────┐
│ Accounts │ ──▶ │ Composer │ ──▶ │ Scheduler / Queue │ ──▶ │ Platforms │
│ (connect/ │ │ (channel→ │ │ (calendar + cross- │ │ YouTube · │
│ reconnect │ │ type→media│ │ account queue, same │ │ Instagram· │
│ a channel)│ │ →schedule)│ │ underlying posts) │ │ Facebook · │
└───────────┘ └─────▲─────┘ └──────────────────────┘ │ Twitter │
│ └────────────┘
└╌╌╌ an approved recommendation becomes a real
scheduled post, back into Composer/Scheduler
An in-house platform for running on-site promotional units — email-signup prompts and link placements — on a large media website: a client-side unit renderer, a serving API that decides what runs where, and the admin app operators use to create, configure, preview, and manage units. The goal: let a non-engineer launch a complex, rule-driven promotion with exact confidence in the result — without ever touching raw config.
┌──────────────┐ ┌──────────────┐ ┌───────────────┐
│ ADMIN │ ───▶ │ SERVING API │ ───▶ │ UNIT RENDERER │
│ operator │ │ validates, │ │ shows unit │
│ configures │ │ decides what│ │ to readers │
│ a unit │ │ runs where │ │ on the site │
└──────────────┘ └──────────────┘ └──────┬────────┘
▲ │
│ dashed feedback: the SAME renderer drives │
└─ ─ ─ ─ ─ ─ ─ the admin's live preview ─ ─ ─ ┘
A shareable results experience for personality quizzes, powered by a template-image platform — server-rendered React composited to shareable images at scale, so every quiz taker gets a personalized, on-brand result image generated on the fly. The goal: turn a quiz result into something worth sharing, make sharing frictionless, and make the shared artifact pull friends back into the quiz — all safely at scale.
The flow as shipped: before the reveal, the quiz asks you to predict your own result — the celebration fires at the actual result, not the guess. After the reveal you can tag a friend by predicting their result and sharing it, and long result sets scroll.
PubHub and Callout screens are illustrative reconstructions from memory for portfolio purposes — not BuzzFeed work products; all names, content, and numbers in those wireframes are fictional ("Acme Media"). Tag Yourself is shown via screenshots of the shipped public product, and its quoted metrics are public. No internal systems, proprietary code, or data are shown anywhere on this page.