Coy · Strategy spec + build report · 25 August 2026
Five independent category authorities, selling through one Coy backend for New Zealand and monetising offshore traffic by affiliate. Restructured on Koray Tuğberk Gübür's semantic SEO framework: outer section first, core second.
Found during the build · needs action independently of this project
The Anal Twist Dildo carries the supplier note “PVC is a porous material that cannot be sterilized” and an editorial summary reading “its body-safe silicone material ensures a worry-free adventure.”
| Scored products checked with a stated material | 1,234 |
| Name a material contradicting the spec | 227 (18%) |
| Live on coy.co.nz right now | 220 |
| Assert a porous product is body-safe or sterilisable | 123 |
| Inside site #1's 110 products | 25 |
Root cause is mundane: the editorial summaries were generated from aggregated review text, and reviewers routinely call TPE and TPR “silicone”. The copy followed the reviewers instead of the spec sheet beside it. Contained, not fixed — the satellite pipeline can no longer propagate it; the 220 live pages still say it.
§0 · What changed in v2
Under the framework that's a site with a core section and no outer section — the part that earns the relevance which makes the core rankable.
“If you're able to be an alternate for the brands, and history of the car, parts of the car, and motor and the engine at the same time, it will be very much easier for ranking for individual product reviews.”
One thing v1 got right that the framework independently confirms: coverage predicts traffic and DR doesn't — arrived at from Ahrefs data, landing on vastness · depth · momentum. Two unrelated routes to the same conclusion. Treat it as the most load-bearing finding in the document.
| # | Change | Driver |
|---|---|---|
| 1 | Added §2 — source context, central entity, central search intent, topical borders. Nothing gets drawn before these are fixed. | Every downstream decision derives from source context |
| 2 | §6 split into outer and core section, outer published first | Core ∪ source context = monetisation; outer ∪ central search intent = the relevance that ranks it |
| 3 | Build order resequenced — authority wedge before money pages | Lecture 29: “most people do the opposite. They go with the easy queries first” |
| 4 | Kill criteria rewritten around impressions and query count, not pages indexed | Lecture 83: “focus on the query increase and impression increase” |
| 5 | Added §7 content brief standard and §8 publication discipline | Specified mechanics, not style |
The lubricants satellite collides with the anal site's outer section. Two of your own properties competing for one cluster. §2.4.
The outer section is the part you cannot generate. AI-only depth in health-adjacent territory is what gets eliminated. §12.
Five sites sharing a score, template, backend and disclosure line are highly clusterable. §9.2 is the checklist.
§2 · Semantic foundation
In this framework they aren't positioning language — they determine which sections exist, in what order, and where the site stops.
Source context = who you are + how you make money + brand identity.
“We are the New Zealand retailer for these brands, and we aggregate every real buyer review we can find into one published score.”
Unusually strong, because it's true and rare. Competitors are publishers who bought one unit. Coy handles the stock, processes the returns, holds cross-retailer price history.
The disclosure §12 requires isn't a compliance tax on the model — it is the source context. Consequence: the core section orders around evidence depth and safety, not price or novelty.
Anal play — not “anal toys”.
This distinction decides the whole document. “Anal toys” is a product class, and a map built on it can only ever produce product pages.
“Anal play” is an entity with attributes — anatomy, risk, technique, hygiene, materials — and those attributes are what the outer section is made of. Toys are one slice, and that slice is where the money is.
Exploring anal play safely and confidently.
Predicates: know · do · stay safe. The know predicate generates the outer section; do and stay safe straddle. Buying is downstream of all three and never appears as the site's stated purpose.
Both must appear on every page site-wide — that's what produces the n-grams telling the engine what the site is.
Site #1's outer section necessarily includes lubricant chemistry — osmolality, pH, condom compatibility. v1 also names lubricants as satellite #3.
Two of your own properties would compete for the same cluster. Sources that share identity get clustered and the engine picks one representative.
Recommendation: lubricants is not a satellite — it's outer-section content wherever needed, and a category on coy.co.nz. Replace site #3 with a genuinely disjoint category. Needs Greg.
§3 · Evidence
Measured 25 August 2026 via Ahrefs. Traffic values in USD per month. The five sites Greg named are highlighted; Bedbible and Kinkly show the ceiling.
| Site | DR | Ref domains | Keywords | Traffic/mo | Value/mo |
|---|---|---|---|---|---|
| Bedbible | 71 | 6,827 | 15,609 | 141,403 | $36,792 |
| Kinkly | 69 | 6,482 | 11,907 | 219,926 | $41,478 |
| phallophilereviews | 47 | 1,228 | 3,381 | 38,579 | $7,360 |
| lovehoneyforum | 40 | 1,923 | 8,283 | 37,127 | $11,418 |
| thebiggayreview | 34 | 940 | 562 | 2,240 | $581 |
| pleasuremenow | 26 | 897 | 232 | 555 | $151 |
| unchasteray | 7 | 517 | 21 | 21 | $6 |
| LoveStash (NZ) | 4.9 | 601 | 819 | 11,851 | $1,333 |
| coy.co.nz | 0 | 369 | 0 | 0 | $0 |
Finding 2 is vastness, arrived at from Ahrefs data. The framework adds two axes the table can't see: depth (how far a single attribute is taken) and momentum (publication rate over time). Bedbible and Kinkly have all three. The dead sites have links and nothing else.
v1 said the 2012 update removed the benefit. Koray's position is that the update targeted low-quality EMDs, and that the mechanism was never a ranking bonus but query brandinization — turning a generic term into a navigational one you own. He maintains EMDs still work, with conditions.
We're still right to refuse one, on his own criteria: the advantage requires brand value above an association threshold (years of work we'd do instead of the stockist programme); brand identity resolution is his named EMD disadvantage and §9.2 already carries that risk; Bing removes these sources from its index directly; and it fails the brand-manager test in §9.1 when §11's entire link model is brands.
§4 · Architecture
Five sites cost ~1.4× one only if everything below is shared. Each satellite is a config file plus content, never a bespoke build.
Shopify backend · coyscore-api · Astro template with per-site theming · Cloudflare geo-routing and affiliate module · tier-2 review generation · JSON-LD schema · outreach tracker · ops surface.
One Shopify plan, one merchant account, one order pipe into the existing Coy Ops warehouse.
Category · brand and domain · voice · safety-critical attributes · comparison axes · review template emphasis · affiliate partners · disclosure copy.
New in v2: central entity · central search intent · topical borders · outer-section cluster list.
§5 · Data
Tier 1 exists and ships to coy.co.nz product pages. Tier 2 is a deep pass over the ~50 SKUs per satellite — expensive per SKU, tiny volume.
| Tier 1 — coy.co.nz | Tier 2 — satellites | |
|---|---|---|
| Volume | Whole catalogue, 35/night | ~50 SKUs per site, one-off plus refresh |
| Discovery | SERP net gated by relevantStrict() | Wider net + targeted site: queries against the specialist-blogger list |
| Sources | Retail, reddit, editorial, video | …plus hands-on reviews from the whitelist, treated as a seed list not a filter |
| Specs | Supplier freeform | Normalised comparables — insertable length, max diameter, flared base, taper, non-porous |
| Attributes | — | Root / rare / unique classification v2 |
| Output | Score, subscores, themes, pros/cons, FAQs, quotes | …plus head-to-head comparisons, price history, score history, methodology disclosure |
REVIEW_SITES at coyscore-discover.mjs:94 is currently a filter deciding which found URLs to keep. For tier 2 it becomes a seed list — site:bedbible.com <product> queries per domain per product. That single change lifts corpus depth most, and because RawSource is retained, tier 2 synthesises against stored raw plus the increment — no re-scrape.
Publish the evidence count on every review — “296 reviews across 8 retailers, 4.7★ aggregate”. They reviewed one unit; we aggregated hundreds.
CoyscoreHistory is append-only monthly. No other property in this niche can show a score trend over time.
6,116 rows in CompetitorPrice — and the natural home for the geo-routed buy links.
body_safe plus the supplier Material Blurb on 40 of 53 products. v2 note: §6.1 builds the entire authority phase on this. It sat in v1 as a differentiator bullet when it's actually the thing that gets the site classified.
§6 · Site #1
110 high-confidence Coyscore products across 35 brands and 14 subcategories. Size and Weight on 107, Colour on 85, Material plus Material Blurb on 80. Porosity: 48 non-porous, 29 porous, 30 not stated.
The three duplicate pairs were found by comparing the corrupt feed title column across a truncated result set. Read on titleFinal over the full 586 records, Anal Toys has 0 true duplicates and 0 title collisions. Six variant groups exist and every member is distinguishable on size or colour.
The real defect is the opposite shape: titleFinal carries the distinguishing attribute inconsistently. 209954 (15 inch, $213.95) and 205407 (7 inch, $73.95) publish under one identical title. Six collisions catalogue-wide — four in Dildos, none in Anal. The gate is a title disambiguation rule, and it must be in the factory before a Dildos satellite where 11 groups wait.
Core = central entity ∪ source context → monetisation.
Outer = central entity ∪ the know predicate → relevance, historical data.
The outer section links into the core.
The attribute chain. Lecture 29 doesn't go at the obvious topic head-on — it routes root attribute → derived attribute → question cluster.
body_safe · 40 Material Blurbs · 21 brands
Bedbible and Kinkly are the commercial competitors. The classification targets are the health authorities that own this attribute space — Healthline, Planned Parenthood, WebMD, Medical News Today, Go Ask Alice. Outranking a dead affiliate site earns nothing: “even if I am able to outrank these specific web sources… they won't give me that much authority.” His water project took 27 articles to sit between Healthline and WebMD, and never published anything after.
Phase A — 30 articles, weeks 1–8. Clusters, in build priority:
| Cluster | Pages | Why it leads |
|---|---|---|
| Material safety | 8 | Porosity, phthalates, silicone vs TPE vs glass vs steel, sterilisation, leaching, jelly-rubber. Direct line to body_safe + Material Blurbs. Nobody in the comparison set covers it seriously. |
| Anatomy | 6 | Internal/external sphincter, rectum, prostate, perineum, pelvic floor. Entity anchors for everything else. |
| Risk & health | 6 | Pain causes, fissures, haemorrhoids, STI transmission, incontinence myths, when to see a doctor. YMYL — see §12. |
| Flared base / retained objects | 4 | The highest-stakes safety attribute in the category, and a hard product constraint. Bridges directly into the core. |
| Hygiene & preparation | 4 | Douching risks, diet, cleaning protocols by material. |
| Lubricant science | 4 | Osmolality, pH, condom compatibility, silicone-on-silicone. Contested — §2.4. |
Nothing on this list is a money page. Every page carries the central search intent and links down into the core section.
Coverage is the KPI. Target ~120 core pages from 53 products.
| Type | Count | Notes |
|---|---|---|
| Product reviews | 50 | Post-dedup. Tier-2 depth, methodology block, geo-routed buy |
| Head-to-head comparisons | 30–50 | Curated from 1,225 possible pairs — same subcategory, adjacent price |
| “Best X for Y” roundups | 10–15 | Beginner plug, glass, prostate, beads, training kit, anal lube |
| Buying & sizing guides | 8–12 | Straddles both sections |
| Brand pages | 21 | One per outreach target — doubles as the outreach artefact |
| Glossary / entity pages | 10–15 | Built in Phase A — they are outer-section |
1,225 possible pairs, generated, is precisely the crawl-waste to avoid — “if they crawl your website all day long and they don't find something quality they won't come back probably for the next eight months.”
Gate every comparison: both products carry ≥50 reviews, share a subcategory, and differ on at least two normalised comparables. Generate none that fail it, however many that leaves.
Not a category grid. Surface the deepest-evidence reviews — Icicles No 72 at 483 reviews, Booty Call at 431 — alongside the material safety hub, so the crawler goes deeper.
Total ~150–170 pages, against v1's ~130 — but ordered, and with roughly a third of it earning the relevance the rest spends.
§7 · Content brief standard
Unique → root → rare. Unique attributes act as a synonym for the entity and come first.
v1's normalised comparables are all root — every product has them. Tier 2 needs an extraction step for the unique attribute per SKU: the one property this product has that its peers don't. That is the lead, not the spec table.
Definitional (what) → comparative (superlative) → grouping → boolean last.
Boolean questions “most of the time will be appearing at the bottom parts.”
H1 is the unification of all H2s. The closing line of each section is the signifier for the next heading — contextual opening, answer, bridge. This holds term proximity together, and it's checkable in review.
Not a ranking factor. An ordered summary mirroring the document's actual heading order — if free lube guidance is H3, it appears third. “Create a template, a pattern, and make the search engine recognise that pattern.”
This is the one that makes the factory a genuine advantage rather than a cost saving. Deliberately minimise the differences between product briefs, so moving a question from position 2 to position 3 can be done across all 50 reviews at once and the engine's response read as a single signal.
That's a schema requirement on tier-2 synthesis: emit a fixed brief structure with addressable slots, not free-form prose. Build it in at step 7, not after.
§8 · Publication and momentum
“Be patternless. The search engine shouldn't know when exactly you will be publishing… Sometimes publish 3 articles in a single day then wait for 4 days, in the 5th day publish 1, next day publish 7.”
The one-time-generation model is the failure mode here, and it's the same failure mode as com.coy-social holding 452 queued rows with 0 posted: a pipeline that produces and never ships on a schedule.
§9 · Domain naming
.com. International target; .co.nz caps the ceiling.Not chosen. Needs Greg.
Five satellites sharing a scoring system, a template, a backend and a disclosure line will trip most of the brand-identity-resolution test. If they cluster, the engine picks one representative and the others carry its fate.
Because §12 requires disclosure, the goal isn't concealment — it's making each property independently substantial enough that the engine has a reason to rank more than one. Distinct outer sections per satellite are what does that, which is the second argument against §2.4's lubricants collision.
| Signal | Our exposure | Mitigation |
|---|---|---|
| Same logo / typography | High — one template | Genuinely distinct type and identity per site |
| Same CSS class names / layout | High — shared Astro template | Per-site token layer; vary structure, not just colour |
| Same IP / hosting provider | High — all Cloudflare Pages | Accept; near-universal, low signal alone |
| Same analytics ID | Avoidable | Separate properties per site |
| Same GSC account | Avoidable | Separate accounts |
| Same JS/CSS files | High | Per-site bundles |
| Same CEO / named people | Real — one team | Disclosed openly; §12 makes this a feature, not a leak |
§10–11 · Commercial
| Visitor | Route |
|---|---|
| New Zealand | Coy cart via Storefront API → checkout hands off to coy.co.nz |
| US / CA / UK / EU | Affiliate link to a retailer that ships there |
| Elsewhere | Nearest partner, or Coy with an honest “we ship NZ only” |
Never affiliate an NZ visitor, and never affiliate to any retailer that ships to NZ. Adult Toy Mega Store is Coy's full-catalogue twin and Lovehoney runs a .co.nz. Getting this fence wrong means paying to send your own market to your competition.
Coy genuinely is an NZ retailer of these brands, and every brand hands out “where to buy” links as routine.
Review the product well → send the writeup and the Coyscore badge → “we stock you in NZ, can we go on the stockist page?”
Not a link exchange — a retail relationship, and precisely the link profile Google expects a retailer to have. 21 brands on site #1.
At least 106 named brands hold a high-confidence Coyscore, 50 with three or more — and 280 products earn a badge across 76 brands. Each gets an award graphic, an embeddable widget, and a one-line email.
Anchor text is the brand or logo, never a keyword; a score is never for sale.
v2 sequencing: programme A now depends on Phase B reviews existing. B depends on nothing — making it the only link activity available during Phase A, and more important in v2, not less.
That 70 is a floor, not a count. /products caps at 500, /inventory at 2,000, and neither honours offset — it comes from a 276-product join out of 586 high-confidence records. Real figure likely 120–150. Fix the pagination before building the outreach list.
§12 · Compliance and content risk
The Phase A outer section is health content. That's deliberate — it's where the authority is. It also carries the two real risks in this plan.
“It's certain that we will need really authoritative expert authors, because even if you use AI for these types of things, everyone will be using it… If you use just AI or rely on the AI, it will be really easy for search engine to actually eliminate you in the future, and you will definitely need actually a real brand identity behind these things.”
It can generate the core — 53 products, structured data, normalised comparables, a fixed brief schema. But thirty AI-written articles on anal health, on a retailer-owned site, is the highest-risk content in this document and the lowest-cost thing to get wrong.
Options, cheapest first: commission a sexual-health writer or RN for the risk and anatomy clusters (~10 pages, the YMYL core); cite primary sources visibly; name a real reviewer with a real credential. The material-safety cluster is the exception — chemistry and product data, where Coy's own evidence is strongest.
It tests whether a review is responsive to a product seeker with a specific need, and connects to the Quality Rater Guidelines on real aspects, real authenticity, and distinguishing independent from fake reviews. Aggregation is a defensible answer to authenticity but it is not first-hand experience, which PRU rewards directly.
Coy's genuine first-party evidence — returns data, complaint patterns, what actually gets reordered — is the strongest available substitute, and isn't yet in the tier-2 spec. It should be.
AggregateRating or Review markup from third-party reviews. Coyscore is a custom additionalProperty.Open question this raises: who authors the outer section? It gates the whole sequence, and it's the one line item in this plan that costs real money.
§13 · Discipline
v2 changes what's measured. Pages indexed is a vanity metric — it measures whether the generator ran. Impressions and distinct queries are the search engine telling you it has started to trust the site, and they move months before rankings do.
| Checkpoint | Measure | Threshold |
|---|---|---|
| Week 2 | Phase A pages live and indexed | ≥ 25 of 30 |
| Week 4 | GSC crawl rate vs pre-launch baseline | rising |
| Week 6 | Distinct queries with impressions | ≥ 250 |
| Week 8 | Top-20 for any outer-section head term against a health authority | ≥ 3 |
| Week 10 | Stockist links secured | ≥ 4 of 21 |
| Week 12 | Keywords in top 20 | ≥ 40 |
| Week 16 | Revenue — Coy NZ plus affiliate | > running cost |
It tests the thesis of this entire restructure. If 30 outer-section articles cannot place three terms in the top 20 against health publishers, the classification play has failed and the core section will inherit nothing — diagnose before generating 120 more pages.
Site #2 does not start until site #1 clears week 6. If week 12 misses, the factory is wrong and no further site is built until it's diagnosed.
§6.1 ships Phase A over weeks 1–8, but the week-2 row wants ≥25 of 30 pages live and indexed. Those can't both hold — and 25 pages inside two weeks is exactly the bulk dump §8 forbids. This looks like v1's week-2 row (“≥80 of ~130 pages indexed”) surviving the restructure that replaced bulk-generate with patternless drip.
§14 · Next
Steps 1–4 are unchanged from v1 and remain correct. The sequence changes after that: the map is drawn before generation, and the outer section ships first.
/products and /inventory paginationEverything downstream works off truncated data.categoryLaunch gate.REVIEW_SITES from filter to seed listAdd site: query generation.Build report · 25 August 2026
Everything below is committed and verified by running it. ./scripts/build-all.sh chains the whole pipeline and stops on the first failure.
| Step | State | Evidence |
|---|---|---|
| 1 · API pagination | deployed | offset + X-Total-Count, sku tiebreaker. 586 records now arrive, not 500. |
| 2 · Catalogue audit | done | 106 brands, 0 true duplicates in Anal, 15 category values where there should be 8 |
| 3 · Discovery inversion | proven live | --tier 2 surfaced heyepiphora.com + blog.kinkly.com that tier 1 missed. Tier 1 byte-identical. |
| 4 · Comparables | done | 3 of 5 derive; flared base left unknown rather than inferred from subcategory |
| 5 · Topical map | done | 267 pages · 51 outer / 216 core · comparisons capped to 19% of site |
| 7 · Brief schema + briefs | done | §7 rules asserted structurally; 267 briefs, 247 generatable |
| 8 · Astro site | builds | 278 pages, 277 JSON-LD graphs re-parsed at postbuild, zero review markup |
| 9 · Scheduler | done | 247 over 200 days, 110 silent days, phase order asserted non-vacuously |
| 11 · Geo-router | 31 tests green | NZ affiliate fence enforced at four layers; nothing routes to an affiliate yet, deliberately |
| 14 · Badge programme | ready to run | 280 awards, 76 brands, honesty gate with no --force |
| ATLAS handoff | awaiting go | Dry-runs clean. A live run creates a client, uploads 133 docs, generates 247 pages at real cost. |
§13's “30” is §6.1's 30 articles — 32 pages — and 20 of those 32 have no author. Only 12 are writable, so 25 by day 14 is unreachable at any pace. Counting the 19 glossary stubs makes it reachable only by shipping 81% of the generatable outer section in a fortnight, which is the bulk dump with a bigger denominator. The plan delivers 7 pages by day 14, 3 of them articles.
So the unauthored clinical cluster is not just 6 pages of missing authority — it is what makes the week-8 gate untestable. Phase A ships 31 of 51 until someone writes them.
refreshContent.coy.co.nz/coyscore/<handle> and hosting for the SVGs. Blocks the first outreach email.