Coy · Strategy spec + build report · 25 August 2026

A network of review propertiesv2.1 · built

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.

Status spec — nothing built Site #1 Anal · 110 products · 35 brands Central entity anal play Publish order outer → core v1 preserved at satellite-network-spec-v1.md

Found during the build · needs action independently of this project

220 live products on coy.co.nz describe the wrong material. 123 of them dangerously.

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 material1,234
Name a material contradicting the spec227 (18%)
Live on coy.co.nz right now220
Assert a porous product is body-safe or sterilisable123
Inside site #1's 110 products25

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

v1 was a sound commercial plan with a structural gap: every page type it specified was a monetisation page.

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.

Five changes, three new risks

#ChangeDriver
1Added §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 firstCore ∪ source context = monetisation; outer ∪ central search intent = the relevance that ranks it
3Build order resequenced — authority wedge before money pagesLecture 29: “most people do the opposite. They go with the easy queries first”
4Kill criteria rewritten around impressions and query count, not pages indexedLecture 83: “focus on the query increase and impression increase”
5Added §7 content brief standard and §8 publication disciplineSpecified mechanics, not style

Risk 1 new

The lubricants satellite collides with the anal site's outer section. Two of your own properties competing for one cluster. §2.4.

Risk 2 new

The outer section is the part you cannot generate. AI-only depth in health-adjacent territory is what gets eliminated. §12.

Risk 3 new

Five sites sharing a score, template, backend and disclosure line are highly clusterable. §9.2 is the checklist.

§2 · Semantic foundation

Fix these four before a page is drawn

In this framework they aren't positioning language — they determine which sections exist, in what order, and where the site stops.

2.1 · Source context

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.

2.2 · Central entity

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.

2.3 · Central search intent

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.

2.4 · Topical borders conflict

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

The comparison set

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.

SiteDRRef domainsKeywordsTraffic/moValue/mo
Bedbible716,82715,609141,403$36,792
Kinkly696,48211,907219,926$41,478
phallophilereviews471,2283,38138,579$7,360
lovehoneyforum401,9238,28337,127$11,418
thebiggayreview349405622,240$581
pleasuremenow26897232555$151
unchasteray75172121$6
LoveStash (NZ)4.960181911,851$1,333
coy.co.nz036900$0
unchasterayDR 7
517 ref domains
21 keywords
21 visits
pleasuremenowDR 26
897 ref domains
232 keywords
555 visits
thebiggayreviewDR 34
940 ref domains
562 keywords
2,240 visits
phallophilereviewsDR 47
1,228 ref domains
3,381 keywords
38,579 visits
lovehoneyforumDR 40
1,923 ref domains
8,283 keywords
37,127 visits
Referring domains Keywords Organic traffic Bars scaled to the largest value in each series.

Framework convergence v2

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.

On exact-match domains — conclusion stands, reasoning corrected

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

The factory

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 · pidjfr-f5 Storefront API · one merchant account coyscore-api · Railway Postgres scores · specs · corpus · competitor prices Satellite factory — shared codebase Astro template · per-site theming · geo-router affiliate module · tier-2 pipeline · scheduler Site 1Anal Site 2Bondage Site 3TBD · §2.4 Site 4 Site 5

Shared

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.

Per-site config declares

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

Two-tier Coyscore

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.nzTier 2 — satellites
VolumeWhole catalogue, 35/night~50 SKUs per site, one-off plus refresh
DiscoverySERP net gated by relevantStrict()Wider net + targeted site: queries against the specialist-blogger list
SourcesRetail, reddit, editorial, video…plus hands-on reviews from the whitelist, treated as a seed list not a filter
SpecsSupplier freeformNormalised comparables — insertable length, max diameter, flared base, taper, non-porous
AttributesRoot / rare / unique classification v2
OutputScore, subscores, themes, pros/cons, FAQs, quotes…plus head-to-head comparisons, price history, score history, methodology disclosure

The critical inversion

REVIEW_SITES at coyscore-discover.mjs:94 is currently a filter deciding which found URLs to keep. For tier 2 it becomes a seed listsite: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.

What tier 2 adds that competitors don't have

Methodology transparency

Publish the evidence count on every review — “296 reviews across 8 retailers, 4.7★ aggregate”. They reviewed one unit; we aggregated hundreds.

