- Live Singapore-serving DTC shop
- Physical visual product
- Business contact or named decision maker
- No exclusion category
- Valid evidence (URL + quote + observed_at)
Acting as a principal outbound GTM engineer and RevOps specialist: design an automated, hyper-personalized outbound pipeline for a11studio.pro over a 252-prospect list — Keenable MCP enrichment architecture, a 1–100 ICP model with three buyer personas, technical trigger mapping, sub-75-word emails with guarded dynamic variables and fallbacks, and a deliverability/execution plan for Smartlead, Instantly, or Clay — as a structured, execution-ready master guide.
This blueprint is built from 31 evidence rows across 13 independent hosts: the supplied 252-prospect Singapore report (28 Tier A+, 118 A, 57 B, 49 C; 147 with public contacts; 102 secondary discoveries needing recheck), a11 Studio's live offer page, official Smartlead and Instantly API docs, Google sender requirements, Singapore IMDA/PDPC guidance, and W3C/Chrome/web.dev audit standards. The 252 per-prospect records were described by the source report but were not available as structured rows here — this is the execution architecture; persona and score columns are produced after enrichment, not pre-assigned.
Nine stages left to right. Blue = evidence work inside Keenable; orange = hard gates that can suppress a prospect; dark = external execution (scanners, verification, sequencer). Hover a stage for detail.
a11 Studio's current offer (a11studio.pro) is 16 static ads per month, four per week, copy included, unlimited revisions, delivered through WhatsApp — plus a free redesign of one stale ad and a 72-hour CTR refund test. No video, no ad management, no engineering remediation. The source report's creative-service fit model and the user's examples (engineering hires, design stacks, WCAG, UI performance) therefore shift to supporting conversion context. The principal commercial signals become: observable paid-social creative need, promotion/launch cadence, visual-product suitability, repeat-purchase economics, contactability, and evidence quality.
Weights of the eight components; a component scores above zero only when a sourced, dated evidence quote exists. Engineering hires and accessibility gaps live inside the friction/capacity components, never as primary weight.
Cares about speed, risk, and cash efficiency. Default route when no growth or marketing title exists.
Cares about weekly creative testing, promotions, CTR and conversion.
Cares about production bottlenecks, asset consistency, landing-page/creative handoff and measurable experiments. Never force a Head of Engineering onto a small DTC brand; each account keeps a primary persona and a fallback role.
Keenable SELECT is read-only DuckDB over WEB_SEARCH/WEB_FETCH and saved result sets — the evidence and extraction layer. Lighthouse/PageSpeed, axe-core, email verification and sequencer writes all run outside it, then merge in the warehouse or Clay.
-- Stage 2–3: identity + commercial signals, ≥6 diverse queries per WEB_SEARCH, batched by company
SELECT url, title, snippet FROM WEB_SEARCH(queries => [
'"{company}" site:{domain}', '{company} Singapore promotion sale',
'{company} new launch product', '{company} subscription bundle',
'{company} careers hiring marketing', '{company} founder OR "head of growth" linkedin']);
-- Stage 3b: fetch official pages, extract one company-level object
SELECT SEM_EXTRACT(content, 'offer, promotions, subscription_or_bundle,
decision_maker_name, title, public_business_email, public_whatsapp,
recent_company_milestone — null when absent') AS company_obj
FROM WEB_FETCH(urls => [home, product, promo, careers, accessibility]);
-- Repeated facts: launches, jobs, products
SELECT SEM_EXTRACT_ALL(content, 'each product launch: name, date, url') FROM WEB_FETCH(...);
-- Relevance gate WHERE SEM_MATCH(snippet, 'DTC physical visual product sold online in Singapore')
-- Canonical dedupe: SEM_NORM only inside GROUP BY; final GROUP BY yields one row per company
GROUP BY SEM_NORM(company_name)
-- Stage 7: one gated company row out
SELECT prospect_id, company_name, canonical_domain, icp_score, score_band, persona,
specific_pain_hook, evidence_url_1, evidence_quote_1, confidence_1, ready_to_send
FROM merged WHERE evidence_url_1 IS NOT NULL AND observed_at >= freshness_floor
AND suppress_reason IS NULL;
Ingest the 252-row table; verify identity on official domains; batched search for offers, launches, subscriptions, bundles, promotions, careers, decision makers.
BuiltWith/Wappalyzer-like detection, PageSpeed Insights/Lighthouse, axe-core; push scanner JSON into the warehouse/Clay (developers.google.com, web.dev).
Keenable contextualizes scanner output against official/news/careers sources; cross-source merge with freshness/evidence gates; export CSV/JSON or webhook into Clay → sequencer.
{ "prospect_id":"sg-0001", "company_name":null, "canonical_domain":null, "website_url":null,
"source_tier":"A", "original_score":null, "niche":null, "country":"SG", "source_url":null,
"verification_status":null, "observed_at":null,
"ecommerce_platform":null, "cms":null, "analytics_tags":null, "ad_pixels":null,
"page_builder":null, "checkout_provider":null, "design_system_evidence":null,
"lighthouse_mobile_performance":null, "LCP_ms":null, "INP_ms":null, "CLS":null,
"wcag_automated_fail_count":null, "wcag_issue_types":null, "tech_stack_gap":null,
"recent_launch":null, "recent_promotion":null, "subscription_or_bundle":null,
"product_count":null, "recent_hiring_signal":null, "funding_or_revenue_signal":null,
"meta_ad_activity":null, "active_ad_count":null, "latest_ad_date":null,
"decision_maker_name":null, "title":null, "persona":null, "linkedin_url":null,
"public_business_email":null, "public_business_phone":null, "public_whatsapp":null,
"email_validation_status":null, "recent_company_milestone":null, "specific_pain_hook":null,
"evidence_url_1":null, "evidence_quote_1":null, "confidence_1":null,
"score_components":{}, "icp_score":null, "score_band":null,
"suppress_reason":null, "ready_to_send":false }
Null is required when absent. Never inferred: employee count, revenue, ad spend, compliance status, personal email. active_ad_count only when directly observed.
Base lengths 58, 55 and 56 words; variable budgets (milestone ≤18 words, hook ≤22) keep rendered totals under 75. Lint after render; route 3 falls back to route 2, then 1.
Clay is the orchestration/QA table. Pick one sequencer — Smartlead or Instantly — not both initially. Sync only ready_to_send=true rows; prospect_id is the idempotency key; one campaign per persona × priority; upload as drafts; seed-test; activate only after QA; webhook replies/bounces/unsubscribes back to the master suppression table. Append-only audit fields; never overwrite source evidence. Confirm current account-specific docs and rate limits before production.
Smartlead (api_key as query parameter)
POST /campaigns/create?api_key=KEY -- create campaign
POST /campaigns/{id}/sequences?api_key=KEY -- save sequences: [{seq_number, email_body, delay:{days}}]
body supports double-curly custom fields: {{first_name}}, {{specific_pain_hook}} ...
GET /campaigns/{id}/leads?api_key=KEY -- leads return custom-fields object, max 100/page
Instantly API v2 (Bearer / API key)
POST /api/v2/leads -- create lead
PATCH /api/v2/leads/{id} -- update custom variables payload
POST /api/v2/campaigns · PATCH /api/v2/campaigns/{id} · POST /api/v2/campaigns/{id}/activate
POST /api/v2/campaigns/{id}/variables -- campaign variables
Track delivery, bounce, complaint, unsubscribe, positive reply, meeting, opportunity and client — sliced by persona, score band, hook and source confidence. Hold out 10–15% per high-volume segment, or A/B exactly one element at a time; never claim significance on tiny samples. Feed reply labels and outcomes into the weights monthly with versioned scoring_model_version and message_version.
| Section | Document | Source |
|---|
Several rows are duplicate official URL variants of the same document; treat those as corroborating documentation, not separate independent sources. No URL backs more than half the rows.
Method: 31 shaped evidence rows across 13 independent hosts, gathered via Keenable SELECT web search and fetch over the supplied prospect-universe report, a11studio.pro, Smartlead and Instantly API documentation, Google sender guidance, Singapore IMDA/PDPC publications and W3C/Chrome/web.dev audit standards. Counts (252/28/118/57/49/147/102) are taken from the source report's own aggregates. Per-prospect records were not available as structured input; scores and personas are produced after enrichment. Some duplicate URL variants were kept as corroboration. Long findings truncated for space.