// Wistia thumbnail + media-id resolution. // The naive URL `embed-ssl.wistia.com/deliveries/.jpg` does NOT work — // that path requires a delivery hash, not a media id. Instead we hit Wistia's // CORS-enabled oembed endpoint to get the real thumbnail_url, cache it, and use // that. // // The `key` here is either a 10-char Wistia media ID (e.g. "5akmdqt1f9") or a // full share URL like "https://acct.wistia.com/s/". For share URLs we // hit oembed with the share URL itself, then parse the actual media ID out of // the returned html embed string — that media ID is what the player API needs // for the `wistia_async_` class. const __wistiaInfoCache = new Map(); const __wistiaInfoInflight = new Map(); function isWistiaShareUrl(v) { return typeof v === 'string' && /^https?:\/\//i.test(v); } function fetchWistiaInfo(key) { if (__wistiaInfoCache.has(key)) return Promise.resolve(__wistiaInfoCache.get(key)); if (__wistiaInfoInflight.has(key)) return __wistiaInfoInflight.get(key); const oembedUrl = isWistiaShareUrl(key) ? `https://fast.wistia.com/oembed.json?url=${encodeURIComponent(key)}` : `https://fast.wistia.com/oembed.json?url=https://fast.wistia.net/embed/iframe/${key}`; const p = fetch(oembedUrl) .then(r => r.ok ? r.json() : Promise.reject(new Error('oembed ' + r.status))) .then(j => { // Strip oembed's small crop and request a bigger one. IMPORTANT: use // `image_resize` (preserves aspect ratio) — NOT `image_crop_resized=WxH` // which forces a square crop. let thumb = (j.thumbnail_url || '').replace(/\?.*$/, ''); if (thumb) thumb += '?image_resize=900'; let mediaId = isWistiaShareUrl(key) ? null : key; if (!mediaId && typeof j.html === 'string') { const m = j.html.match(/embed\/iframe\/([a-z0-9]+)/i) || j.html.match(/wistia_async_([a-z0-9]+)/i) || j.html.match(/medias\/([a-z0-9]+)/i); if (m) mediaId = m[1]; } const info = { thumb, mediaId }; __wistiaInfoCache.set(key, info); return info; }) .catch(() => { const info = { thumb: isWistiaShareUrl(key) ? '' : `https://fast.wistia.com/embed/medias/${key}/swatch`, mediaId: isWistiaShareUrl(key) ? null : key, }; __wistiaInfoCache.set(key, info); return info; }); __wistiaInfoInflight.set(key, p); return p; } function useWistiaInfo(key) { const [info, setInfo] = useState(() => (key && __wistiaInfoCache.get(key)) || null); useEffect(() => { if (!key) { setInfo(null); return; } if (__wistiaInfoCache.has(key)) { setInfo(__wistiaInfoCache.get(key)); return; } let cancelled = false; fetchWistiaInfo(key).then(i => { if (!cancelled) setInfo(i); }); return () => { cancelled = true; }; }, [key]); return info; } function WistiaThumb({ id, alt, hover, style }) { const info = useWistiaInfo(id); const url = info && info.thumb; return (
{url && ( {alt} { const swatch = `https://fast.wistia.com/embed/medias/${id}/swatch`; if (e.currentTarget.src !== swatch) e.currentTarget.src = swatch; }} style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block', transition: 'transform 0.6s ease, opacity 0.4s ease', opacity: 1, transform: hover ? 'scale(1.04)' : 'none', ...style, }} /> )}
); } function PortfolioPage() { // Each project has: format (cat), audience (industry), quality tier. // Curated: Ultra → Pro → Air → Lite within each audience; strongest // catalogs (Adam, Keaton, Sarizza) lead. Empty drop-slots removed. const projects = [ // ═══════════════ REELS & SHORTS ═══════════════ // ─── Founders — Adam (Ultra · 6) ─── { id: 'adam-1', title: 'Adam — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Ultra', client: 'Adam', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'q2ewlwhf5t', desc: 'Adam — founder-niche reel.' }, { id: 'adam-2', title: 'Adam — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Ultra', client: 'Adam', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '3mk4f15f6v', desc: 'Adam — founder-niche reel.' }, { id: 'adam-3', title: 'Adam — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Ultra', client: 'Adam', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '5mwzunxy7g', desc: 'Adam — founder-niche reel.' }, { id: 'adam-4', title: 'Adam — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Ultra', client: 'Adam', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'mgdr07w6w2', desc: 'Adam — founder-niche reel.' }, { id: 'adam-5', title: 'Adam — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Ultra', client: 'Adam', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'l5r73pthka', desc: 'Adam — founder-niche reel.' }, { id: 'adam-6', title: 'Adam — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Ultra', client: 'Adam', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '21f90qnorg', desc: 'Adam — founder-niche reel.' }, // ─── Founders — Benjamin (Pro · 4) ─── { id: 'benjamin-1', title: 'Benjamin — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Pro', client: 'Benjamin', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'umb05fhhib', desc: 'Benjamin — founder reel.' }, { id: 'benjamin-2', title: 'Benjamin — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Pro', client: 'Benjamin', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '5chx12nmxb', desc: 'Benjamin — founder reel.' }, { id: 'benjamin-3', title: 'Benjamin — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Pro', client: 'Benjamin', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'shvd8j9050', desc: 'Benjamin — founder reel.' }, { id: 'benjamin-4', title: 'Benjamin — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Pro', client: 'Benjamin', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '43m64ar6q2', desc: 'Benjamin — founder reel.' }, // ─── Founders — Comp AI (Air · 3) ─── { id: 'compai-1', title: 'Comp AI — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Air', client: 'Comp AI', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'bvce2y8kd1', desc: 'Comp AI — founder reel.' }, { id: 'compai-2', title: 'Comp AI — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Air', client: 'Comp AI', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'bbu30la3i0', desc: 'Comp AI — founder reel.' }, { id: 'compai-3', title: 'Comp AI — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Air', client: 'Comp AI', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'vc1ope5b7i', desc: 'Comp AI — founder reel.' }, // ─── Founders — Finovamoney (Lite · 4) ─── { id: 'finova-1', title: 'Finovamoney — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Lite', client: 'Finovamoney', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '581aphxpya', desc: 'Finovamoney founder reel.' }, { id: 'finova-2', title: 'Finovamoney — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Lite', client: 'Finovamoney', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '6wbc4h48ew', desc: 'Finovamoney founder reel.' }, { id: 'finova-3', title: 'Finovamoney — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Lite', client: 'Finovamoney', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'mjutvv9dyj', desc: 'Finovamoney founder reel.' }, { id: 'finova-4', title: 'Finovamoney — Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Lite', client: 'Finovamoney', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'freqe0rsqd', desc: 'Finovamoney founder reel.' }, // ─── Founders — Other (Air · 1) — reclassified from "Business" ─── { id: 'biz-6r6', title: 'Founder Reel', cat: 'Reels & Shorts', audience: 'Founders', quality: 'Air', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '6r6hbqtdki', desc: 'Founder-niche reel.' }, // ─── Fitness Coach — Keaton (Ultra · 11) ─── { id: 'keaton-1', title: 'Keaton — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Keaton', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'b7uzkvsztd', desc: 'Keaton fitness coaching reel.' }, { id: 'keaton-2', title: 'Keaton — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Keaton', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'au3369aqzy', desc: 'Keaton fitness coaching reel.' }, { id: 'keaton-3', title: 'Keaton — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Keaton', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'p0lsuky40s', desc: 'Keaton fitness coaching reel.' }, { id: 'keaton-4', title: 'Keaton — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Keaton', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'a1wsqjfult', desc: 'Keaton fitness coaching reel.' }, { id: 'keaton-5', title: 'Keaton — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Keaton', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'sm2k921157', desc: 'Keaton fitness coaching reel.' }, { id: 'keaton-6', title: 'Keaton — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Keaton', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'h9g1uuks5x', desc: 'Keaton fitness coaching reel.' }, { id: 'keaton-7', title: 'Keaton — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Keaton', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'dnivn1tnow', desc: 'Keaton fitness coaching reel.' }, { id: 'keaton-8', title: 'Keaton — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Keaton', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 's3z1hv9k33', desc: 'Keaton fitness coaching reel.' }, { id: 'keaton-9', title: 'Keaton — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Keaton', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '5sfpsieeni', desc: 'Keaton fitness coaching reel.' }, { id: 'keaton-10', title: 'Keaton — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Keaton', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'gjjit7avqw', desc: 'Keaton fitness coaching reel.' }, { id: 'keaton-11', title: 'Keaton — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Keaton', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '8rkfz7m3j0', desc: 'Keaton fitness coaching reel.' }, // ─── Fitness Coach — Mica (Ultra · 9) ─── { id: 'mica-1', title: 'Mica — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Mica', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'h1j4stibi7', desc: 'Mica fitness coaching reel.' }, { id: 'mica-2', title: 'Mica — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Mica', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '6eeidbo46n', desc: 'Mica fitness coaching reel.' }, { id: 'mica-3', title: 'Mica — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Mica', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '9s1hlru11j', desc: 'Mica fitness coaching reel.' }, { id: 'mica-4', title: 'Mica — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Mica', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'whcxpsocv3', desc: 'Mica fitness coaching reel.' }, { id: 'mica-5', title: 'Mica — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Mica', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'e91pmrx51y', desc: 'Mica fitness coaching reel.' }, { id: 'mica-6', title: 'Mica — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Mica', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'p7vvd6i2et', desc: 'Mica fitness coaching reel.' }, { id: 'mica-7', title: 'Mica — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Mica', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'l30ppron5b', desc: 'Mica fitness coaching reel.' }, { id: 'mica-8', title: 'Mica — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Mica', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'rjcyvuxk8z', desc: 'Mica fitness coaching reel.' }, { id: 'mica-9', title: 'Mica — Fitness Reel', cat: 'Reels & Shorts', audience: 'Fitness Coach', quality: 'Ultra', client: 'Mica', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'jufxjm54z4', desc: 'Mica fitness coaching reel.' }, // ─── Premium Brands — Sarizza (Ultra · 5) ─── { id: 'sarizza-1', title: 'Sarizza — Premium Brand Reel', cat: 'Reels & Shorts', audience: 'Premium Brands', quality: 'Ultra', client: 'Sarizza', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '42d8na69u5', desc: 'Sarizza — premium brand reel.' }, { id: 'sarizza-2', title: 'Sarizza — Premium Brand Reel', cat: 'Reels & Shorts', audience: 'Premium Brands', quality: 'Ultra', client: 'Sarizza', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'sbbw91notg', desc: 'Sarizza — premium brand reel.' }, { id: 'sarizza-3', title: 'Sarizza — Premium Brand Reel', cat: 'Reels & Shorts', audience: 'Premium Brands', quality: 'Ultra', client: 'Sarizza', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '0vj5onyq07', desc: 'Sarizza — premium brand reel.' }, { id: 'sarizza-4', title: 'Sarizza — Premium Brand Reel', cat: 'Reels & Shorts', audience: 'Premium Brands', quality: 'Ultra', client: 'Sarizza', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'x3fpr9tjj2', desc: 'Sarizza — premium brand reel.' }, { id: 'sarizza-5', title: 'Sarizza — Premium Brand Reel', cat: 'Reels & Shorts', audience: 'Premium Brands', quality: 'Ultra', client: 'Sarizza', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'fzocys2zcc', desc: 'Sarizza — premium brand reel.' }, // ─── Personal Brand — Mia (Pro · 3) ─── { id: 'mia-1', title: 'Mia — Personal Brand Reel', cat: 'Reels & Shorts', audience: 'Personal Brand', quality: 'Pro', client: 'Mia', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '5akmdqt1f9', desc: 'Mia — personal-brand reel.' }, { id: 'mia-2', title: 'Mia — Personal Brand Reel', cat: 'Reels & Shorts', audience: 'Personal Brand', quality: 'Pro', client: 'Mia', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'f4xdjihqs8', desc: 'Mia — personal-brand reel.' }, { id: 'mia-3', title: 'Mia — Personal Brand Reel', cat: 'Reels & Shorts', audience: 'Personal Brand', quality: 'Pro', client: 'Mia', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'inf2paypxt', desc: 'Mia — personal-brand reel.' }, // ─── Local Services (Ultra/Pro/Air · 6) ─── { id: 'siam-featured-1', title: 'Local Service Reel', cat: 'Reels & Shorts', audience: 'Local Services', quality: 'Ultra', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'https://siamworking1.wistia.com/medias/r862hqp8sm', desc: 'Local-service reel.' }, { id: 'siamworking-1', title: 'Local Service Reel', cat: 'Reels & Shorts', audience: 'Local Services', quality: 'Pro', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'ubjjnuyzxj', desc: 'Local-service reel.' }, { id: 'localpro-1', title: 'Local Service Reel', cat: 'Reels & Shorts', audience: 'Local Services', quality: 'Pro', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'rrexau61aq', desc: 'Local-service reel.' }, { id: 'localpro-2', title: 'Local Service Reel', cat: 'Reels & Shorts', audience: 'Local Services', quality: 'Pro', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'd1mhzu9ps2', desc: 'Local-service reel.' }, { id: 'localpro-3', title: 'Local Service Reel', cat: 'Reels & Shorts', audience: 'Local Services', quality: 'Pro', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'as2s4uw2jr', desc: 'Local-service reel.' }, { id: 'greenladder-1', title: 'Local Service Reel', cat: 'Reels & Shorts', audience: 'Local Services', quality: 'Air', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '0xofwrtfrp', desc: 'Local-service reel.' }, // ─── Professionals (Pro · 4 / Air · 1 / Lite · 2) ─── { id: 'pro-1', title: 'Professional Reel', cat: 'Reels & Shorts', audience: 'Professionals', quality: 'Pro', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'tb10b4o5qg', desc: 'Professionals-niche reel.' }, { id: 'pro-2', title: 'Professional Reel', cat: 'Reels & Shorts', audience: 'Professionals', quality: 'Pro', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '2nz36jo4ca', desc: 'Professionals-niche reel.' }, { id: 'pro-3', title: 'Professional Reel', cat: 'Reels & Shorts', audience: 'Professionals', quality: 'Pro', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '0y80ehrqw5', desc: 'Professionals-niche reel.' }, { id: 'pro-4', title: 'Professional Reel', cat: 'Reels & Shorts', audience: 'Professionals', quality: 'Pro', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '1gm957wc22', desc: 'Professionals-niche reel.' }, { id: 'pro-5', title: 'Professional Reel', cat: 'Reels & Shorts', audience: 'Professionals', quality: 'Air', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'x16vl3o4mi', desc: 'Professionals-niche reel.' }, { id: 'aron-1', title: 'Aron Thomas — Professional Reel', cat: 'Reels & Shorts', audience: 'Professionals', quality: 'Lite', client: 'Aron Thomas', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'm6eoqxnes5', desc: 'Aron Thomas — professionals-niche reel.' }, { id: 'aron-2', title: 'Aron Thomas — Professional Reel', cat: 'Reels & Shorts', audience: 'Professionals', quality: 'Lite', client: 'Aron Thomas', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'gfd5kpajv8', desc: 'Aron Thomas — professionals-niche reel.' }, // ─── Storytelling / Style Cuts (Pro · 1 / Air · 5) — incl. former "Misc" ─── { id: 'misc-2nj', title: 'Style Cut', cat: 'Reels & Shorts', audience: 'Storytelling', quality: 'Pro', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '2nj977dche', desc: 'Story-driven style cut.' }, { id: 'helen-1', title: 'Helen — Storytelling Reel', cat: 'Reels & Shorts', audience: 'Storytelling', quality: 'Air', client: 'Helen', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: '46s4siig5w', desc: 'Helen — storytelling reel.' }, { id: 'story-1', title: 'Storytelling Reel', cat: 'Reels & Shorts', audience: 'Storytelling', quality: 'Air', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'rj185ax0bp', desc: 'Story-driven reel.' }, { id: 'story-2', title: 'Storytelling Reel', cat: 'Reels & Shorts', audience: 'Storytelling', quality: 'Air', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'wkkxsg8k4j', desc: 'Story-driven reel.' }, { id: 'story-3', title: 'Storytelling Reel', cat: 'Reels & Shorts', audience: 'Storytelling', quality: 'Air', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'mz4tp17x5w', desc: 'Story-driven reel.' }, { id: 'story-4', title: 'Storytelling Reel', cat: 'Reels & Shorts', audience: 'Storytelling', quality: 'Air', client: '—', kind: 'Vertical Reel · 9:16', ratio: '9/16', wistia: 'https://arafat5nexcutmedia.wistia.com/s/t3kwbxuwhpe1nkr', desc: 'Story-driven reel.' }, // ═══════════════ VSL & TALKING HEAD ═══════════════ { id: 'vsl-tgeb', title: 'Vertical VSL', cat: 'VSL & Talking Head', audience: 'Founders', quality: 'Pro', client: '—', kind: 'Vertical VSL · 9:16', ratio: '9/16', wistia: 'tgeb9ryq14', desc: 'Vertical VSL cut.' }, { id: 'th-e348', title: 'Talking Head', cat: 'VSL & Talking Head', audience: 'Founders', quality: 'Pro', client: '—', kind: 'YouTube Long Form · 16:9', ratio: '16/9', wistia: 'https://arafat5nexcutmedia.wistia.com/s/e348j6whdb2vbqp', desc: 'Horizontal talking-head long-form.' }, { id: 'th-s30m', title: 'Talking Head', cat: 'VSL & Talking Head', audience: 'Founders', quality: 'Pro', client: '—', kind: 'YouTube Long Form · 16:9', ratio: '16/9', wistia: 'https://arafat5nexcutmedia.wistia.com/s/s30msvbolyla16l', desc: 'Horizontal talking-head long-form.' }, { id: 'th-h3ks', title: 'Talking Head', cat: 'VSL & Talking Head', audience: 'Founders', quality: 'Pro', client: '—', kind: 'YouTube Long Form · 16:9', ratio: '16/9', wistia: 'https://arafat5nexcutmedia.wistia.com/s/h3ks57pgig2dwsg', desc: 'Horizontal talking-head long-form.' }, { id: 'th-y8fs', title: 'Talking Head', cat: 'VSL & Talking Head', audience: 'Founders', quality: 'Pro', client: '—', kind: 'YouTube Long Form · 16:9', ratio: '16/9', wistia: 'https://arafat5nexcutmedia.wistia.com/s/y8fsiutn9k9nst1', desc: 'Horizontal talking-head long-form.' }, { id: 'th-gp3k', title: 'Talking Head', cat: 'VSL & Talking Head', audience: 'Founders', quality: 'Pro', client: '—', kind: 'YouTube Long Form · 16:9', ratio: '16/9', wistia: 'https://arafat5nexcutmedia.wistia.com/s/gp3knv7zpslcggk', desc: 'Horizontal talking-head long-form.' }, { id: 'th-q2g', title: 'Talking Head', cat: 'VSL & Talking Head', audience: 'Founders', quality: 'Lite', client: '—', kind: 'YouTube Long Form · 16:9', ratio: '16/9', wistia: 'q2ghgynw4r', desc: 'Horizontal talking-head long-form.' }, // ═══════════════ ADS / PAID SOCIAL ═══════════════ { id: 'ad-xses', title: 'Paid Social Ad', cat: 'Ads / Paid Social', audience: 'Founders', quality: 'Ultra', client: '—', kind: 'Performance Ad · 9:16', ratio: '9/16', wistia: 'https://arafat5nexcutmedia.wistia.com/s/xsesjkiysrd2vym', desc: 'Vertical performance ad.' }, { id: 'ad-8c61', title: 'Paid Social Ad', cat: 'Ads / Paid Social', audience: 'Founders', quality: 'Pro', client: '—', kind: 'Performance Ad · 9:16', ratio: '9/16', wistia: 'https://arafat5nexcutmedia.wistia.com/s/8c616empkgk2huc', desc: 'Vertical performance ad.' }, { id: 'ad-btil', title: 'Paid Social Ad', cat: 'Ads / Paid Social', audience: 'Founders', quality: 'Air', client: '—', kind: 'Performance Ad · 9:16', ratio: '9/16', wistia: 'https://arafat5nexcutmedia.wistia.com/s/btilu20yehdusf5', desc: 'Vertical performance ad.' }, { id: 'ad-el68', title: 'Paid Social Ad', cat: 'Ads / Paid Social', audience: 'Founders', quality: 'Ultra', client: '—', kind: 'Performance Ad · 9:16', ratio: '9/16', wistia: 'https://arafat5nexcutmedia.wistia.com/s/el68tyvfmlckfp2', desc: 'Vertical performance ad.' }, { id: 'ad-pl4b', title: 'Paid Social Ad', cat: 'Ads / Paid Social', audience: 'Founders', quality: 'Pro', client: '—', kind: 'Performance Ad · 9:16', ratio: '9/16', wistia: 'https://arafat5nexcutmedia.wistia.com/s/pl4bea34dxthhgq', desc: 'Vertical performance ad.' }, { id: 'ad-0uwv', title: 'Paid Social Ad', cat: 'Ads / Paid Social', audience: 'Founders', quality: 'Air', client: '—', kind: 'Performance Ad · 9:16', ratio: '9/16', wistia: 'https://arafat5nexcutmedia.wistia.com/s/0uwvh2ppzly1950', desc: 'Vertical performance ad.' }, ]; const formats = ['All', 'Reels & Shorts', 'VSL & Talking Head', 'Ads / Paid Social']; // Column count per format. "All" uses bento-grid-6 (true CSS-grid masonry, // no gaps); other formats keep the flex-bento or column masonry that already // looked clean for their tighter set of aspect ratios. const formatCols = { 'All': 'bento-grid-6', 'Reels & Shorts': 'masonry-5', 'VSL & Talking Head': 'bento-5', 'Ads / Paid Social': 'bento-5', }; // Curated subsection order for the Reels & Shorts view. Ordered to lead // with strongest catalogs (Adam Ultra, Keaton/Mica Ultra, Sarizza Ultra), // then Pro/Air work, then ambient + local. Empty audiences ("Coaches", // "Business", "Hair Salons & Beauty", "Misc") were removed when the // placeholder slots were retired. const audiences = ['All', 'Founders', 'Fitness Coach', 'Premium Brands', 'Personal Brand', 'Local Services', 'Professionals', 'Storytelling']; const qualities = ['All', 'Lite', 'Air', 'Pro', 'Ultra']; const [format, setFormat] = useState('All'); const [audience, setAudience] = useState('All'); const [quality, setQuality] = useState('All'); // Assign a stable roll number to every project based on its position in the // source array (1-indexed). This is the canonical identifier the user uses // to say "keep #12, drop #34" — it must NOT change with filters. const rollById = useMemo(() => { const m = new Map(); projects.forEach((p, i) => m.set(p.id, i + 1)); return m; }, []); const filtered = useMemo(() => { const list = projects .map(p => ({ ...p, roll: rollById.get(p.id) })) .filter(p => (format === 'All' || p.cat === format) && (audience === 'All' || p.audience === audience) && (quality === 'All' || p.quality === quality) ); // For "All" we want a true bento mix — interleave items by format and by // aspect ratio so portraits (9:16), landscapes (16:9) and squares (1:1) // are sprinkled throughout instead of stacking by source-order. if (format !== 'All') return list; // Bucket by format, then round-robin pull. Within each bucket we also // alternate the aspect ratios we have available so a wide 16:9 doesn't // immediately follow another wide 16:9. const buckets = new Map(); for (const p of list) { if (!buckets.has(p.cat)) buckets.set(p.cat, []); buckets.get(p.cat).push(p); } // Sub-shuffle each bucket so multiple wides spread out within the bucket. for (const arr of buckets.values()) { // Deterministic interleave by ratio inside each bucket. const byRatio = new Map(); for (const p of arr) { const k = p.ratio; if (!byRatio.has(k)) byRatio.set(k, []); byRatio.get(k).push(p); } const ratioQueues = [...byRatio.values()]; arr.length = 0; while (ratioQueues.some(q => q.length)) { for (const q of ratioQueues) if (q.length) arr.push(q.shift()); } } // Round-robin across formats. Reels are the biggest bucket so they // naturally fill the gaps; the other formats interject for rhythm. const queues = [...buckets.values()]; const out = []; while (queues.some(q => q.length)) { for (const q of queues) if (q.length) out.push(q.shift()); } return out; }, [format, audience, quality, rollById]); useEffect(() => { if (document.getElementById('wistia-script')) return; const s = document.createElement('script'); s.id = 'wistia-script'; s.src = 'https://fast.wistia.com/assets/external/E-v1.js'; s.async = true; document.body.appendChild(s); }, []); // Reels & Shorts groups by audience with small subheadings; everything else is flat. const groups = useMemo(() => { if (format === 'Reels & Shorts') { const order = audiences.slice(1); return order .map(a => ({ key: a, audience: a, items: filtered.filter(p => p.audience === a) })) .filter(g => g.items.length); } return [{ key: 'all', items: filtered }]; }, [format, filtered]); return (
{/* Top bar */}
{/* Hero */}

Some Of Our
Featured Projects

A working archive of recent cuts — filter by format, industry and tier, or browse the full mix.

{/* Filter bar */}
o === 'All' ? projects.length : projects.filter(p => p.cat === o).length} />
Showing {filtered.length} / {projects.length}
{(format !== 'All' || audience !== 'All' || quality !== 'All') && ( )}
{/* Grid */}
{groups.length === 0 || filtered.length === 0 ? (
No projects match this combination. Try clearing a filter.
) : ( groups.map((g, gi) => { // Split by client when an audience has multiple distinct named clients (e.g. Fitness Coach → Keaton row, Mica row). const clientOrder = (() => { if (format !== 'Reels & Shorts' || !g.audience) return null; const seen = []; for (const p of g.items) { if (p.client && p.client !== '—' && !seen.includes(p.client)) seen.push(p.client); } return seen.length > 1 ? seen : null; })(); return (
{format === 'Reels & Shorts' && g.audience && ( )} {clientOrder ? ( <> {clientOrder.map((client, ci) => { const named = g.items.filter(p => p.client === client); if (!named.length) return null; return (
{named.map((p) => ( ))}
); })} {(() => { const unnamed = g.items.filter(p => !p.client || p.client === '—'); if (!unnamed.length) return null; return (
{unnamed.map((p) => ( ))}
); })()} ) : format === 'Reels & Shorts' ? (
{g.items.map((p) => ( ))}
) : ( (() => { const cls = formatCols[format] || 'masonry-4'; const container = cls.startsWith('bento-grid') ? 'bento-grid' : cls.startsWith('bento') ? 'bento' : 'masonry'; return ( {g.items.map((p) => ( ))} ); })() )}
); }) )} {/* CTA strip */}

