Internal review · 12 November 2026

Coffee Kit: StoreLeads market evidence

Research and analysis date: 12 November 2026. Scope: the two supplied CSV exports, reproducible screening and deduplication, provider signals, and an exported-text audit. This is the market-evidence contribution to the wider Coffee Kit study. No merchant accounts were changed, no merchants were contacted, and no app was implemented.

Decision supported by this evidence

Test Coffee Kit with merchants who already sell coffee online, change their catalog, and use an existing subscription provider. The data supports investigating a coherent coffee catalog and selling experience around an existing stack. It does not establish willingness to pay, a need to replace subscription billing, or a serviceable market large enough for $1M ARR.

The strongest practical screening intersection is 1,073 active store identities with coffee and roaster-language signals, positive products_created_30, and a mapped subscription app detected. A narrower specialty-language intersection contains 634. These are database intersections awaiting merchant qualification, not sales opportunities already verified. Among Local-theme coffee signals, there are 268, including 144 with a mapped subscription app and 88 with roaster language. Neither a historical “500 Local coffee merchants” estimate nor the raw Coffee & Tea export should replace these observed definitions.

All calculated counts below come from the verified full v1.1 run: aggregates.json (local handoff artifact), long-form aggregate CSV (local handoff artifact), and methodology (local handoff artifact). Exact arithmetic and audit checks are recorded in verification-and-audit.json (local handoff artifact). Claims about the vendor's field definitions are separately cited to StoreLeads documentation.

What the inputs contain

Input Bytes Data rows Raw Active + Shopify rows Raw password-protected rows
storeleads-coffee-tea.csv 103,073,385 47,213 44,551 2,662
storeleads-uncategorized.csv 1,347,021,158 1,338,142 452,182 885,960
Total 1,450,094,543 1,385,355 496,733 888,622

The Active counts above are rows before deduplication. The exports contain Shopify rows; their Active label is an exported status, not evidence of recent orders or a currently working checkout. A text-audit example was labeled Active while its exported title referred to a password. The two supplied files are selected slices, not a complete export of all Shopify stores or all coffee businesses.

Input SHA-256 fingerprints:

coffee-tea:    c0f2ddb1b998df1f8e0febf1c07c50666c9676640fd1621b26c490a07843c7bd
uncategorized:d51267c79bd0c947b6f01e9a1828658632c2f6bf0a60b9b1b5e84190fa49ff54

The files' filesystem modification times are 12 November 2026, 09:43:04 UTC and 09:48:04 UTC. They do not prove the export or crawl dates. Neither CSV supplies a row-level observation timestamp. StoreLeads says its domain data is generally updated weekly and product data daily; that describes its service, not the freshness of every row in these files. StoreLeads update frequency.

Identity deduplication and precedence

analyze_storeleads.py, version 1.1 (local handoff artifact) streams each CSV with the Python standard library and uses SQLite for disk-backed identity matching. It processes Coffee & Tea first, then uncategorized. Hosts are lowercased, stripped of leading www. and a trailing dot, and extracted from domain strings. Rows merge on an equal normalized domain or an equal normalized platform_domain; linked matches merge transitively. Domain and platform-domain keys have separate prefixes. The first retained candidate payload wins, including its status and app list. Later duplicates are not combined into a union of apps or chosen by recency.

Deduplication result Exact count
Within-source duplicate row events, Coffee & Tea 985
Within-source duplicate row events, uncategorized 6,939
Cross-source duplicate row events 63
All unique identities, including non-candidates and protected stores 1,377,368
Identities in Coffee & Tea only 46,165
Identities in uncategorized only 1,331,140
Identities in both sources 63
Candidate identities, all statuses 52,136
Candidate identities with Coffee & Tea source membership 46,228
Additional uncategorized candidate identities 5,908
Active Shopify candidate identities 46,004

Reconciliation: 1,385,355 − 985 − 6,939 − 63 = 1,377,368. Source membership also reconciles: 46,165 + 1,331,140 + 63 = 1,377,368. There were no recorded bridge-merge events in this run.

This is an operational store-identity deduplication, not a legal-company or brand census. The script does not merge unrelated regional domains by company, follow redirects, use the supplied aliases/company IDs, or collapse registrable domains. Missing platform domains can leave duplicates unresolved. Equal hosts across the domain and platform-domain columns do not by themselves match unless another within-column key connects them. A shared platform domain may also merge storefront domains that represent distinct local buying decisions. StoreLeads itself distinguishes domains associated with a merchant and provides alternate-domain information; the chosen algorithm deliberately does not infer all those relationships. Domain and platform-domain definitions.

