LevchykUGS · build report · 2 September 2026

Trending creatives, turned into functions you can call with your own product.

Eight ads that are winning on Meta right now were pulled by a pinned query, decomposed to the shot, and rewritten as callable creative functions — a signature, named slots, timestamped invariants, a stage template. Not copies. The machine underneath the ad, stated so a different product can be run through it.

8creatives decomposed
8meta-functions extracted
137entity pages
803shots tabled
112key stills committed
282critic findings applied

What was built

shipped

A pinned query you never change

The owner's Explore URL is frozen in hookd/query.json — video format, niches 5/16/30/32, English, US + AU, 3–5 min and 5 min+, winning performance tier, running ≥ 20 days, brands with ≥ 200 active ads, top-20 percentile. Re-running the pipeline re-runs exactly that query, so two snapshots are comparable.

One translation was unavoidable and is documented rather than hidden: the UI's language=23 is a numeric id and the API only accepts ISO codes, so it is sent as en. The REST /api/v1/explore endpoint also rejects the UI's parameter names outright, so the pipeline calls the MCP search_ads tool instead.

shipped

A selection rule that stops one advertiser owning the page

GetHookd's per-brand cap still let a single advertiser fill the ranking: seven of the top ten rows were the same Koseon creative family. The rule drops unscored rows, dedupes families by (landing-page host × ad-copy hash), takes one creative per advertiser in rank order, then rank-fills the rest — and records each creative's raw rank, so nothing is quietly discarded.

shipped

An evidence layer that can't drift

Per creative: the ad record, a timed transcript reconciled from two independent ASR passes arbitrated against the burned-in captions (uncertain words marked), a numbered shot table, and 14 committed key stills. Frames are extracted locally — GetHookd's own keyframe extraction returned failed on these ads — using scene-cut detection, a 5-second ladder, and contact sheets with burned-in timestamps so an agent can read a whole video in one image.

Raw pages are immutable after the critique pass. Corrections are appended, never silently rewritten.

shipped

Eight meta-functions

Each is a signature, a persuasion mechanism stated as psychology rather than plot, timestamped invariants, a slot table with constraints, a stage template in % of runtime, proof grammar, production DNA, and anti-patterns. The bar a page must clear: swap {PRODUCT} for an unrelated product in the same audience and the page must still fully specify a video.

shipped

The product brain, and a matrix that stops eight ads becoming one

goPure's landing page is compiled into what may actually be claimed on screen, plus avatar, offer mechanism (the heavy-cream paradox → weightless cupuaçu water-magnet) and the owner's research verbatim. Then assignment.md fixes, per trend, a unique hook × avatar identity × narrator archetype triple — because eight functions called with one product collapse into eight versions of the same ad unless the inputs are made to differ on purpose.

shipped

The map

A dependency-free static port of the MediaMagicPlatform "Карта" in the clay design system: tiered DAG, absolutely positioned cards in stage columns, cubic-Bézier edges, barycenter ordering, hover-preview vs click-commit BFS highlighting, a detail drawer that pushes rather than overlays. Page markdown is fetched on demand — the graph payload went from 1.74 MB to 330 KB and stays flat as the tree grows.

levchykugs-trends.pages.dev/graph/

The eight functions

#Meta-functionSource advertiserLenScoreAssigned goPure angleState
01 Proxy-witness vindication with a witnessed product event PROXY_WITNESS_VINDICATION() · 61 slots · 20 entity pages KoseonBeautykoseonskincare.com 6:04 10024 d H2 Wardrobe — "I threw out every turtleneck and scarf"Post-divorce, back on the social market, 50–55 verified
02 Missing-step reframe with dated visceral proof MISSING_STEP_VISCERAL_PROOF() · 62 slots · 17 entity pages Holistic Health Secretsmyellora.com 3:38 10071 d H4 Amazon intrigue — cupuaçu, 440 % its own weight in waterTech-neck professional 35–42, video calls verified
03 Defected-insider cycle-trap elimination DEFECTED_INSIDER_CYCLE_ELIMINATION() · 62 slots · 15 entity pages Beauty Reviewssassysaints.com 3:03 9129 d H3 Heavy-cream horror — "your elite lifting cream made the jowl heavier"Menopause 50–58 verified
04 Payoff-first sung revenge anthem PAYOFF_FIRST_REVENGE_ANTHEM() · 29 slots · 17 entity pages Health That Fits Your Lifetryrovina.com 3:59 10030 d H5a Ozempic neck — "lost the weight, got the bill in your neck"Fast weight loss (GLP-1 / diet), 45–52 verified
05 Insider absolution reframe — "the method failed you" INSIDER_ABSOLUTION_REFRAME() · 68 slots · 17 entity pages Dr. Sam Valentineinformation.shopverticlear.com 5:10 10023 d H1 Industry exposé (absolution register) — "I told women for 20 years to take their face cream down to the neck"45–60 who "did everything right" verified
06 Elder root-cause reframe — numbered self-diagnosis → hidden cause → criteria the product alone meets ELDER_ROOT_CAUSE_REFRAME() · 41 slots · 15 entity pages Mens Health Tipsdrinkerodus.com 5:33 10021 d H5b Menopause collapse — "collagen went overnight"Perimenopause / menopause 48–58 verified
07 Notebook re-attribution — "it was never random" NOTEBOOK_REATTRIBUTION() · 36 slots · 20 entity pages Dr. Sam Valentineinformation.shopverticlear.com 3:30 10023 d H2b Self-tracking wardrobe — the scarf drawer as the logTech-neck + video-call professional 38–46 draft
08 Adjacent-site cause relocation — permanence threat → failed-remedy exception → co-occurrence statistic → pathway + analogy → numbered device mechanism ADJACENT_SITE_CAUSE_RELOCATION() · 68 slots · 16 entity pages Dr. Sam Valentineinformation.shopverticlear.com 3:21 10023 d H1b Anatomical relocation — "it was never the skin of your neck"40–55, band-focused ("кільця Венери") draft

