The Brand Asset Hub / Q2 2025
One App for Brand Requests, PDFs, and Print Orders.
I replaced three vendor relationships with a single internal tool that runs the entire creative ops loop.
// The Problem
The marketing team ran brand asset requests through a patchwork of email threads, Dropbox folders, and a print vendor portal. Design requests got lost. File versions diverged. Print orders required manual re-entry into a vendor system. The creative operations loop was entirely human-powered with no single source of truth.
// The Build
I built an internal Next.js app that consolidates the entire creative ops workflow. The client's project management platform serves as the canonical asset source of truth, synced bidirectionally into Supabase with row-level security. The app handles design request intake (with AI-powered processing via Claude), branded PDF generation on demand using pdfme with the client's brand typography and templates, and print order routing directly to fulfillment partners.
The PDF generation pipeline uses Claude Vision to analyze design briefs, extract intent, and populate templated PDFs with the correct brand assets and layout. Asset storage on S3 with presigned URLs for secure distribution.
// outcome
Three external vendor relationships consolidated into one internal tool. Asset turnaround dropped from days to hours.
3
Vendor relationships replaced
10x
Faster asset turnaround
1
Internal app
$0
External tooling cost
// NDA note
This project was completed under NDA. Full narrative with technical detail, trade-offs, and sanitized artifacts available under your own NDA. Contact directly to request the long form.
The Brand Architecture
Q3 2025An Adobe-style product architecture for a multi-brand client.
NDA client
The Agent Council
Q1 2026Five named agent personas, each modeled on a real exec, all orchestrated through a single Claude Code skill.
NDA client
The Theme Loop
Q4 2025Safari only played the first one. Chrome only showed thumbnails. Firefox lied about everything.
NDA client
Got a similar problem? Let’s talk.