There were 1,056 candidate duplicate-payload conflict events, including 484 involving app lists, 19 status conflicts, 11 theme-vendor conflicts and 2 platform-domain conflicts. These event counts can overlap. No candidate country conflict was recorded. First-record precedence makes the answer reproducible but leaves measurement sensitivity; these results are not a latest-observation reconciliation. Non-candidate uncategorized rows have no retained payload, so the first later candidate can supply the retained candidate record.

Classification: what each cohort actually means

Classification normalizes case and accents and reads merchant name, title, description, meta description and domain. It excludes the latest product title, app list and category from the lexical decision. This avoids classifying a general store solely because its latest product is a coffee mug, although incidental coffee in store-level text still causes errors. Description and meta description can repeat the same source text; they are not independent corroboration.

The strong coffee expression includes coffee/coffea, espresso, cappuccino, English roaster forms, Kaffee, koffie, caffe, cafea, kahve, kopi, and selected Chinese, Japanese, Korean and Arabic coffee terms. A coffee substring in the domain also qualifies. Café alone is weak, because it can describe a venue or occur incidentally. French/Spanish cafe therefore does not count as strong coffee unless another signal matches. The tea classifier avoids weak English the and German tee, but remains imperfect. See the exact executable regexes and actual tea rule in methodology.json (local handoff artifact).

Roaster language requires a roasting expression plus either strong coffee or weak café language. Consequently the roaster cohort is not entirely inside the strong-coffee cohort. “Specialty” requires strong coffee and a specialty/single-origin/microlot or related expression. It indicates marketing language, not independent quality scoring or certification. Coffee-table expressions are warnings, not automatic exclusions.

All category-file identities enter the candidate pool, even without a lexical match. Uncategorized identities enter only when coffee, tea, equipment or café signals match. Identities with category-file membership retain that source label after cross-source deduplication.

Reproducible cohort key Exact active Shopify identities Interpretation
all_candidate_active 46,004 Category candidates plus lexical uncategorized additions
coffee_tea_active 43,592 Deduplicated category-source candidates
uncategorized_additions_active 2,412 Additional active lexical candidates
coffee_tea_coffee_active 23,805 Category-source strong coffee signals
uncategorized_additions_coffee_active 1,155 Additional strong coffee signals
coffee_active 24,960 Combined strong coffee signals
roaster_active 5,990 Roaster language plus coffee or weak café
coffee_roaster_active 5,820 Strong coffee AND roaster language
specialty_coffee_active 5,919 Strong coffee AND specialty language
specialty_roaster_active 2,606 Strong coffee AND roaster AND specialty language
tea_without_coffee_active 8,969 Tea signal without strong coffee; can include weak café
equipment_only_active 217 Equipment signal without strong coffee or tea
cafe_weak_active 2,411 Weak café without strong coffee; overlaps other flags
coffee_recent30_active 4,799 Strong coffee and positive 30-day product-creation field
coffee_recent90_active 8,558 Strong coffee and positive 90-day product-creation field
coffee_roaster_recent30_active 1,617 Strong coffee, roaster and positive 30-day field
coffee_roaster_recent90_active 2,688 Strong coffee, roaster and positive 90-day field
specialty_roaster_recent30_active 883 Specialty roaster and positive 30-day field
specialty_roaster_recent90_active 1,398 Specialty roaster and positive 90-day field
krown_candidate_active 558 Candidate with Krown vendor signal
krown_coffee_active 353 Krown vendor and strong coffee
krown_coffee_roaster_active 120 Krown vendor, strong coffee and roaster
local_candidate_active 430 Krown vendor and exact normalized Local theme name
local_coffee_active 268 Local and strong coffee
local_roaster_active 94 Local and roaster language, including weak café
local_coffee_roaster_active 88 Local, strong coffee and roaster

The uncategorized file adds 4.63% of the final strong-coffee pool, or 4.85% relative to the category-source strong-coffee pool. It adds 31 roaster-language primary records, only 5 of which have specialty language. Much of its additional lexical volume is broad or incidental; processing 1.3 GB does not imply discovering a comparably large new target market.