Score history

CoyscoreHistory is append-only monthly. No other property in this niche can show a score trend over time.

Cross-retailer price

6,116 rows in CompetitorPrice — and the natural home for the geo-routed buy links.

Material safety the wedge

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

The topical map

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.

Subcategories

  • Butt Plugs 20
  • Anal Vibrators 14
  • Huge 12
  • Training Kits 10
  • Prostate 9
  • Glass 8
  • Anal Toys 7
  • Anal Beads 7
  • Tails 7
  • Tunnel Plugs 5
  • Inflatable 4
  • Pegging 3
  • Jewelled 2
  • Enemas 2

Brands — the outreach list (35)

  • Doc Johnson 15
  • Firefly 7
  • Icicles 7
  • Rocks Off 7
  • Booty Call 5
  • Crystal Jellies 5
  • CalExotics 4
  • Intimate Earth 4
  • Colt 3
  • Dr. Joel Kaplan 3
  • Titanmen 3
  • Lelo 2
  • Icicles
  • Sex & Mischief
  • Huge Butt Toys
  • Sportsheets
  • Doxy
  • Anal Fantasy
  • Titanmen
  • Master Series

The blocking defect was not real — and the real one is elsewhere

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.

6.1 · Outer section — published first

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.

anal playcentral entity safetyroot attribute material + anatomicalderived question clustersbody_safe · 40 Material Blurbs · 21 brands

The classification target is not Bedbible

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:

ClusterPagesWhy it leads
Material safety8Porosity, 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.
Anatomy6Internal/external sphincter, rectum, prostate, perineum, pelvic floor. Entity anchors for everything else.
Risk & health6Pain causes, fissures, haemorrhoids, STI transmission, incontinence myths, when to see a doctor. YMYL — see §12.
Flared base / retained objects4The highest-stakes safety attribute in the category, and a hard product constraint. Bridges directly into the core.
Hygiene & preparation4Douching risks, diet, cleaning protocols by material.
Lubricant science4Osmolality, 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.

6.2 · Core section — published second

Coverage is the KPI. Target ~120 core pages from 53 products.

TypeCountNotes
Product reviews50Post-dedup. Tier-2 depth, methodology block, geo-routed buy
Head-to-head comparisons30–50Curated from 1,225 possible pairs — same subcategory, adjacent price
“Best X for Y” roundups10–15Beginner plug, glass, prostate, beads, training kit, anal lube
Buying & sizing guides8–12Straddles both sections
Brand pages21One per outreach target — doubles as the outreach artefact
Glossary / entity pages10–15Built in Phase A — they are outer-section

Comparison pages are the thin-content risk

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.

Homepage = quality nodes

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

Specified mechanics, applied identically across every satellite

7.1 · Attribute priority

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.

7.2 · Question order

Definitional (what) → comparative (superlative) → grouping → boolean last.

Boolean questions “most of the time will be appearing at the bottom parts.”

7.3 · Heading mechanics

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.

7.4 · Meta descriptions

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.”

7.5 · One template across every entity in the class

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

Patternless, not batched

“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.”

  1. No bulk dump.Generation can be batched; publication is drip-fed on a deliberately irregular schedule. This is a scheduler feature — build it.
  2. No fixed cadence.Not daily, not 3-a-week. Vary count and time of day.
  3. In any window, be the source that publishes most in the category.
  4. Don't launch during a core update.Wait for a flat algorithmic season.
  5. Crawl rate is the leading indicator— it rises before rankings do, so it's the week-4 checkpoint in §13.

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

Criteria, and the network fingerprint

9.1 · Criteria, in order

  1. Brandable, not descriptive. No exact-match — reasoning in §3.
  2. Passes the link-prospect test — would a brand manager at Lelo link to it without wincing?
  3. Survives category expansion if it outperforms and absorbs a neighbour.
  4. Pronounceable and typeable — it goes in outreach emails.
  5. .com. International target; .co.nz caps the ceiling.

Not chosen. Needs Greg.

9.2 · Network fingerprint v2

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.