Like what you see?
Let's build your content system.

Book a 30-min call
); } function FilterRow({ label, options, active, onChange, counts, kind, subtle }) { const tierColors = { 'Lite': { dot: '#8fa7c4', bg: 'rgba(143,167,196,0.10)', border: 'rgba(143,167,196,0.35)' }, 'Air': { dot: '#6ea7ff', bg: 'rgba(110,167,255,0.12)', border: 'rgba(110,167,255,0.40)' }, 'Pro': { dot: '#a78bff', bg: 'rgba(167,139,255,0.14)', border: 'rgba(167,139,255,0.45)' }, 'Ultra': { dot: '#ffc46e', bg: 'rgba(255,196,110,0.14)', border: 'rgba(255,196,110,0.45)' }, }; return (
{label}
{options.map((o) => { const isActive = o === active; const count = counts ? counts(o) : null; const tier = kind === 'quality' && o !== 'All' ? tierColors[o] : null; if (subtle) { return ( ); } return ( ); })}
); } function FeaturedStrip({ picks }) { const [big, p2, p3] = picks; return (
Editor’s Picks
); } function FeaturedTile({ project, large }) { const [hover, setHover] = useState(false); const [playing, setPlaying] = useState(false); const canPlay = !project.placeholder && project.wistia; const tierColors = { 'Lite': { dot: '#8fa7c4' }, 'Air': { dot: '#6ea7ff' }, 'Pro': { dot: '#a78bff' }, 'Ultra': { dot: '#ffc46e' }, }; const tier = tierColors[project.quality]; return (
canPlay && !playing && setPlaying(true)} onMouseEnter={() => setHover(true)} onMouseLeave={() => setHover(false)} style={{ position: 'relative', aspectRatio: large ? '16/10' : '9/12', borderRadius: 20, overflow: 'hidden', border: '1px solid var(--line)', background: '#0a0e18', cursor: canPlay && !playing ? 'pointer' : 'default', transition: 'transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease', transform: hover && !playing ? 'translateY(-3px)' : 'none', boxShadow: hover ? '0 24px 60px -20px rgba(74,142,255,0.45)' : '0 0 0 transparent', borderColor: hover ? 'rgba(110,167,255,0.4)' : 'var(--line)', }} > {playing ? (
 
) : project.gif ? ( {project.title} ) : ( )} {!playing && (
)} {!playing && ( <>
Featured
{!project.placeholder && (
)}
{tier && } {project.audience} · {project.quality}
{project.title}
)}
); } function StatsBar({ projects }) { const real = projects.filter(p => !p.placeholder); const ultra = projects.filter(p => p.quality === 'Ultra').length; const audiences = new Set(real.map(p => p.audience)); const formats = new Set(real.map(p => p.cat)); const items = [ { v: real.length, l: 'cuts shipped' }, { v: audiences.size, l: 'industries' }, { v: formats.size, l: 'formats' }, { v: ultra, l: 'ultra-tier picks' }, ]; return (
{items.map((it, i) => (
{it.v}
{it.l}
))}
); } function ClientRowLabel({ name, count }) { return (
{name} {count}
); } function SubsectionHeading({ audience, count }) { const meta = { 'Founders': { caption: 'Hook-first reels built for startup founders building in public.' }, 'Business': { caption: 'Business-niche reels for operators, agencies and B2B brands.' }, 'Coaches': { caption: 'High-retention shorts for coaches and creators selling 1:1 or cohorts.' }, 'Personal Brand': { caption: 'Identity-first reels for creators and operators building a face-of-the-brand presence.' }, 'Fitness Coach': { caption: 'Energetic motion-driven reels for fitness coaches and courses.' }, 'Premium Brands': { caption: 'Editorial, fashion-grade cuts for premium and luxury brands.' }, 'Professionals': { caption: 'Sharp talking-head reels for lawyers, advisors, consultants and other licensed pros.' }, 'Storytelling': { caption: 'Narrative-led style cuts with cinematic pacing and visual rhythm.' }, 'Local Services': { caption: 'Cuts for roofers, plumbers, HVAC and other local service businesses.' }, 'Hair Salons & Beauty': { caption: 'Cinematic before/after moments for salons and beauty brands.' }, 'Misc': { caption: 'A grab-bag of one-off reels and experimental cuts.' }, }; const cap = (meta[audience] || {}).caption || ''; return (

{audience}

{cap && (

{cap}

)}
{count} {count === 1 ? 'project' : 'projects'}
); } function SectionHeading({ audience, count }) { const meta = { 'Founders': { caption: 'For startup founders', desc: 'Talking-head reels, long-form essays and personal-brand cuts for solo founders and operators.' }, 'Business': { caption: 'For business operators', desc: 'Reels and cuts for business-niche creators, agencies and B2B brands.' }, 'Coaches': { caption: 'For coaches & creators', desc: 'High-retention coaching reels and long-form course content.' }, 'Personal Brand': { caption: 'For personal brands', desc: 'Identity-first reels and signature cuts for creators and operators building a face-of-the-brand presence.' }, 'Fitness Coach': { caption: 'For fitness coaches & courses', desc: 'Energetic motion-driven reels, course explainers and conversion-focused ad creative.' }, 'Premium Brands': { caption: 'For premium & luxury brands', desc: 'Editorial, fashion-grade cuts with cinematic pacing for premium and luxury brand creators.' }, 'Professionals': { caption: 'For licensed professionals', desc: 'Authoritative reels for lawyers, advisors, consultants and other industry professionals.' }, 'Storytelling': { caption: 'For story-driven creators', desc: 'Narrative-led reels and style cuts with cinematic pacing, voiceover and visual rhythm.' }, 'Local Services': { caption: 'For roofers, plumbers & trades', desc: 'Conversion-focused reels for roofers, plumbers, HVAC, electricians and other local service businesses.' }, 'Hair Salons & Beauty': { caption: 'For salons & beauty brands', desc: 'Cinematic before/after reels and lifestyle moments for beauty businesses.' }, 'Misc': { caption: 'For everything else', desc: 'A grab-bag of one-off reels and experimental cuts.' }, }[audience] || { caption: audience, desc: '' }; return (
{meta.caption}

{audience}

{meta.desc && (

{meta.desc}

)}
{count} projects
); } // Bento masonry container. For `isGrid=true` (CSS-grid mode), it measures each // child's rendered height and writes a grid-row span so the grid behaves like // a true masonry — no gaps below short tiles. For non-grid modes it just // renders a plain div passthrough. function BentoGrid({ className, isGrid, children }) { const ref = useRef(null); useEffect(() => { if (!isGrid) return; const grid = ref.current; if (!grid) return; const compute = () => { const styles = getComputedStyle(grid); const rowH = parseFloat(styles.gridAutoRows) || 1; // We use row-gap: 0 and column-gap: var(--tile-gap), then add the // desired tile gap into each tile's row-span so the vertical gap // below the tile exactly matches the horizontal column-gap. const targetGap = parseFloat(styles.columnGap) || 10; const items = grid.querySelectorAll(':scope > .masonry-item'); items.forEach((it, idx) => { // Temporarily clear so we measure the natural (aspect-ratio-driven) height it.style.gridRowEnd = ''; const h = it.getBoundingClientRect().height; if (!h) return; // Span = ceil(tile height / rowH) + the gap tracks below it (omit // the gap on the absolute last tile so the grid doesn't trail blank // space — but in practice the next row's tiles cover this). const span = Math.max(1, Math.ceil(h / rowH) + Math.round(targetGap / rowH)); it.style.gridRowEnd = `span ${span}`; }); }; // Compute now, after fonts/layout settle, and again on resize. compute(); const raf = requestAnimationFrame(compute); const ro = new ResizeObserver(compute); ro.observe(grid); grid.querySelectorAll(':scope > .masonry-item').forEach((it) => ro.observe(it)); window.addEventListener('resize', compute); // Re-measure once images/iframes load — Wistia thumbs swap in async. const imgs = grid.querySelectorAll('img'); imgs.forEach((img) => { if (!img.complete) img.addEventListener('load', compute, { once: true }); }); return () => { cancelAnimationFrame(raf); ro.disconnect(); window.removeEventListener('resize', compute); }; }, [isGrid, children]); return
{children}
; } function PortfolioTile({ project }) { const [hover, setHover] = useState(false); const [playing, setPlaying] = useState(false); const ref = useReveal(); const ratioLabel = project.ratio.replace('/', ':'); // Resolve to the real media ID. For plain 10-char IDs this is a no-op; for // share URLs (`https://*.wistia.com/s/`) we wait on the oembed lookup // — `info?.mediaId` becomes available after fetchWistiaInfo resolves. const info = useWistiaInfo(project.wistia); const wistiaId = (info && info.mediaId) || (isWistiaShareUrl(project.wistia) ? null : project.wistia); const canPlay = !project.placeholder && !!wistiaId; const tierColors = { 'Lite': { dot: '#8fa7c4', bg: 'rgba(143,167,196,0.12)', border: 'rgba(143,167,196,0.35)' }, 'Air': { dot: '#6ea7ff', bg: 'rgba(110,167,255,0.16)', border: 'rgba(110,167,255,0.40)' }, 'Pro': { dot: '#a78bff', bg: 'rgba(167,139,255,0.18)', border: 'rgba(167,139,255,0.45)' }, 'Ultra': { dot: '#ffc46e', bg: 'rgba(255,196,110,0.18)', border: 'rgba(255,196,110,0.50)' }, }; const tier = tierColors[project.quality]; const handleClick = () => { if (canPlay && !playing) setPlaying(true); }; return (
setHover(true)} onMouseLeave={() => setHover(false)} style={{ position: 'relative', aspectRatio: project.ratio, borderRadius: 18, overflow: 'hidden', border: '1px solid var(--line)', background: '#0a0e18', cursor: canPlay && !playing ? 'pointer' : 'default', transition: 'transform 0.3s ease, border-color 0.3s ease', transform: hover && !playing ? 'translateY(-3px)' : 'none', borderColor: hover ? 'var(--line-2)' : 'var(--line)', }} > {playing ? (
 
) : project.placeholder ? ( ) : project.gif ? ( {project.title} ) : ( )} {!project.placeholder && !playing && (
)} {/* Roll number — internal identifier, kept subtle so visitors barely notice */} {!playing && project.roll != null && (
#{String(project.roll).padStart(2, '0')}
)} {/* Top-right stack: ratio + tier */} {!playing && (
{ratioLabel}
{project.quality}
)} {/* Play button */} {!project.placeholder && !playing && (
)} {/* Title block removed — tiles are pure video previews; metadata lives in filters + tier pill */}
); } function Placeholder({ ratioLabel, kind }) { return (
{ratioLabel} placeholder
Drop {kind.split('·')[0].trim().toLowerCase()} here
); } Object.assign(window, { PortfolioPage, PortfolioTile, Placeholder, FilterRow, SectionHeading, SubsectionHeading, ClientRowLabel, FeaturedStrip, FeaturedTile, StatsBar, BentoGrid });