For mutually exclusive totals, use the primary-segment priority: specialty roaster → other roaster → coffee-and-tea → equipment-oriented coffee without bean language → other coffee → tea → equipment → weak café → no signal. Flags and cohorts above overlap. Within the 43,592 category-source active identities, 9,704 have no classifier signal. These are unresolved records, not 9,704 confirmed non-coffee stores. Within the strong-coffee pool, 48 have a coffee-table warning. Excluding those alone would leave 24,912, but would not remove the other demonstrated errors.

Audit: what was actually reviewed

The sample contains 197 active candidate identities: the 12 lowest SHA-256 values of source|primary_segment|domain per source/primary-segment stratum, or all records where fewer than 12 exist. There are 108 category-source records and 89 uncategorized additions; the latter specialty-roaster stratum has only five records. A separate control contains the 60 lowest hash-selected uncategorized active lexical-negative rows. Candidate sampling is after identity deduplication; negative controls are selected from rows during streaming and are not guaranteed a deduplicated probability sample.

I reviewed the exported identity text and latest product title, including non-English text where interpretable. This was a single-analyst text audit, not live storefront, order, ownership or complete-catalog verification. Latest product evidence is allowed in the audit but never retroactively changes the classifier's counts. Sparse records remain insufficient rather than being guessed negative.

Source and primary segment Reviewed Coffee-goods text or latest-product support Insufficient Coffee as secondary assortment
Category: weak café 12 7 4 0
Category: coffee and tea 12 8 1 0
Category: equipment-oriented coffee 12 1 0 0
Category: equipment without coffee 12 1 3 0
Category: no signal 12 2 5 0
Category: other coffee 12 7 3 0
Category: roaster language 12 12 0 0
Category: specialty roaster 12 12 0 0
Category: tea only 12 0 0 0
Uncategorized: weak café 12 1 2 0
Uncategorized: coffee and tea 12 3 0 1
Uncategorized: equipment-oriented coffee 12 0 0 0
Uncategorized: equipment without coffee 12 0 0 0
Uncategorized: other coffee 12 0 1 1
Uncategorized: roaster language 12 9 2 1
Uncategorized: specialty roaster 5 5 0 0
Uncategorized: tea only 12 0 0 0

The remaining reviewed records in each row have equipment, tea, café/service, functional/alternative-coffee, café-supply or unrelated/incidental descriptions. The full mutually exclusive labels and reasoning are in the private reviewed candidate audit (local handoff artifact), with aggregate labels in verification-and-audit.json (local handoff artifact).

Concrete error mechanisms, referenced by private audit ID:

Among sampled records with a strong-coffee flag, 39/59 category-source records have direct coffee-goods text support; 15/51 uncategorized additions have text or latest-product support. Those are audit descriptions of this deliberately stratified sample, not population precision estimates. Coffee-goods support includes pods/instant, and still does not establish own roasting, premium-app fit or current stock. No weighted market correction or statistical confidence claim is applied.

Of the 60 lexical-negative controls, 22 have another-business description and 38 are too sparse to classify confidently. None showed obvious coffee-goods evidence in the inspected text. This does not measure recall: the control is tiny relative to the uncategorized file, name-only stores remain unresolved, and the category-file audit already demonstrates language and sparse-text misses. Private negative-control review (local handoff artifact).

Apps and providers: observed detection, not subscription revenue

The analyzer extracts exact Shopify App Store slugs from the exported installed_apps URLs and matches a fixed provider dictionary. Each identity counts once per provider and once per functional group. A store can match multiple providers. Provider incidences must therefore not be added to produce store counts. Display-name keyword signals and exact technology-name signals are kept as separate dimensions, not silently merged into the exact-URL result.

Cohort Denominator Subscription detected Loyalty detected Email/marketing detected No mapped group
Strong coffee 24,960 9,590 (38.42%) 3,187 (12.77%) 6,511 (26.09%) 12,568
Roaster language, including weak café 5,990 3,335 (55.68%) 1,137 (18.98%) 2,063 (34.44%) 2,103
Strong coffee + roaster 5,820 3,270 (56.19%) 1,115 (19.16%) 2,008 (34.50%) 2,016
Specialty roaster 2,606 1,642 (63.01%) 589 (22.60%) 1,065 (40.87%) 727
Krown + strong coffee 353 185 (52.41%) 60 (17.00%) 157 (44.48%) 113
Local + strong coffee 268 144 (53.73%) 47 (17.54%) 114 (42.54%) 85

