PageSourceSearch

https://hookology.ai/assets/creative-BtJE1Tx4.js

js hookology.ai collected 2026-10-05 14:02:14 UTC 17,590 bytes, 1 lines download raw bytes

1import{j as e}from"./radix-CrTWQvwI.js";import{B as s,L as t}from"./index-7JgiN7UR.js";import{c4 as d,aj as c,aO as m,aP as h,bB as p,aY as g,c5 as x,bw as u,h as f,aH as o,s as i,c6 as y,b1 as b}from"./ui-vendor-CuNlv4X9.js";import{M as w}from"./marketing-shell-CK3rNW_L.js";import{M as v}from"./marketing-quote-DSCbLesM.js";import{S as k}from"./statement-Dt_aNTmW.js";import{B as n}from"./browser-frame-Cqr5QhZ7.js";import{F as l}from"./feature-animations-pShHqa86.js";import{M as j,T as N,G as M,P as C,S as T,A as F}from"./brand-logos-CbgZ_pOR.js";import"./supabase-CKMv-ZKk.js";import"./charts-Dvyflrfd.js";import"./site-nav-BlQ5Ejyi.js";import"./hookology-logo-DCM4ISub.js";import"./site-footer-uQfphqnY.js";import"./ask-hookology-cuoihocW.js";import"./index-BWr3NrrO.js";import"./index-DbdvNyIx.js";import"./prompt-jRa_aZRo.js";const A=[{name:"Meta Ads",Mark:j},{name:"TikTok Ads",Mark:N},{name:"Google Ads",Mark:M},{name:"Pinterest Ads",Mark:C},{name:"Shopify",Mark:T},{name:"GA4",Mark:F}],S=[{k:"Every live ad",v:"Torn down",d:"Hook, opening frame, format, angle and offer scored, not just spend and ROAS."},{k:"Fatigue",v:"Called early",d:"Flagged while the creative still earns, so the refresh is briefed, not rushed."},{k:"Every asset",v:"Cut, keep, clone",d:"One verdict per creative each morning, with the reasoning written out."},{k:"Margin",v:"In the maths",d:"Cost of goods, shipping and fees included, so a winner is a real winner."}],q=[{icon:d,t:"The hook is still a coin flip",d:"Three seconds decides whether the ad exists at all, and the evidence behind that decision is usually a gut feel and someone else's swipe file. You find out you were wrong once the spend has already gone."},{icon:c,t:"Fatigue arrives as an invoice",d:"Frequency creeps, CTR softens, CPA drifts. By the time the dashboard makes it obvious, you have spent a fortnight's budget propping up a creative that stopped working ten days ago."},{icon:m,t:"Every cycle starts from zero",d:"New batch, new hooks, same arguments. Nothing compounds, because nobody wrote down which pattern won, on which audience, at which point in the season, or why it stopped."},{icon:h,t:"Reporting that describes, never decides",d:"A wall of thumbnails sorted by spend tells you what happened. It never tells you which one to kill on Monday, which one to scale, and which one deserves three more variants by Friday."}],B=[{icon:p,kicker:"Teardowns",t:"Every creative pulled apart, automatically",d:"Hookology reads the hook line, the opening frame, the format, the angle and the offer on every live ad, then scores each one against your own account history instead of a category benchmark that has never met your customers.",points:["Hook and opening-frame scoring","Format, angle and offer tagging","Benchmarked against your own winners"],to:"/features/$slug",slug:"creative-intelligence",cta:"Creative Intelligence"},{icon:g,kicker:"Patterns",t:"The frameworks your account keeps proving",d:"One searchable library of every asset you have ever run, grouped by what the pattern actually did. Ask what worked for a category, an audience or a season and you get the evidence and the assets, not a vibe and a hunt through Drive.",points:["
1Searchable library of every past asset","Winning patterns surfaced by AI and by your team","Reusable frameworks that feed the next brief"],to:"/features/$slug",slug:"creative-library",cta:"Creative Library"},{icon:x,kicker:"Fatigue",t:"Called before the algorithm calls it",d:"Frequency, decay curves and delivery shifts are modelled per creative, so the refresh date lands in the calendar while the ad is still profitable rather than turning up in next month's post-mortem.",points:["Fatigue forecast per asset, not per campaign","Refresh dates set before performance dips","Delivery swings traced back to the cause"],to:"/features/$slug",slug:"fatigue-forecast",cta:"Fatigue Forecast"},{icon:u,kicker:"Proof",t:"Tracked to profit, not to applause",d:"Every creative is reconciled against real margin, with cost of goods, shipping and fees in the maths, so the ad topping the ROAS leaderboard cannot quietly lose you money on every order it brings in.",points:["Margin-aware creative reporting","A cut, keep or clone verdict on each asset","The reasoning written out in plain English"],to:"/features/$slug",slug:"performance",cta:"Performance & Budgets"}],E=[{n:"01",t:"We connect the accounts",d:"Meta, TikTok, Google, Pinterest, Shopify and GA4, with the historical pull handled by us. No spreadsheet homework, no tracking rebuild before you see value."},{n:"02",t:"We score your back catalogue",d:"Every asset you have already run is torn down and ranked, so the platform opens on your evidence and your winners rather than an empty dashboard waiting for data."},{n:"03",t:"You get a verdict each morning",d:"Cut, keep or clone on every live creative, with the numbers and the reasoning attached, and a named account manager working the list alongside your team."}],P=[{q:"Four people are arguing about a thumbnail and nobody has brought any data into the room.",who:"Performance lead, DTC apparel"},{q:"Our best performing ad was six months old and not one of us could explain why it worked.",who:"Media buyer, home and garden"},{q:"Every refresh cycle starts from scratch. We keep paying to learn the same lesson twice.",who:"Creative strategist, agency side"}];function _(){return e.jsxs(w,{children:[e.jsxs("section",{className:"mx-auto grid max-w-7xl grid-cols-1 items-center gap-10 px-5 pb-10 pt-12 sm:px-8 sm:pt-20 lg:grid-cols-12 lg:gap-x-14",children:[e.jsxs("div",{className:"min-w-0 lg:col-span-6",children:[e.jsxs("span",{className:"inline-flex items-center gap-2 rounded-full border border-border bg-muted/40 px-3 py-1.5 text-[12.5px] font-medium text-muted-foreground sm:text-xs",children:[e.jsx(f,{className:"h-3.5 w-3.5 text-primary"})," Creative intelligence for people who buy media"]}),e.jsxs("h1",{className:"mt-6 font-display text-[38px] font-semibold leading-[1.05] tracking-[-0.03em] sm:text-6xl",children:["Stop losing ad spend in the ",e.jsx("span",{className:"marker-hl",children:"first 3 seconds."})]}),e.jsx("p",{className:"mt-6 max-w-xl text-base leading-relaxed text-muted-foreground sm:text-lg",children:"Hookology tears down every hook you run, forecasts fatigue while the ad is still earning, and hands you one verdict per creative: cut, keep or clone. Built by media buyers who got tired of settling creative arguments with opinions and paying for the answer in wasted spend."}),e.jsxs("div",{className:"mt-8 grid grid-cols-1 gap-3 sm:flex sm:flex-wrap",children:[e.jsx(s,{asChild:!0,size:"lg",className:"w-full bg-primary text-primary-foreground hover:bg-primary/90 sm:w-auto",children:e.jsxs(t,{to:"/enquiry",children:["Start capturing attention ",e.jsx(o,{className:"ml-1 h-4 w-4"})]})}),e.jsx(s,{asChild:!0,size:"lg",variant:"outline",className:"w-full border-border bg-muted/40 text-foreground hover:bg-muted hover:text-foreground sm:w-auto",children:e.jsx(t,{to:"/features",children:"See the platform"})})]}),e.jsx("p",{className:"mt-4 text-sm text-muted-foreground",children:"30 minutes, your accounts on screen, no deck. You leave with a straight read on your creative either way."})]}),e.jsx("div",{className:"min-w-0 lg:col-span-6",children:e.jsx(n,{label:"hookology.ai / creative-intelligence",eager:!0,children:e.jsx(l,{slug:"creative-intelligence"})})})]}),e.jsxs("section",{className:"mx-auto max-w-7xl px-5 pb-6 sm:px-8",children:[e.jsx("div",{className:"grid grid-cols-1 gap-px overflow-hidden rounded-lg border border-border bg-border/70 sm:grid-cols-2 lg:grid-cols-4",children:S.map(a=>e.jsxs("div",{className:"min-w-0 bg-background/70 px-5 py-5",children:[e.jsx("p",{className:"text-[12.5px] font-semibold uppercase tracking-[0.2em] text-primary sm:text-[11px]",children:a.k}),e.jsx("p",{className:"mt-2 font-display text-xl font-semibold tracking-tight sm:text-2xl",children:a.v}),e.jsx("p",{className:"mt-1.5 text-[13px] leading-snug text-muted-foreground",children:a.d})]},a.k))}),e.jsxs("div",{className:"mt-6 flex flex-wrap items-center justify-center gap-x-7 gap-y-4",children:[e.jsx("span",{className:"text-[12.5px] font-medium uppercase tracking-[0.18em] text-muted-foreground sm:text-[11px]",children:"Reads your creative from"}),A.map(({name:a,Mark:r})=>e.jsxs("span",{className:"inline-flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(r,{className:"h-4 w-4"}),a]},a))]})]}),e.jsx(k,{eyebrow:"The problem we live",lead:"You are not short of creative.",highlight:"You are short of a reason to believe in it.",support:"Budget burns in the scroll, fatigue arrives without warning, and every refresh cycle starts from a blank page. We ran those accounts before we built this, so the platform answers the questions we could never answer fast enough."}),e.jsx("section",{className:"mx-auto max-w-7xl px-5 pb-6 sm:px-8",children:e.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:q.map(a=>e.jsxs("div",{className:"rounded-lg border border-border bg-card/60 p-6 backdrop-blur sm:p-7",children:[e.jsx("span",{className:"grid h-10 w-10 place-items-center rounded-lg bg-gradient-to-br from-primary/25 to-primary/5 ring-1 ring-primary/20",children:e.jsx(a.icon,{className:"h-4.5 w-4.5 text-primary"})}),e.jsx("h2",{className:"mt-4 font-display text-lg font-semibold tracking-tight",children:a.t}),e.jsx("p",{className:"mt-2 text-sm leading-relaxed text-muted-foreground",children:a.d})]},a.t))})}),e.jsxs("section",{className:"mx-auto max-w-7xl px-5 py-10 sm:px-8 sm:py-16",children:[e.jsxs("div",{className:"max-w-3xl",children:[e.jsx("p",{className:"text-[12.5px] font-semibold uppercase tracking-[0.22em] text-primary sm:text-[11px]",children:"The Hookology solution"}),e.jsx("h2",{className:"mt-3 font-display text-[30px] font-semibold leading-[1.08] tracking-[-0.025em] sm:text-4xl",children:"Creative decisions with the working shown."}),e.jsx("p",{className:"mt-4 text-base leading-relaxed text-muted-foreground",children:"Four jobs, one workspace, tuned to your account rather than a template. Teardown, pattern, fatigue and profit, each one linked through to the full feature page when you want the detail behind it."})]}),e.jsx("div",{className:"mt-8 grid grid-cols-1 gap-4 md:grid-cols-2",children:B.map(a=>e.jsxs("div",{className:"flex flex-col rounded-lg border border-border bg-muted/30 p-6 transition-colors hover:border-primary/35 sm:p-7 md:row-span-4 md:grid md:grid-rows-subgrid md:gap-0",children:[e.jsxs("div",{children:[e.jsx("span",{className:"grid h-10 w-10 place-items-center rounded-lg bg-gradient-to-br from-primary/20 to-primary/5 ring-1 ring-primary/20",children:e.jsx(a.icon,{className:"h-4 w-4 text-primary"})}),e.jsx("p",{className:"mt-4 text-[12.5px] font-semibold uppercase tracking-[0.2em] text-primary sm:text-[11px]",children:a.kicker}),e.jsx("h3",{className:"mt-2 font-display text-xl font-semibold tracking-tight",children:a.t})]}),e.jsx("p",{className:"mt-3 text-sm leading-relaxed text-muted-foreground",children:a.d}),e.jsx("ul",{className:"mt-5 space-y-2.5",children:a.points.map(r=>e.jsxs("li",{className:"flex items-start gap-2.5 text-sm text-foreground
1/90",children:[e.jsx("span",{className:"mt-0.5 grid h-4 w-4 shrink-0 place-items-center rounded-full border border-primary/45 bg-primary/15",children:e.jsx(i,{className:"h-2.5 w-2.5 text-primary",strokeWidth:3})}),r]},r))}),e.jsxs(t,{to:a.to,params:{slug:a.slug},className:"group mt-6 inline-flex items-center gap-1.5 self-start text-sm font-medium text-primary",children:[a.cta,e.jsx(o,{className:"h-3.5 w-3.5 transition-transform group-hover:translate-x-0.5"})]})]},a.t))})]}),e.jsx("section",{className:"mx-auto max-w-7xl px-5 pb-10 sm:px-8",children:e.jsxs("div",{className:"grid grid-cols-1 gap-8 lg:grid-cols-12 lg:items-center lg:gap-x-14",children:[e.jsx("div",{className:"min-w-0 lg:col-span-6",children:e.jsx(n,{label:"hookology.ai / fatigue-forecast",children:e.jsx(l,{slug:"fatigue-forecast"})})}),e.jsxs("div",{className:"min-w-0 lg:col-span-6",children:[e.jsx("p",{className:"text-[12.5px] font-semibold uppercase tracking-[0.22em] text-primary sm:text-[11px]",children:"Live in the workspace"}),e.jsx("h2",{className:"mt-3 font-display text-[28px] font-semibold leading-[1.1] tracking-[-0.02em] sm:text-4xl",children:"The refresh date lands before the drop."}),e.jsx("p",{className:"mt-4 text-base leading-relaxed text-muted-foreground",children:"Hookology watches frequency, delivery and decay on every asset and books the refresh while the creative is still profitable. That gives you a week to brief the replacement properly, on the pattern the account has already proven, instead of shipping a panic edit the day performance falls over."}),e.jsx("ul",{className:"mt-6 space-y-3",children:["Fatigue flagged per 
1creative, not per campaign","Every verdict carries the numbers behind it","A named account manager works the list with you"].map(a=>e.jsxs("li",{className:"flex items-start gap-2.5 text-sm text-foreground/90",children:[e.jsx("span",{className:"mt-0.5 grid h-4 w-4 shrink-0 place-items-center rounded-full border border-primary/45 bg-primary/15",children:e.jsx(i,{className:"h-2.5 w-2.5 text-primary",strokeWidth:3})}),a]},a))})]})]})}),e.jsxs("section",{className:"mx-auto max-w-7xl px-5 py-6 sm:px-8 sm:py-10",children:[e.jsx("h2",{className:"font-display text-2xl font-semibold tracking-tight sm:text-3xl",children:"Three steps, no onboarding marathon"}),e.jsx("p",{className:"mt-2 max-w-2xl text-sm leading-relaxed text-muted-foreground",children:"Most accounts are connected, backfilled and scored inside a week. Nothing here needs a data team."}),e.jsx("ol",{className:"mt-6 grid grid-cols-1 gap-4 md:grid-cols-3",children:E.map(a=>e.jsxs("li",{className:"rounded-lg border border-border bg-card/50 p-6 backdrop-blur",children:[e.jsxs("p",{className:"font-display text-[13px] font-semibold uppercase tracking-[0.2em] text-primary sm:text-xs",children:[a.n," - ",a.t]}),e.jsx("p",{className:"mt-3 text-sm leading-relaxed text-muted-foreground",children:a.d})]},a.n))})]}),e.jsxs("section",{className:"mx-auto max-w-7xl px-5 py-6 sm:px-8 sm:py-10",children:[e.jsxs("div",{className:"flex flex-wrap items-end justify-between gap-4 border-b border-border pb-5",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"font-display text-2xl font-semibold tracking-tight sm:text-3xl",children:"The conversation we keep having"}),e.jsx("p",{className:"mt-1.5 text-sm text-muted-foreground",children:"Paraphrased from discovery calls with growth teams like yours. If one of these is your Monday morning, we should talk."})]}),e.jsxs("span",{className:"inline-flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(y,{className:"h-3.5 w-3.5 text-primary"})," 30 minute call"]})]}),e.jsx("div",{className:"mt-6 grid grid-cols-1 gap-4 md:grid-cols-3",children:P.map(a=>e.jsxs("figure",{className:"flex h-full flex-col rounded-lg border border-border bg-muted/30 p-6",children:[e.jsx(b,{className:"h-4 w-4 text-primary"}),e.jsxs("blockquote",{className:"mt-4 flex-1 font-display text-base leading-relaxed tracking-tight text-foreground",children:['"',a.q,'"']}),e.jsx("figcaption",{className:"mt-4 text-sm text-muted-foreground",children:a.who})]},a.who))})]}),e.jsx("section",{className:"mx-auto max-w-3xl px-5 py-8 sm:px-8",children:e.jsx(v,{eyebrow:"Why we built it",text:"We were spending five figures a week on creative and settling arguments with opinions. That is the bit we fixed first.",attribution:"Adam Coley",role:"Founder of Hookology"})}),e.jsx("section",{className:"mx-auto max-w-7xl px-5 py-10 sm:px-8 sm:py-16",children:e.jsx("div",{className:"relative overflow-hidden rounded-lg border border-border bg-gradient-to-br from-primary/15 via-primary-glow/10 to-background p-10 sm:p-14",children:e.jsxs("div",{className:"relative grid grid-cols-1 gap-8 md:grid-cols-12 md:items-center",children:[e.jsxs("div",{className:"md:col-span-7",children:[e.jsx("h2",{className:"font-display text-3xl font-semibold leading-[1.1] tracking-[-0.02em] sm:text-4xl",children:"Ready to fix your thumb-stop rate?"}),e.jsx("p",{className:"mt-4 max-w-xl text-foreground/75",children:"Bring one account and one creative you cannot make a decision on. We will score it live, show you exactly what the platform sees, and tell you honestly if we are not the right fit. No deck, no procurement gauntlet, no twelve week onboarding."}),e.jsxs("div",{className:"mt-7 grid grid-cols-1 gap-3 sm:flex sm:flex-wrap",children:[e.jsx(s,{asChild:!0,size:"lg",className:"w-full bg-primary text-primary-foreground hover:bg-primary/90 sm:w-auto",children:e.jsxs(t,{to:"/enquiry",children:["Book a discovery call ",e.jsx(o,{className:"ml-1 h-4 w-4"})]})}),e.jsx(s,{asChild:!0,size:"lg",variant:"outline",className:"w-full border-border bg-muted/40 text-foreground hover:bg-muted hover:text-foreground sm:w-auto",children:e.jsx(t,{to:"/how-it-works",children:"How we work"})})]})]}),e.jsx("ul",{className:"space-y-3 md:col-span-5",children:["Connections and historical data handled by us","Scoring tuned to your account, not a template","A named account manager from day one","Cancel the call if the first ten minutes are not useful"].map(a=>e.jsxs("li",{className:"flex items-start gap-2.5 text-sm text-foreground
1/90",children:[e.jsx("span",{className:"mt-0.5 grid h-4 w-4 shrink-0 place-items-center rounded-full border border-primary/45 bg-primary/15",children:e.jsx(i,{className:"h-2.5 w-2.5 text-primary",strokeWidth:3})}),a]},a))})]})})})]})}export{_ as component};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.