"State" is the verification state of the brain, not of an adaptation. Three brains are still finishing their re-verification pass and honestly carry draft; the optimistic verified flags written by an interrupted earlier run were explicitly distrusted and have to be re-earned.

How it was kept honest

Three critics, told to refute

Every compiled brain is attacked by three independent adversarial critics running concurrently — evidence fidelity (re-checks every claim, timestamp and quote against the shot table, transcript and the actual pixels, re-extracting frames to spot-check), transferability (tries to prove the function is not product-agnostic by instantiating every slot for two unrelated products), and schema & production usability (is visual-style concrete enough to write a render prompt from alone?).

The fixer is told the critics may be wrong and must verify each finding against the evidence before applying it. Neither side is trusted by default.

Two interruptions, and what they cost

Account session limits killed 133 agents across two workflow runs. The first run then reported verified: true for brains whose critics had never run — an honest-looking result built on absent evidence, and the reason the current pass distrusts every inherited flag.

Round one's critics had completed before the wall, so their 282 findings were mined out of the run journal, deduped, and replayed into a cheaper fix pass rather than being paid for twice.

Planned, not implemented

The part of the brief this run did not reach, and why. Nothing here is blocked by an unknown — it is all scoped work with the scaffolding already in place.

not started

The goPure adaptations — the actual "call"

Per trend: scenario.md (slot sheet with every signature slot filled, cast, stage-by-stage Ukrainian script with EN gloss and verbatim captions, invariant checklist, deviations), passports.md (the source's style DNA + render-ready character passports), previews.md (beat boards + clip specs), and renders/manifest.json.

Status: the four-phase workflow is written and staged — scenario → passports & previews → a four-lens self-fixing audit (invariant fidelity, claim compliance, Ukrainian language quality, producibility) → a portfolio pass that checks the eight for collisions. It was not fired: generation was paused at the owner's request while the map was reviewed. 0 of 8 exist.

calibrated only

Character passports and storyline previews, rendered

The render path is built end-to-end (gen.py kie.ai client, render.py manifest executor, a manifest contract in SCHEMA.md) and proven on two assets: the goPure jar re-rendered from its packshot with the label text intact, and a character passport rendered in trend 01's own style — that video runs two render registers, near-photoreal for the sufferer's wound shots and feature-animation for everyone else, and the passport was built in register A with goPure's wound (neck bands, turtleneck tug) substituted for the source's. A 10-second clip from it held character consistency through the motion.

Not done: per-trend passports, beat boards and preview clips. Measured cost to complete all eight ≈ 900 credits of the 3,245 remaining.

in flight

Re-verification of three brains, and the family map

Brains 03, 07 and 08 are still in the fix/verify pass and carry draft. The cross-trend README.md — grouping the eight into families by shared persuasion mechanism, with a "which function for which job" decision table across awareness level, product type, budget and runtime — is written into the workflow but its agent died to the session limit twice and has not yet produced the page.

not started

Assembly into finished videos

seedance clips are 4–15 seconds; a 3–6 minute creative needs a cutlist, Ukrainian voice-over, burned-in caption rendering and an ffmpeg assembly pass. The pattern exists from the earlier sung-VSL work in this project but none of it is wired into hookd/. What exists today produces previews — proof the style and story hold — not deliverable ads.

not started

Smaller gaps

  • The map's adaptation, passport and preview columns are implemented and fixture-tested but render empty, because there are no adaptations yet.
  • No refresh loop: fetch.py is re-runnable and snapshots are immutable, but nothing schedules it, so the "currently winning" set goes stale on its own.
  • Nothing is written back to GetHookd (swipe file, boards) — write operations were left for explicit approval.
  • Trend 06 is a single continuous-style video where scene detection found no cuts at the standard threshold; its shot table is ladder-based rather than cut-based, which is coarser than the other seven.

Operating facts

What it costs to run

GetHookd search (40-row ranking page)~0.4 cr
get_ad, get_ad_media, list_*free
Transcription per ad (async)free tier
Passport / board image (nano-banana-2, 1K)8 cr
Preview clip (seedance-2-mini, 480p, 10 s)38 cr
Est. full adaptation set, all 8 trends~900 cr

Clips are always seedance-2-mini at 480p per the owner's constraint — 496×864, 24 fps, with audio. Media URLs from GetHookd are signed and expire in 24 hours, so bytes are pulled at fetch time, never linked.

Where things live

Live map/graph/
This report/report/
Private repoPytaichukBohdan/hookd
Project PRLevchykUGS#2
Pipeline docshookd/README.md
Build loghookd/WORKFLOWS.md
Conventionshookd/SCHEMA.md

API keys are supplied through the environment and never committed. Source videos are git-ignored and re-fetchable.

The next move

Fire the staged adaptation workflow. It produces, per trend, a Ukrainian scenario with every slot filled, character passports in that source video's own visual register, and boarded previews — then audits itself for invariant fidelity and claim compliance and checks the eight against each other for collisions. Roughly 900 credits and one uninterrupted run.

Recommended first single test if you'd rather not run all eight: trend 03, the defected-insider cycle-trap. It is the cheapest register to produce (live UGC talking head, ~3 minutes, no animated cast), and its structure — an ex-insider naming four "fixes" that quietly make the problem worse — maps one-to-one onto the four horror stories already documented in goPure's own research.