SignalOur exposureMitigation
Same logo / typographyHigh — one templateGenuinely distinct type and identity per site
Same CSS class names / layoutHigh — shared Astro templatePer-site token layer; vary structure, not just colour
Same IP / hosting providerHigh — all Cloudflare PagesAccept; near-universal, low signal alone
Same analytics IDAvoidableSeparate properties per site
Same GSC accountAvoidableSeparate accounts
Same JS/CSS filesHighPer-site bundles
Same CEO / named peopleReal — one teamDisclosed openly; §12 makes this a feature, not a leak

§10–11 · Commercial

Geo-routing and outreach

VisitorRoute
New ZealandCoy cart via Storefront API → checkout hands off to coy.co.nz
US / CA / UK / EUAffiliate link to a retailer that ships there
ElsewhereNearest partner, or Coy with an honest “we ship NZ only”

Hard rule

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.

A · The stockist ask Phase B

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.

B · The badge programme start at step 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

YMYL and the limits of generation

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.”

The factory cannot generate the outer section

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.

Product Reviews Update

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.

The four non-negotiables

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

Kill criteria

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.

CheckpointMeasureThreshold
Week 2Phase A pages live and indexed≥ 25 of 30
Week 4GSC crawl rate vs pre-launch baselinerising
Week 6Distinct queries with impressions≥ 250
Week 8Top-20 for any outer-section head term against a health authority≥ 3
Week 10Stockist links secured≥ 4 of 21
Week 12Keywords in top 20≥ 40
Week 16Revenue — Coy NZ plus affiliate> running cost

Week 8 is the decisive gate

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.

Unresolved conflict in this table needs a call

§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

Build order

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.

  1. Fix /products and /inventory paginationEverything downstream works off truncated data.
  2. Dedup the anal set; normalise categoryLaunch gate.
  3. Invert REVIEW_SITES from filter to seed listAdd site: query generation.
  4. Spec normalisation passPlus unique-attribute extraction per SKU (§7.1).
  5. Draw the full topical map — both sections — before generating anythingOuter clusters, core nodes, internal link paths outer → core. The artefact everything else derives from.
  6. Resolve §2.4 (lubricants) and §12 (who authors the outer section)Both gate Phase A.
  7. Tier-2 synthesis prompt + per-site config schemaEmitting the fixed brief structure with addressable slots.
  8. Astro templateReview, comparison, roundup, guide, brand, and outer-section article types. Homepage surfaces quality nodes.
  9. Publication scheduler with patternless dripNot a bulk deploy.
  10. Buy the domain. Ship Phase A30 outer-section articles, weeks 1–8.
  11. Geo-router + affiliate moduleNeeded only when core pages land.
  12. Week 8 gate (§13)If it fails, stop and diagnose. Do not generate Phase B.
  13. Phase B — core section, drip-fedStockist outreach follows the reviews.
  14. Badge programme in parallel from step 1The only link activity running during Phase A.

Build report · 25 August 2026

What exists now

Everything below is committed and verified by running it. ./scripts/build-all.sh chains the whole pipeline and stops on the first failure.

StepStateEvidence
1 · API paginationdeployedoffset + X-Total-Count, sku tiebreaker. 586 records now arrive, not 500.
2 · Catalogue auditdone106 brands, 0 true duplicates in Anal, 15 category values where there should be 8
3 · Discovery inversionproven live--tier 2 surfaced heyepiphora.com + blog.kinkly.com that tier 1 missed. Tier 1 byte-identical.
4 · Comparablesdone3 of 5 derive; flared base left unknown rather than inferred from subcategory
5 · Topical mapdone267 pages · 51 outer / 216 core · comparisons capped to 19% of site
7 · Brief schema + briefsdone§7 rules asserted structurally; 267 briefs, 247 generatable
8 · Astro sitebuilds278 pages, 277 JSON-LD graphs re-parsed at postbuild, zero review markup
9 · Schedulerdone247 over 200 days, 110 silent days, phase order asserted non-vacuously
11 · Geo-router31 tests greenNZ affiliate fence enforced at four layers; nothing routes to an affiliate yet, deliberately
14 · Badge programmeready to run280 awards, 76 brands, honesty gate with no --force
ATLAS handoffawaiting goDry-runs clean. A live run creates a client, uploads 133 docs, generates 247 pages at real cost.

The week-2 conflict resolved, and it is worse than a pace problem

§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.

Open, in priority order