Staff frontend & product engineer

I build interactive products for the modern web.

I’m Pat, a frontend engineer based in New York. At BuzzFeed, I led web engineering for BF Island and built AI-powered quizzes and creative tools. Before that, I spent nearly a decade at Complex Networks building interactive advertising, publisher software, and the tools used to deliver campaigns.

16
Years building for the web
100+
Partner sites on one platform
250+
Branded ad campaigns built
35–50%
Faster initial mobile ad loading
About

How I work

I like projects where I have to figure something out. That might mean learning an unfamiliar system, testing whether an AI model can handle a feature, or working with another team to understand what they need.

I’ve led engineering projects while collaborating with product, design, iOS, and advertising operations. I’m comfortable asking for help, comparing approaches, and changing direction when we find a better solution.

Where I’ve worked

Experience

Other experience & education

2012 — Present

Independent mobile products

Conceived, designed, and shipped two Android utility apps and one game through GadgetJudge.

2017

Freelance web development

Built a responsive, performance- and SEO-focused retail site for Zingale & Co.

2009 — 2012

Junior web development

Built an e-commerce store and landing pages for local businesses at WhatWorks.

2006 — 2011

B.Tech., Computer Systems

New York City College of Technology.

A closer look

Selected projects

01

Social AI creation · BuzzFeed

BF Island

BF Island is a social AI creation product for making and remixing images with friends. On the web, people explore generators and create images from photos or prompts. The iOS app brings creations into group chats and iMessage stickers.

Leading the web engineering

BF Island was my favorite project at BuzzFeed. It was a nearly two-year effort involving several teams, and I led the web engineering: building reusable components, builders, and renderers, working with the iOS team, and discussing feature scope with design and product.

From Generator Generator to Island

The project grew out of Generator Generator, which my team and I had built earlier. My work connected JSON configuration and AI output to editor state, live previews, and canvas rendering. Shared components and configuration let us support different builders without copying an entire implementation for each one.

A product decision

For one meme format, product wanted the image model to generate text inside the image. The results weren’t reliable enough at the time, so I proposed letting people write their own message and checking it for profanity. The team agreed, and I implemented that approach.

My role
Web engineering lead
Worked with
Product, design, and iOS
Core stack
React, JSON, Canvas / Fabric.js, LLM APIs
02

Campaign operations · BuzzFeed

Custom Ad Tools

Losing our ad manager

After BuzzFeed sold Complex, we lost access to tools.complex.com, the ad manager I had co-architected. We still had our ad templates, but no way for engineers to use them or hand off finished campaigns to AdOps.

A simpler replacement

I proposed and built a React/Next.js tool that configured starter ad templates for engineers. Once they committed finished code to the repository, AdOps could find it on a custom dashboard, add tags, and export code ready for Google Ad Manager (GAM).

Delivered in two weeks

I delivered the essential workflow in two weeks, rather than the 4–6 months expected for a more sophisticated replacement. It’s still used at BuzzFeed for custom campaigns outside BAM.

Delivery
Two weeks
Built with
React and Next.js
Used by
Engineers and AdOps
03

Ad creation tools · BuzzFeed

BAM Jumbotron Builder

Giving AdOps a builder

I was new to BuzzFeed and had to learn its infrastructure quickly. Working with RevTech and AdOps, I proposed a builder inside BAM (BuzzFeed Ad Manager) so AdOps could create Jumbotrons themselves instead of having each one built manually.

Skipping the separate BFP form

The usual process for adding an ad format to BAM started with engineers creating a separate form in BFP (BuzzFeed Format Platform). That took 4–8 weeks, followed by another 3–4 weeks of BAM integration. I proposed building Jumbotron Builder directly in BAM, removing the need for the BFP step.

What I built

I implemented the builder in BAM, saving 4–8 weeks by skipping BFP development. I also designed it to be cloned and adapted for other ad formats, giving us a starting point for future builders. Jumbotron Builder remains in use at BuzzFeed.

Collaborators
RevTech and AdOps
Built for
AdOps to create Jumbotrons in BAM
Engineering time saved
4–8 weeks by skipping the BFP form
04

Publisher platform · Complex Networks

Catalyst Creator

Shared software across a publisher network

Catalyst Creator was the JavaScript platform used across more than 100 partner sites for advertising, video, analytics, and configuration. I modernized and optimized the platform and its integrations.

Improving ad loading

I streamlined ad delivery, improving initial ad load speed by roughly 15–20% on desktop and 35–50% on mobile.

Network
More than 100 partner sites
Desktop ad loading
Roughly 15–20% faster
Mobile ad loading
Roughly 35–50% faster
05

Interactive advertising · Complex Networks

Nearly a decade of custom campaigns

From display ads to custom interactions

Over nearly ten years at Complex, I built an estimated 250+ branded campaigns. Some ran for a day; others ran for months. The work ranged from takeovers and run-of-site ads to animated banners, skins, overlays, expandable units, and audio experiences.

A few examples

For Samsung’s “X-ray” ad, moving a phone image revealed a hidden object. Horror campaigns added effects over article images. Hot Ones ads played audio clips from the show, and a Mountain Dew Baja Blast banner sent a motorbike jumping across the screen.

The “Superhero” format paired one 640×360 image with one 640×360 video, side by side on desktop and stacked on mobile. I also built toolbar ads with a 300×50 trigger that could expand to full width.

Making repeated work easier

When I joined Complex, we were rebuilding many of the same ad components for each campaign. I collected those components into templates and made them available to other engineers through GitHub.

More projects

Quizzes, campaigns, and production tools

AI quizzes

Infinity Quizzes

I worked with an engineering leader to learn BuzzFeed’s architecture and existing components, then delivered four Infinity Quizzes for launch over four to five weeks.

Campaign collaboration

Coca-Cola DreamWorld

I joined a few weeks before launch, helped divide the remaining work, and built the animated introduction so other engineers could focus on the 3D experience. We launched on time.

Headless CMS

Rap Brackets

I built a Storyblok-based product for the production of Complex’s Rap Brackets show.

What I use

Tools and technologies

Frontend

React, Next.js, JavaScript, HTML, CSS, Canvas API, Fabric.js

AI integrations

OpenAI and Replicate APIs, structured model output, streaming responses, prompt design, REST APIs

CMS and campaign tools

Storyblok, custom CMS development, Node.js, CLI tooling, AWS S3, Google Ad Manager, Video.js, JW Player

Other experience

Java and Android development, Angular, PHP, Laravel, e-commerce, performance and SEO

Contact

Let’s talk.

I’m looking for a senior or Staff role in frontend or product engineering. I’d be happy to talk about the team, what you’re building, and where my experience could help.