Highlights
- Claude Code as the engineering-layer model across all three systems: Claude writes, reviews, and refactors 100% of the production code, running primarily on Claude Sonnet 5.
- Recursive grid-based discovery that breaks past Google Places’ 60-result pagination ceiling via adaptive cell-splitting and a 5-axis degeneracy cascade (type family, price level, rating floor, sort order, name tokens).
- Coverage measured, not assumed: an independent second traversal feeds a mark-recapture estimate of how much of the search provider’s own index the discovery walk reached.
- LLM-based place classification replaced a hand-curated allowlist of ~25–30 place types that covered only 3 hardcoded profiles and produced both false positives and false negatives.
- Multilingual enrichment in one structured LLM call – subtitle, description, SEO metadata, and marketing copy generated in 7 fixed languages per business, under enforced character limits and correctness constraints.
- Race-safe, cross-pipeline deduplication: an atomic send ledger (unique index on Google Place ID + campaign) guarantees no business is ever contacted twice, across pipeline runs or campaigns.
- 4 automated outreach campaigns, each a 7-email sequence paced over 30 days, driving business owners to claim and verify their auto-generated directory listings.
- Legacy campaign history fully consolidated from a prior outreach account into the account now in use, with no loss of contact-history integrity.
Client
VayaPin, Inc., a digital-addressing platform that gives every person, business, and location a precise, shareable digital address (a “Pin”). SPD Technology is VayaPin’s software engineering partner, delivering the engineering work described below.
Product
Vayapin’s product is a digital address system that converts any GPS coordinates into a short, unique, and personal address. SPD Technology delivers Claude Code as the engineering-layer model (primarily Claude Sonnet 5) across three connected systems: an automated business-discovery and enrichment pipeline that produces ready-to-publish Pins for the platform’s directory; a cold-email outreach layer built on that pipeline’s output, inviting each discovered business to claim and verify its own auto-generated listing; and the consolidation of a prior outreach account’s campaign history into the account now in use.
Claude’s usage is confined to the engineering layer: it writes, reviews, and refactors the code powering all three systems, and is not embedded as an end-user-facing AI feature of VayaPin’s own product.
Goals and objectives
Discovery & Data Quality
- Discover real businesses at regional/national scale, past the structural limit of naive one-query-per-city approaches
- Measure discovery coverage rather than assume it, so gaps in the directory are visible instead of silent
- Replace a hardcoded, error-prone category-classification allowlist with an approach that generalizes across place types and profiles
- Source each enrichment field (contact details, coordinates, email, marketing copy) from the right authoritative channel, with correctness enforced as a requirement rather than left to convention
Outreach & Deduplication
- Never contact the same real-world business twice — across pipeline runs that rediscover it, and across outreach infrastructure that predates the pipeline
- Consolidate a prior outreach account’s campaign history into the current account without creating duplicate or conflicting contact records
- Drive business owners to claim and verify their auto-generated listings through a structured, multi-touch campaign
Overall: build a location directory that can scale from a city to a region to a country – populated automatically and enriched to a standard the outreach layer can act on.
Project challenge
In Discovery
- A location directory is only useful once it’s populated, and populating one by hand does not scale past a city
- Google Places caps results per query at 60, so naive query-per-city discovery silently under-collects with no signal that it happened
- A hand-curated allowlist of ~25–30 place types per profile, covering only 3 hardcoded profiles, produced both false positives and false negatives and could not generalize to new profiles
- Each discovered business needs contact details, SEO metadata, and marketing copy in several languages before it can be published — assembled correctly, not just plausibly
In Outreach
- Reaching each business owner to claim or verify a listing requires never contacting the same real-world business twice — across pipeline runs that rediscover it and across outreach infrastructure that predates the pipeline
- A prior outreach account’s campaign history needed to be folded into the account now in use without creating duplicate or conflicting contact records
Solution
SPD Technology built the platform’s engineering layer on Claude Code, spanning discovery, enrichment, and outreach as three connected systems.
Business Discovery at Scale
- Grid-based discovery: resolves a requested location to a real geographic area via a geocoder, lays a recursive grid over that area’s bounding box and polygon, and walks it cell by cell via Google Places Text Search
- Adaptive splitting on raw counts: a cell splits when its raw, unfiltered result count saturates the provider’s 60-result pagination window, or when it straddles the area’s real boundary — reading the raw count rather than the post-dedup, post-filter count, so a saturated cell that filters down to a few keepers is never mistaken for one that never needed splitting
- 5-axis degeneracy cascade (type family, price level, rating floor, sort order, name tokens) for cells too small to subdivide but still saturated
- Measured coverage: a second, independent traversal walks the same territory via Nearby Search to feed a mark-recapture estimate of how much of the search provider’s own index the walk reached — explicit that this bounds recall against Google’s index, not the real world
- LLM-based category classification applied after the fact to the place types actually observed, replacing the old hardcoded, 3-profile allowlist
Intelligent Enrichment
- Deliberately separated sourcing: website and phone from Google Place Details, coordinates from the geocoder, and email — the priority field — from a four-step chain (homepage → contact/about pages → LLM extraction from fetched text → targeted web search)
- One structured LLM call producing subtitle, description, SEO metadata, and marketing copy in 7 fixed languages, against enforced character limits
- Correctness treated as a requirement, not house style: coordinates never come from the LLM; marketing copy asserts no unverifiable factual claims about the business; fetched page text is handled as untrusted data, never as instructions
Systematic Outreach & Deduplication
- Cross-pipeline send ledger keyed on Google Place ID + campaign — real-world business identity plus campaign, not the pipeline-scoped Pin — so any pipeline can check whether a business has already been emailed for a given campaign
- Atomic claim operation: the unique index is the race gate; a losing writer either reclaims a failed or stale in-flight row through one conditional update with a fresh claim token, or is correctly told the business is already contacted or in flight elsewhere
- A successful send is absorbing — the only way back out is an explicit single-place resend that records its reason
- Four configured campaigns, each a 7-email sequence paced at 0, 3, 7, 11, 16, 21, and 30 days after the preceding email
- Full consolidation of the prior outreach account’s campaign history into the account now in use
Claude Code’s Role
Claude Code, running primarily on Claude Sonnet 5 and Claude Opus 5 this cycle, writes, reviews, and refactors the code across all three systems.
Tech Stack
-
Claude Code
Our results
- Discovery pipeline operational: recursive grid-walk with adaptive splitting and 5-axis degeneracy cascade, producing ready-to-publish Pins.
- Coverage is now a measured quantity via mark-recapture estimation, rather than an unverified assumption.
- Category classification generalized beyond the original 3 hardcoded profiles via LLM classification, removing a known source of false positives and false negatives.
- Enrichment pipeline live: structured, multilingual content (7 languages) generated per business under enforced correctness constraints.
- 4 configured 7-email campaigns running on a 30-day cadence, protected end-to-end by an atomic, race-safe deduplication ledger.
- Legacy campaign history fully consolidated into the account now in use, preserving contact-history integrity across the transition.
Highlights Client FreeForm Agency focuses on Branding, Consumer Engagement, online communities, Public Relations, and Social Media Management. Product RabbitCards...
Explore Case