“Email” here is the script's broad mapped marketing-tool group, including tools such as Privy and Attentive. It is not a clean census of email-service providers. Loyalty includes multifunctional providers; detecting one does not prove an active points program or café stamp-card workflow.

Subscription provider Strong coffee, n=24,960 Strong coffee + roaster, n=5,820 Specialty roaster, n=2,606 Local coffee, n=268
Recharge 2,073 934 478 37
Seal 2,383 892 454 38
Appstle 2,033 714 373 34
Shopify Subscriptions 1,561 436 213 26
Bold 540 252 112 4
PayWhirl 1,154 158 68 5
Recurpay 433 94 43 8
Loop 234 81 42 8
Skio 69 12 5 0

These are the main mapped providers, not the complete dictionary. Within strong coffee + roaster, mapped subscription-provider incidences sum to 3,623, while the unique group has 3,270 stores. The excess 353 incidences are not 353 additional stores and do not identify how many stores use multiple engines operationally. The exact complete provider counts, including the long tail, remain in the aggregates.

For loyalty in that same 5,820 cohort, Appstle is detected on 691, Smile on 314, Yotpo/Swell on 50, LoyaltyLion on 43 and Rivo on 42. For email/marketing, Klaviyo is detected on 1,209, Mailchimp on 769, Omnisend on 185, and Privy on 123. Exact technology-name matching finds Mailchimp on 796, a different measure from its mapped app-URL count. Klaviyo and Recharge technology and URL counts coincide in this cohort; coincidence is not independent validation. The current App Store listings confirm the mapped Appstle, Smile and Rivo identities and product categories. Appstle subscriptions, Appstle loyalty, Smile, Rivo.

Coverage and omissions matter:

The defensible interpretation is “detected among the mapped providers.” It is neither complete category penetration nor an estimate of whitespace. Integration feasibility must be established separately with provider documentation and a development-store test.

Catalog-change intersections and recurring-work hypothesis

Cohort Full cohort Positive 30-day creation field With mapped subscription, within 30-day group Positive 90-day creation field With mapped subscription, within 90-day group
Strong coffee 24,960 4,799 2,312 (48.18%) 8,558 3,893 (45.49%)
Strong coffee + roaster 5,820 1,617 1,073 (66.36%) 2,688 1,722 (64.06%)
Specialty roaster 2,606 883 634 (71.80%) 1,398 974 (69.67%)

In the 5,820 coffee + roaster cohort, 1,554 have both subscription and email-group detections and 515 have all three groups. In specialty roaster, those intersections are 859 and 300. In Local coffee, they are 81 and 27. This supports testing a coordinated experience and selected integrations. It does not prove merchants want a replacement for each tool.

Positive products_created_30/90 means a positive value in the supplied field. It does not prove a coffee-lot rotation: new merchandise, imported duplicates, variants represented as products, and catalog migrations can also create records. A zero does not prove no work; a merchant may edit an existing product or replace a lot under a permanent club SKU. The public domain-field documentation does not clearly define these exact CSV creation columns. Treat them as exported catalog-change proxies until their generation and observation windows are confirmed.

Within strong coffee, 15,686 have a positive 365-day creation field. Within coffee + roaster, 4,158; specialty roaster, 2,031. The 30-, 90- and 365-day groups are nested time windows, not counts to add. No repeat monthly behavior or retention has been observed from a single snapshot.

Krown and Local: distribution proxies with a compatibility gap

Krown cohorts require theme_vendor to contain krown after normalization; Local also requires the normalized theme name to equal local. This is stronger than theme name alone, but remains an exported vendor signal. Of all active candidates, 561 have a Krown theme-name allowlist match and 558 also have the vendor signal; the three additional name-only matches are not promoted into Krown cohorts.

Within those 558 candidate identities, the detected themes are Local 430, Combine 41, Kingdom 33, Borders 22, Split 19, Highlight 11, and Seventh 2. Category membership accounts for 547; lexical uncategorized additions account for 11. This is not the complete Krown installed base: uncategorized Krown rows without a lexical signal were intentionally excluded from the candidate aggregates.

The 430 Local candidates include 268 strong-coffee identities, 79 tea-only primary records, 62 no-signal records and other weak/adjacent groups. The 94 Local roaster-language identities include six without strong coffee, explaining the stricter 88 coffee + roaster count. Within Local strong coffee, 46 have specialty-roaster language, 70 have a positive 30-day creation field, and 135 have a positive 90-day field.

