Skip to content

Husky Data Publishing Strategy

Date: 2026-04-23 (revised 2026-04-28) Status: Approved — execution in flight Supersedes: 2026-04-20-aws-dx-product-catalog.md (scope expanded beyond AWS DX)

2026-04-28 incident & strategy revision (read first)

On 2026-04-28 an autopilot run flipped the four rejected paid/trial listings from Free → Limited Trial via UI to clear the reviewer feedback. The flip was successful, but the share contents at flip time still pointed at full-production views (V_HEM_US 910M rows, V_MAID_APAC_PLUS_US 33.6M rows). This created a P0 leak risk: had Snowflake auto-published the listings within the 24hr SLA, ~944M real production rows would have been mountable by any Marketplace consumer for free.

Owner intervention (paraphrased): "一見光就人地用左唔會買。佢可以開好多account 得閒拎我地data. 所以 free 一定唔可以真." Real production data must NEVER be mountable via a Free or Limited Trial listing — consumers can spin up multiple trial accounts and siphon data without ever paying.

P0 remediation executed: 5 REVOKE statements removed real views (V_HEM_US, V_MAID_APAC_PLUS_US) from all four shares. After remediation, shares contained only reference data (SEGMENT_CATALOG, V_COUNTRY_COVERAGE, V_COVERAGE_APAC_US, V_IAB_CROSSWALK) and empty views (V_MAID_US_ANDROID, V_MAID_US_IOS) — zero real PII/MAID exposure.

Strategy revision (locked 2026-04-28):

  1. Trial tier listings ship sample-only data — deterministic-hash ~1K-row samples (V_HEM_US_SAMPLE 991 rows, V_MAID_APAC_PLUS_US_SAMPLE 1051 rows). Built via WHERE ABS(HASH(<key>)) % N < 1 so every query returns the same rows — zero maintenance overhead, no monthly refresh cron required, schema-truthful for evaluation.
  2. Paid tier listings will use Snowflake Paid (V2 monetization) — full data behind a Stripe payment gate. Self-serve mount once consumer pays. Requires: (a) Stripe Express account setup in Snowsight Admin > Billing > Marketplace billing, (b) Snowflake Partner Manager engagement / Marketplace Operations case for go-to-market validation. SG-eligible per provider-becoming docs.
  3. No "By Request" access type for external Marketplace — verified via doc reading on 2026-04-28. draft_access_type enum is FREE / PAID / LIMITED_TRIAL / UNKNOWN only. request_approval_type exists for organizational listings, not external. The owner's competitive-protection intent is achieved by the Trial = sample / Paid = full-via-Stripe split.
  4. Pre-flight checklist mandatory before any Limited Trial submission — see docs/reference/snowflake-listing-playbook.md. Run SELECT COUNT(*) FROM <view> for every view granted to a trial share before submission. Any view ≥10M rows is a red line — STOP and replace with a sample view.

Execution status (2026-04-28 EOD):

