function Process() { const steps = [ { n: '01', tag: 'Ideation', title: 'Idea analysis', body: 'We research your niche, audience and goals — analyzing trends, competitors and what\'s working in your industry — to build a full 30-day content calendar.', meta: ['Niche audit', 'Competitor map', '30-day calendar'], visual: 'tags', duration: 'Day 1–2', }, { n: '02', tag: 'Scripting', title: 'Writing content', body: 'We write engaging, hook-driven scripts for every video — optimized for retention and conversions. Every script follows hook → value → CTA.', meta: ['Hook · Value · CTA', 'Retention-optimized', '30 scripts'], visual: 'script', duration: 'Day 2–4', }, { n: '03', tag: 'Shooting', title: 'Video shooting (your part)', body: 'The only step you handle. Spend just 2 hours a month shooting all 30 videos using our scripts and shot guidelines, then send us the raw footage. That\'s it.', meta: ['2 hours / month', '30 videos batched', 'Shot-by-shot guide'], visual: 'shoot', duration: 'Day 4 · 2 hrs', client: true, }, { n: '04', tag: 'Editing', title: 'Video production', body: 'Our 40+ editors handle every cut, transition, effect, caption, color grade and sound design — polished to a professional standard.', meta: ['40+ editors', 'Captions · Color · SFX', 'Motion graphics'], visual: 'editor', duration: 'Day 4–6', }, { n: '05', tag: 'Thumbnail', title: 'Thumbnail design', body: 'Scroll-stopping, click-worthy thumbnails for every video — custom-made to match your brand and optimized for CTR.', meta: ['3 variants', 'CTR-optimized', 'Brand-safe'], visual: 'thumb', duration: 'Day 6', }, { n: '06', tag: 'Post', title: 'Captions, description & SEO', body: 'Captions, descriptions, hashtags and SEO metadata for every video. You receive the final cut + thumbnail + ready-to-post copy. Just hit publish.', meta: ['SEO metadata', 'Hashtag set', 'Copy & post'], visual: 'post', duration: 'Day 7', }, ]; const [active, setActive] = useState(0); const [paused, setPaused] = useState(false); const [autoPct, setAutoPct] = useState(0); const AUTOPLAY_MS = 4200; useEffect(() => { if (paused) return; setAutoPct(0); const start = performance.now(); let raf; const tick = (now) => { const p = Math.min(1, (now - start) / AUTOPLAY_MS); setAutoPct(p * 100); if (p < 1) raf = requestAnimationFrame(tick); else setActive(a => (a + 1) % steps.length); }; raf = requestAnimationFrame(tick); return () => cancelAnimationFrame(raf); }, [active, paused, steps.length]); const onUserPick = (i) => { setActive(i); setPaused(true); setAutoPct(0); }; function Visual({ kind }) { if (kind === 'tags') { return (
{['#growth', '#hook', '#authority', '#virality', '#shortform', '#audience', '#niche'].map(t => (
{t}
))}
); } if (kind === 'script') { return (
{['Hook', 'Value', 'CTA'].map(s => (
{s}
))}
{'>'} If you've ever struggled to post consistently...
{'>'} here's what nobody tells you about content...
); } if (kind === 'shoot') { return (
{/* Footage in the viewfinder */} Creator filming a content shoot {/* Subtle vignette so the viewfinder UI stays legible */}
{/* Viewfinder corners */} {[ { t: 10, l: 10, b: 'auto', r: 'auto', rot: 0 }, { t: 10, r: 10, l: 'auto', b: 'auto', rot: 90 }, { b: 10, l: 10, r: 'auto', t: 'auto', rot: 270 }, { b: 10, r: 10, l: 'auto', t: 'auto', rot: 180 }, ].map((c, i) => (
))} {/* REC badge */}
REC
{/* Timecode */}
00:02:17 / 02:00:00
30 VIDEOS·2 HRS·1 DAY
); } if (kind === 'editor') { return (
Editing timeline in a video app
{[40, 25, 60, 35, 50].map((w, i) => (
))}
); } if (kind === 'thumb') { return (
Action creates results thumbnail
); } if (kind === 'post') { return (
{['#growthmindset', '#contentstrategy', '#shortformvideo', '#creator'].map(t => (
{t}
))}
); } return null; } return (
{/* Background ambient orb */}

Our Process To Create
30 Days Of Content In 2 Hours

A 6-step engine. You shoot once a month — we handle the rest.

{/* Stepper rail */}
{steps.map((s, i) => { const isActive = i === active; const isDone = i < active; return ( ); })}
{/* Detail card for the active step */}
{steps[active].tag} {steps[active].client && · Your part} {steps[active].duration}
{steps[active].n}

{steps[active].title}

{steps[active].body}

{steps[active].meta.map(m => ( {m} ))}
{steps[active].n} / {String(steps.length).padStart(2, '0')}
Step {steps[active].n} — {steps[active].tag}
); } Object.assign(window, { Process });