The prior founder-reported approximately 500 Local coffee merchants and roughly 5,000 Local installed stores describe different, unverified populations. The current screen neither confirms them nor proves they are wrong. It excludes language misses, depends on StoreLeads detection, deduplicates differently, and covers two selected exports. Founder context is preserved in the Coffee Kit brief (local handoff artifact) and wider Krown brief (local handoff artifact).

Crucially, no theme_version column is supplied. platform_version is not a substitute for theme release. The theme-change fields are not an installed-release or customization audit. None of these counts establishes compatibility with Coffeetale/Hydra components, an affordable upgrade, current support entitlement, an identifiable buyer, or permission to contact. Join this screen to dated internal active-store/version records before calling it a reachable distribution channel. StoreLeads documents theme version as a separate attribute, reinforcing the gap in the supplied export. Theme attributes.

Geography and operational implications

Exported country code Strong coffee Strong coffee + roaster Specialty roaster Local strong coffee
US 13,073 2,840 1,138 111
GB 1,751 490 318 27
AU 1,334 493 273 16
CA 1,247 404 162 17
DE 926 170 84 9
JP 673 118 12 5
Missing 203 32 18 0

US, GB, AU, CA, NZ and IE together account for 17,813/24,960 strong-coffee identities and 4,367/5,820 coffee + roaster identities. This suggests an English-first research and support motion could cover a substantial observed slice, with US scheduling plus UK/Australia needs. It is an inference, not proof of operating language or market preference; names, country codes and languages are imperfectly aligned. Country represents the vendor's location classification, not shopper demand or every jurisdiction in which the merchant sells. Country definition.

Catalog size, modeled sales and spend cannot establish affordability

StoreLeads explicitly defines products_sold as the number of distinct catalog products. It does not measure units sold, monthly orders or subscription contracts. Within coffee + roaster, 3,300/5,820 have at most 25 catalog products, including 134 zeros; 4,420 have at most 50. Small catalog size can coexist with substantial sales. Conversely, 50 products need not mean 50 coffee lots. There are 106 exported headless stores in this cohort, for which the vendor says catalog counts can be estimates. Products Sold definition.

All 24,960 strong-coffee records have a positive estimated monthly sales value, but these are model outputs. The vendor says traffic estimates carry the greatest weight in its sales model. They are not observed revenue or a merchant budget. No sales-based “can afford $99” or ARR-weighted TAM is inferred. Sales-estimation method.

monthly_app_spend is numeric and positive for 6,811/24,960 coffee signals, 2,247/5,820 coffee + roaster signals, and 1,076/2,606 specialty-roaster signals. The remaining values are missing/unparseable, not zero spending. Even populated values are not verified invoices or incremental budget for Coffee Kit; the vendor describes this as estimated app spend. StoreLeads data offer. Obtain current app invoices and account for combined Coffee Kit, subscription, loyalty and email costs in a later paid test.

Revenue arithmetic, without a market forecast

At $99 realized monthly ARPU, 500 active paying stores produce $594,000 ARR; 842 produce $1,000,296. Acquiring 842 would mean the following fractions of today's unqualified screen, before compatibility, access, adoption, churn or price concessions:

Screening denominator Count 842 divided by denominator
Strong coffee 24,960 3.37%
Strong coffee + roaster 5,820 14.47%
Specialty roaster 2,606 32.31%
Coffee + roaster + 30-day creation signal + mapped subscription 1,073 78.47%
Local strong coffee 268 314.18%

These ratios are a scale check, not required attainable conversion rates or mutually exclusive market segments. The target may later broaden beyond a current-job screen, and false negatives also exist. Today the data cannot justify assuming 10% of a verified 8,420-store eligible market: that eligible denominator has not been established. Even selling to every one of the 268 Local coffee signals at $99 would produce only $318,384 ARR, and 100% adoption is not a planning assumption. See economics-validation.md for support-capacity and acquisition scenarios.

The commercially meaningful funnel still requires separate measurements: observed identities → current coffee goods → recurring job → compatible theme/provider → reachable decision-maker with a permissible contact route → activated pilot → paid customer → renewal. None of the missing stages receives an assumed default conversion in this report.

Private candidates and the next evidence to collect