Listing State Review Notes
HUSKY_MOBILE_AUDIENCE_SAMPLE (#57) PUBLISHED Limited Trial, original sample listing — unchanged
HUSKY_BRANDED_SEGMENT_CATALOG (#62a) PUBLISHED Free reference
HUSKY_COUNTRY_COVERAGE (#62b) PUBLISHED Free reference (auto-published 2026-04-28)
HUSKY_IAB_TAXONOMY_CROSSWALK (#62c) PUBLISHED Free reference
HUSKY_US_MOBILE_AUDIENCE_TRIAL (#60) PUBLISHED Sample-aligned manifest (V_HEM_US_SAMPLE) approved + auto-published 2026-04-28
HUSKY_CROSSBORDER_MOBILE_AUDIENCE_TRIAL (#61) PUBLISHED Sample-aligned manifest (V_HEM_US_SAMPLE + V_MAID_APAC_PLUS_US_SAMPLE) approved + auto-published 2026-04-28
HUSKY_USA_MOBILE_HEM_BUNDLE (paid-1) DROPPED Will recreate as Paid V2 after Stripe onboarding
HUSKY_CROSSBORDER_BUNDLE (paid-2) DROPPED Will recreate as Paid V2 after Stripe onboarding

Lesson: reviewer feedback ("submit as Limited Trial") is necessary but not sufficient. The reviewer cares about manifest-tier consistency, not whether share contents are sample vs. real. Provider must independently enforce share content matches the access type. The "submit as Limited Trial" advice from a reviewer is a trap if the share content isn't already sample data — the only safe response is "first replace share content with sample, then flip access type."

Context

Husky Data ships APAC-focused mobile audience data, but Snowflake's data footprint review on 2026-04-22 revealed what the brand narrative had been undershooting: USA is our largest single market (2.01B MAIDs) and we hold a US-only HEM asset that no APAC-native competitor can match. Between 2026-04-19 and 2026-04-23 we tried to ship a single Marketplace listing ("Husky Data — APAC Mobile Audience (Free Sample)") and hit two rejection cycles that forced a wider re-think:

  1. Profile privacyUrl reject — Snowflake required a dedicated privacy page (/company/privacy), not a generic compliance page. Fixed by updating profile metadata.
  2. Listing type reject — Snowflake policy: Free listings must be full production datasets, sample data must be shipped as Limited Trial with a consumer-request flow to upgrade. Our "Free Sample" framing was a category mistake.

Fixing #2 surfaced a deeper opportunity: Snowflake's tier system maps cleanly onto a proper B2B data-sales funnel. Rather than one hybrid listing, we split into 10 products across 3 tiers and 5 channels, with one canonical master catalog.

Decisions (locked 2026-04-23)

  1. Geo narrative: dual-track APAC + USA. Keep APAC as differentiation story, add USA as scale story. Parallel listing funnels, not a single "global" pitch.
  2. Cross-border APAC↔US is flagship. US-addressable audience carrying APAC behavioural attributes — no US incumbent (LiveRamp, Experian, Acxiom) can replicate. This is the moat, not a footnote.
  3. Master catalog as single source of truth. 10 products defined once in docs/internal/husky_product_master.yaml. Each channel (Snowflake, AWS DX, huskydata.io, Eyeota, LiveRamp) gets a subset via docs/internal/channel_distribution.yaml. Phase-2 adapter scripts auto-generate channel manifests; until then, human reads master, fills channel UI.
  4. Supplier diversification parked until Q3. Current ingest covers APAC + USA MAID/HEM. New suppliers (Eyeota monthly feed, potential MENA/EU) add to data_sources field once master catalog architecture is proven.

Product lineup (10 SKUs)

Free tier (3 products — top-of-funnel, full production metadata)

  • Husky Audience Segment Catalog — 295 branded segments with IAB Taxonomy 1.1 mapping. Geo: GLOBAL. Zero PII.
  • Husky Audience Coverage Atlas — 28 rows of country × platform MAID counts. Geo: APAC + USA. Transparent supply forecasting.
  • Husky × IAB Taxonomy 1.1 Crosswalk — 295 Husky → IAB Tier 1-4 mappings. Drop-in utility for DSP/SSP/CDP multi-vendor harmonisation.

Trial tier (3 products — 30-day limited trial, sample-only data, upgrade-to-paid flow)

Implementation (revised 2026-04-28): Trial shares contain stable deterministic ~1K-row hash samples of the production audience, not full data. Same query returns same rows — built for reproducible schema/quality/coverage evaluation, not freshness. Consumer wanting fresh production data → upgrade to Paid via Stripe.

  • Husky APAC Mobile Audience (Trial) — 1K SGP/Android MAID sample + catalog + coverage. Upgrades to APAC-7 Bundle.
  • Husky USA Mobile + HEM Audience (Trial)V_HEM_US_SAMPLE (991 rows, deterministic hash on hem) + reference catalog. Upgrades to USA Mobile+HEM Bundle.
  • Husky Cross-border APAC↔US Audience (Trial)V_MAID_APAC_PLUS_US_SAMPLE (1051 rows, deterministic hash on maid) + V_HEM_US_SAMPLE + reference catalog. Upgrades to Cross-border Bundle.

Implementation (revised 2026-04-28): Paid bundle listings are Snowflake Marketplace Paid (V2 monetization) with pricing plans. Consumer pays via Stripe → mount full production data zero-copy. Provider receives payouts to Stripe Express. Currently DROPPED in Marketplace until Stripe onboarding completes — will recreate when ready.

  • APAC-7 Bundle — SGP/HKG/JPN/KOR/TWN/AUS/NZL, 300 segments. $15K/mo (V2 flat-fee monthly).
  • APAC-13 Bundle — adds IDN/IND/MYS/PHL/THA/VNM. $25K/mo (V2 flat-fee monthly).
  • USA Mobile + HEM Bundle — 2.01B US MAIDs + 910M HEMs. $20K/mo (V2 flat-fee monthly). Currently DROPPED, recreate after Stripe live.
  • Cross-border APAC↔US Bundle — Flagship moat product. V2 usage-based or flat-fee TBD pending Partner Manager call. Currently DROPPED, recreate after Stripe live.

Full schema, pricing, compliance tags in docs/internal/husky_product_master.yaml.

Channel distribution

Channel SKU count Role
huskydata.io 10 Primary narrative, full catalog, SEO entry
Snowflake Marketplace 10 Full funnel (3 Free / 3 Trial / 4 Paid) — zero-copy delivery
AWS Data Exchange 7 Paid-heavy (4) + Trials reframed as Free (3) — AWS buyers prefer bundled SKUs
Eyeota Audience Platform 4 pipe feeds Distribution (not marketplace) — we push paid bundles to Eyeota, they onboard DSPs
LiveRamp Data Collaboration 2 priority Future Q3 2026 — identity partner for USA + Cross-border only

No mirroring. Each channel is a SUBSET of master, not a copy. Channel-specific overrides (e.g. AWS DX framing Trials as "Free", LiveRamp priority flags) live in channel_distribution.yaml.

Why this structure

The Snowflake policy lesson (hard-learned)

"Free listings are intended to provide full, production-ready datasets. Samples must be resubmitted as Limited Trial with a consumer-request flow."

This split is actually correct B2B commerce design:

  • Free = trust-building metadata (catalog, coverage, taxonomy). Zero-risk install, full product, buyer learns our shape.
  • Trial = time-bounded real data sample. 30-day conversion window. Buyer signals intent by clicking "Request access".
  • Paid = the actual revenue engine.

Our original "Free Sample" was a hybrid that satisfied neither bucket. Splitting unlocks 4× discoverability on Marketplace (free listings appear in general browse; trials appear in eval flows; paid appears in active buyer searches).

Why 3 Free SKUs, not 1

Different personas search different keywords:

  • Analyst searches "segment catalog", "audience taxonomy" → lands on Segment Catalog
  • BI team searches "audience reach", "coverage atlas" → lands on Coverage Atlas
  • Ad-tech architect searches "IAB Taxonomy 1.1", "segment mapping" → lands on Crosswalk

Each free listing is under 30 minutes to ship once the template is in place. ROI on the 3rd listing is high.

Cross-border as moat

The data asset exists because our APAC ingest pipeline happens to resolve against US MAIDs too. Competitors are geographically siloed:

  • LiveRamp / Experian / Acxiom: US-native, zero APAC behavioural depth
  • AlikeAudience / Eyeota (APAC): APAC-centric ingest, no US MAID reconciliation at our scale

The product writes itself: "Reach US diaspora / expats / APAC-outbound eCom shoppers on their US mobile devices using behavioural signals no US vendor has." Flagged HIGH priority on LiveRamp distribution when that channel opens.

Roadmap

Phase 1 (now — end April 2026)

  • Master catalog + channel distribution YAML committed
  • HUSKY_MOBILE_AUDIENCE_SAMPLE (= apac_mobile_trial) PUBLISHED 2026-04-24
  • Ship 3 Free listings on Snowflake (task #62)
  • Update huskydata.io/products pages from master catalog

Phase 2 (May 2026)

  • US Mobile Trial listing (task #60) — sample-aligned manifest approved + PUBLISHED 2026-04-28
  • Cross-border APAC↔US Trial listing (task #61) — sample-aligned manifest approved + PUBLISHED 2026-04-28
  • Sample views built (V_HEM_US_SAMPLE 991 rows, V_MAID_APAC_PLUS_US_SAMPLE 1051 rows) — deterministic hash, zero maintenance
  • Stripe Express onboarding (Snowsight Admin > Billing > Marketplace billing)
  • Snowflake Partner Manager engagement / Marketplace Operations case (for Paid V2 listing approval)
  • Recreate paid-1 (USA Mobile+HEM Bundle) and paid-2 (Cross-border Bundle) as Paid V2 listings once Stripe verified
  • render-snowflake.py adapter — auto-generate ALTER LISTING SQL from master
  • Segment × Country reach matrix evaluation (blocked on bridge-table-in-Snowflake)

Phase 3 (June–July 2026)

  • AWS DX 7-product rollout (requires resolving current AWS rejection appeal — task #55)
  • render-awsdx.py adapter
  • Paid bundle fulfillment infrastructure (APAC-7 first)

Phase 4 (Q3 2026)

  • LiveRamp partnership — USA + Cross-border only
  • Supplier diversification — Eyeota monthly pipe into master schema, new MENA/EU suppliers if signed

Risks and mitigations

Risk Mitigation
Snowflake re-rejects on Trial listing Manifest already conforms to policy; if rejected, specific feedback drives incremental fix via ALTER LISTING AS $$ … $$ REVIEW
Trial upgrade request flow with no paid bundle ready First 30 days, sales@ manually handles upgrade requests via custom contract — same flow used today for non-Marketplace leads
Cross-border product gives away moat in marketing Counter: US incumbents can't replicate regardless — exposure accelerates win rate on specifically the campaigns only we can serve
Channel matrix becomes stale with no CI Phase-2 adapter scripts add drift detection (master SHA in rendered channel manifest)

References

  • Master catalog: docs/internal/husky_product_master.yaml
  • Channel distribution: docs/internal/channel_distribution.yaml
  • Snowflake listing playbook: docs/reference/snowflake-listing-playbook.md
  • Current Snowflake listing SQL: docs/internal/snowflake_listing_v1.sql, snowflake_listing_v1_alter.sql
  • Manifest dump tool: docs/internal/dump_listing_manifest.sh
  • Compliance matrix (14 markets): docs/internal/compliance-matrix.md (pending)