A private 36-record screening shortlist is saved at screening-candidates-no-contacts.csv (local handoff artifact). It is a subset of the deterministic audit with roaster-language strata and supporting coffee text; known retailer-only and insufficient cases are excluded. It is not a ranked universe, a representative pilot sample, or 36 qualified buyers. No email, telephone, social-account or street-address fields are included. New private artifacts have mode 0600 inside a mode 0700 directory. Two incidental email strings in a source description were redacted from the new sample copy; prior artifacts remain untouched. The public portion of this report uses audit IDs rather than listing candidate domains.

For the larger study, the next useful work is a small merchant-observation and paid-test design, separately authorized before outreach:

  1. Join internal Krown shop identities and versions to identify actual supported, current stores and an appropriate contact route. Measure how many of the 268 coffee signals survive a current catalog and compatibility check.
  2. Qualify both an own-roaster and a multi-roaster retailer; the audit shows these are different workflows. Include stable blends as a control alongside seasonal coffees.
  3. Observe the next real product launch or lot change. Record source documents, time spent, existing metafields, who reviews facts, current provider, subscription stock/substitution behavior, and the merchant's next repeat job.
  4. Test one provider integration on its actual API and permissions before promising control of existing contracts. Recharge, Seal and Appstle are sensible research candidates by observed incidence; prevalence alone does not choose the cheapest viable integration.
  5. Show the stated Coffee Kit price alongside the merchant's existing stack cost. Seek payment and a second deliberate use, then renewal; detection and interview enthusiasm cannot substitute for those outcomes.

No merchant interviews, verified invoices, price acceptance, conversion uplift, retention observations or provider API tests were performed for this market analysis. Problem severity, willingness to pay and supportable gross margin therefore remain unknown, rather than receiving invented validation scores. The cheapest commercial falsification is a merchant's next real coffee launch and repeat change, using its existing subscription provider and a stated ongoing price.

Reproduction and verification

The supplied previous thread was read with outputs to recover its findings. At restart no StoreLeads analyzer process was running. The saved data/storeleads directory already reported v1.1. To avoid relying on that version label alone, I ran the unchanged v1.1 analyzer over both complete inputs in a new directory, preserving all prior outputs. The new run completed in 91.45 seconds, with macOS-reported peak RSS 116,523,008 bytes (about 111.1 MiB). It exactly matched the prior inputs, raw counts, deduplication results and every cohort/dimension count.

From LOCAL/coffee-kit, reproduce in a fresh destination:

python3 research/coffee-kit-study/scripts/analyze_storeleads.py \
  --coffee LOCAL/Downloads/storeleads-coffee-tea.csv \
  --uncategorized LOCAL/Downloads/storeleads-uncategorized.csv \
  --out research/coffee-kit-study/data/storeleads-v1.1-reproduction

python3 research/coffee-kit-study/scripts/finalize_market_evidence.py \
  --out research/coffee-kit-study/data/storeleads-v1.1-reproduction \
  --prior research/coffee-kit-study/data/storeleads

Do not use --limit for final evidence. Do not rerun into an existing artifact directory. The finalizer preserves aggregate counts, checks substantive equality, reproduces the explicit analyst audit labels, removes incidental plain-text email strings from new private sample copies, and checks for contact-column leakage. It does not discover new truth or automatically label different future snapshots. Its fixed 197-row audit assignments are tied to these source hashes and deterministic sample ordering.

Verified checks include raw-row/dedup arithmetic; source memberships; category-source plus uncategorized coffee reconciliation; cohort subset relationships; per-cohort primary-segment and app-combination sums; detected plus not-detected group totals; complete audit-label coverage; and absence of email strings and dedicated contact fields in all finalized private CSVs. Runtime/RSS fields naturally differ between runs; aggregate JSON file hashes can therefore differ while substantive counts remain identical.

The original analyzer's methodology says no contact fields are retained; that is true for dedicated columns but did not prevent an email embedded in a description. The finalization step closes that narrower output issue for the new deliverable. The original private sample remains preserved as requested.

This report separates observed export values, deterministic calculations, analyst text judgments, vendor definitions, and product hypotheses. It establishes a reproducible candidate screen and a useful provider pattern. Current merchant eligibility and payment demand remain the work that can reverse the product recommendation.

Source: market-evidence.md The complete Markdown handoff and private datasets remain in the local project. This web edition includes selected supporting visuals and scenario downloads.