{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Haoli Global",
  "home_page_url": "https://haoliglobal.com/",
  "feed_url": "https://haoliglobal.com/feed.json",
  "description": "Field-tested systems for industrial outbound from China into African, Middle Eastern, and Southeast Asian markets, with real campaign data.",
  "language": "en",
  "authors": [
    {
      "name": "Li Hao",
      "url": "https://haoliglobal.com/about/"
    }
  ],
  "items": [
    {
      "id": "https://haoliglobal.com/blog/alibaba-chargeback-supplier-exposure",
      "url": "https://haoliglobal.com/blog/alibaba-chargeback-supplier-exposure",
      "title": "Alibaba’s Chargeback Cover Stops at $2,000 a Quarter",
      "summary": "A buyer can pay you $12,000 on a card. If they charge it back, Alibaba covers $2,000 a quarter. Everything between those two numbers is yours.",
      "content_text": "Two numbers, both from Alibaba’s own seller backend.\n\nA buyer can pay you up to $12,000 on a card. If that buyer charges it back, Alibaba’s compensation tops out at $2,000 per quarter.\n\nEverything in between is yours.\n\nI sat through five days of Alibaba’s official supplier training in Nanjing at the end of July. Nobody in that room reacted to those two numbers, which bothered me more than the numbers did.\n\n## What it looks like from this side of the screen\n\nA chargeback shows up as a notice in the backend, buried under after-sales and refund management. You get about seven days to upload a defence file. The platform reviews it, and if it passes review, forwards it to the issuing bank.\n\nThat’s the end of the platform’s involvement. The trainer said so himself: once the card network is in it, Alibaba can’t move the outcome. The issuing bank decides, and issuing banks exist to keep cardholders happy.\n\nThe window is longer than anyone expects. Roughly 120 days from payment as standard, stretching to 540 on certain grounds. So a shipment you built, shipped, got paid for and withdrew in March can land back on your desk the following January, with a week to defend it.\n\nCards were, according to the trainer, around 70% of platform volume. I can’t verify that and I’m passing it on as a claim. But it explains why a compensation scheme exists at all.\n\n## The buyers already know\n\nNone of this is secret on the other side. The sourcing blogs importers read say it plainly: pay by card through Trade Assurance, and if the Trade Assurance claim goes nowhere, file a chargeback with your bank. Two independent claims processes, one order.\n\nI don’t blame a single buyer for taking that advice. I’d take it. It’s free and it works.\n\nWhat I object to is being sold something called protection that’s sized as though my orders were $500 samples.\n\n## The band that actually eats you\n\nBelow $3,000, the cover holds. You’re fine.\n\nAbove $12,000, the buyer can’t use a card at all and moves to wire, and wire transfers have no chargeback mechanism. Different risks up there, but not this one.\n\nSo the whole problem lives in a narrow strip: roughly $3,000 to $12,000. Big enough to blow past the allowance, small enough to still sit on a card. A $9,000 order charged back with a clean file costs you $7,000.\n\nI sell custom switchgear. Our orders clear the card ceiling, so this strip doesn’t touch me. It touched most of the room. Consumer goods, components, sample-to-small-batch sellers, all of them living squarely inside a band where the protection they’re paying for covers a fraction of a single bad order. I’d bet none of them have priced it.\n\n## The number I can’t give you\n\nThe upgraded service tier raises the allowance. By how much, I honestly don’t know.\n\nI saw four different figures for it. The trainer said one out loud. The official PDF said another, and mentioned a higher one for qualified merchants. The live backend page displayed a third.\n\nSame platform, same month, three documents.\n\nI’m not going to pick one and pretend. Open your own backend, screenshot the page, and use that number. And notice what the inconsistency tells you: if the platform can’t state its own coverage ceiling the same way twice in thirty days, that’s a measure of how much weight the figure is meant to bear.\n\n## The one lever you actually own\n\nThe defence file is the only thing in this process you control, and there’s a constraint on it that took me a while to appreciate.\n\nAlibaba’s arbitrators read the platform messenger. They don’t read your email. They don’t read WhatsApp. Whatever you agreed over Gmail at midnight simply isn’t in the case file.\n\nWhich means the operating rule is annoying but not complicated: negotiate wherever the buyer wants to negotiate, then restate what was agreed in the platform chat and get them to acknowledge it. Every time.\n\nWhat survives a chargeback review, roughly in the order you create it: specs confirmed in writing before the order is drafted. The delivery address confirmed by the buyer, because the address on the order is the yardstick for whether goods went to the right place, and a casual address change over email is a hole in your file. Production photos the buyer signed off on. Inspection report if they asked for one. Shipping documents plus a message telling them the expected arrival date and what to do about damage.\n\nThen the last one, which almost everybody skips.\n\nAfter delivery, ask whether it arrived.\n\nWhen the buyer types “yes, received,” they’ve just handed you the single strongest piece of evidence you will ever hold against a claim that nothing showed up. It costs one message. Send it on every order, not just the nervous ones.\n\n## What the training actually taught\n\nForty minutes on how to fill in the order draft form. About four on this.\n\nThat ratio is the lesson. The platform will teach you its interface in exhaustive detail and mention the part where you carry uncapped downside in passing, near the end, after lunch.\n\nIf your orders sit in the $3k–$12k band, work out what a chargeback costs you today and decide whether the answer changes your payment terms. I’d rather lose a deal insisting on wire than win one that comes back in fourteen months.\n\nTwo related things I’ve written up from the same training: [what Alibaba’s fee cap does to small orders](/blog/alibaba-seller-fees-effective-rate), and [why the cheap DDP quote is a liability with your name on it](/blog/ddp-pricing-what-suppliers-are-taught).",
      "date_published": "2026-08-04T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "cross-border-operations",
        "export-sales",
        "alibaba",
        "trade-assurance"
      ]
    },
    {
      "id": "https://haoliglobal.com/blog/alibaba-seller-fees-effective-rate",
      "url": "https://haoliglobal.com/blog/alibaba-seller-fees-effective-rate",
      "title": "Alibaba’s 2% Seller Fee Is a Tax on Being Small",
      "summary": "The fee is capped, so the effective rate collapses as orders grow. Small sellers pay six times what big ones pay for the same service, by design.",
      "content_text": "On a $100,000 order I’d pay Alibaba about $300.\n\nOn a $3,000 order I’d pay $60.\n\nSame platform, same service, and the small order pays six times the rate. That isn’t a volume discount for big sellers. It’s a surcharge on everyone who isn’t one yet.\n\nEvery English write-up of Alibaba’s supplier fees I can find stops at “2% to 3%, capped.” A couple of the better sourcing blogs even list the cap tiers correctly. None of them work out what the cap does to the rate you actually pay, which is the only version of the number that matters.\n\n## The tiers\n\nThe headline fee is 2% of the amount received on a standard Trade Assurance order, 3% on the upgraded tier. Both capped. Which cap you get depends on your bracket, and your bracket comes from your star rating or your trailing 90-day online volume, whichever flatters you more.\n\n| Bracket | Cap at 2% | Cap at 3% |\n| --- | ---: | ---: |\n| New / under US$30k in 90 days | US$300 | US$350 |\n| 1–3 star / US$30k–300k | US$200 | US$250 |\n| 4–5 star / US$300k+ | US$100 | US$150 |\n\nNow run the rate you actually pay.\n\n| Order value | New seller | 4–5 star seller |\n| --- | ---: | ---: |\n| $3,000 | 2.00% | 2.00% |\n| $15,000 | 2.00% | 0.67% |\n| $50,000 | 0.60% | 0.20% |\n| $100,000 | 0.30% | 0.10% |\n\nThe percentage only means anything below about $15,000. Above that the cap is the fee and the rate is decoration.\n\nAnd look at the right-hand column. A seller doing $400k a quarter pays a tenth of what a seller doing $20k pays, on an identical order. The brackets are keyed to volume you already have. Someone sat down and decided the sellers with the least cash should subsidise the ones with the most.\n\nIf you’re a buyer who’s been told “we add 2% for Trade Assurance,” now you know what that 2% costs the supplier on your particular order. Over about $20,000, close to nothing.\n\n## The exit, and what it costs\n\nThere’s a way out of the fee. It doesn’t cost money.\n\nInstead of exporting under your own company name, you can route the shipment through OneTouch, Alibaba’s own trade services arm, and let them handle the customs declaration. Do that on a basic-tier order and the platform transaction fee vanishes completely.\n\nIn its place you pay OneTouch’s basic service fee: 1.5% of export value, priced in RMB, floor ¥200, ceiling ¥600, plus 6% VAT.\n\nThat ceiling is the whole story. Same $100,000 order, new seller:\n\n- Self-export: 2% would be $2,000, capped to **$300**\n- OneTouch: 1.5% would be ¥10,500, capped to ¥600, ¥636 with tax, about **$89**\n\nRoughly $210 a shipment, saved. Looks like free money.\n\n## What the $210 buys\n\nWhen OneTouch handles the declaration, the customs entry carries two names. Shipper is OneTouch. Producing and selling unit is you. Perfectly legal, perfectly normal, and the export volume accrues to OneTouch’s customs record rather than yours.\n\nI’ve read every English explanation of OneTouch I can find. The closest anyone gets is noting that the service gives Alibaba visibility into Chinese export data, framed as a platform achievement. Nobody says what the supplier gives up.\n\nChinese exporters’ own customs records aren’t a vanity metric here. They gate things. Canton Fair booth allocation runs on export thresholds. Bank credit lines and trade finance assessments read declared export history. A factory that’s routed three years of shipments through an agent has, on paper, barely exported.\n\nSo you’re paying $210 a shipment to remain, on paper, an exporter.\n\nWhether that’s worth it depends entirely on whether you need the paper. Small test shipments where nothing’s being accumulated, take the discount. Anything you’d want to point at in two years when you’re arguing for a booth or a credit line, pay the $210.\n\n## The one asymmetry worth knowing about\n\nAgent export comes in two flavours. One covers the declaration only. The other covers the declaration and handles your export tax rebate for you.\n\nThe second is manufacturers only. Trading companies can’t have it.\n\nIf you’re a factory losing quotes to trading intermediaries, that’s a structural difference in your tax position and it’s worth understanding before a buyer asks you to explain why your price is what it is. Their numbers and yours aren’t built the same way.\n\n## Why any of this exists\n\nNone of the fee arithmetic makes sense until you notice what the customs declaration is actually for.\n\nSuppliers don’t declare exports because the platform enjoys paperwork. They declare because the declaration plus the release notice is what supports the export tax rebate claim. The trainer put it bluntly: the rebate is why anyone bothers with formal export.\n\nWhich reframes everything above. The transaction fee is a few hundred dollars. The rebate on a $100,000 shipment is a different order of magnitude entirely.\n\nAnyone optimising the first while putting the second at risk is reading the wrong line of the invoice. And there’s a whole industry of shortcuts in cross-border trade that quietly propose exactly that trade — [I wrote about the DDP version here](/blog/ddp-pricing-what-suppliers-are-taught).\n\nIf you’re on the risk side of the same platform, the [chargeback numbers are worse than the fee numbers](/blog/alibaba-chargeback-supplier-exposure).",
      "date_published": "2026-08-04T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "cross-border-operations",
        "export-sales",
        "alibaba",
        "trade-assurance"
      ]
    },
    {
      "id": "https://haoliglobal.com/blog/ddp-pricing-what-suppliers-are-taught",
      "url": "https://haoliglobal.com/blog/ddp-pricing-what-suppliers-are-taught",
      "title": "The Cheap DDP Quote Puts the Penalty on Your Name",
      "summary": "DDP quotes for the same shipment differ by half. Only one line item can move that far, and the exporter is the one holding the consequences.",
      "content_text": "An Alibaba trainer stood in front of a room of Chinese exporters in Nanjing in July and told us DDP has some grey in it. Forwarders who quote DDP have local agents at the destination. US duties are high, so on some goods the declared value comes in under the commercial reality. Customs can’t inspect everything, so there’s a probability element. That’s how clearance costs get so low.\n\nThen he told us not to be scared of DDP business, because it’s everywhere.\n\nHe isn’t the one whose company name goes on the export declaration.\n\n## Where the spread comes from\n\nIf you’ve ever collected DDP quotes from three Chinese suppliers for the same goods to the same door, you’ll have noticed the spread isn’t 10%. It’s closer to double.\n\nTake the quote apart. Freight on a given lane is near-commodity and doesn’t vary much between forwarders. Destination handling is bounded. Last-mile delivery is bounded.\n\nDuty and import tax are the only components with room for a factor-of-two swing. And duty only swings if the declared value swings.\n\nSo when one DDP number lands well under everyone else’s, the arithmetic points at exactly one line item. Not clever routing. Not volume leverage. The declaration.\n\nThat’s not a finding about any specific quote and I’m not making one. It’s a reason to ask a question instead of taking a bargain.\n\n## Who’s actually holding this\n\nHere’s where I part company with the trainer.\n\nIf a shipment gets stopped and the declared value is challenged, the consequences attach to two parties: the importer of record and the exporter. If you export under your own factory’s title — which you do, if you want your own customs record, which I’ve argued elsewhere you should — that exporter is you. Penalties, seizure, a buyer suing over goods that never cleared. All of it lands on a company name that also sits on your customs history and your bank’s credit assessment.\n\nThe forwarder who quoted aggressively carries none of it. Their exposure ends when your invoice clears.\n\nThat’s the entire mechanism. One party takes the margin from an optimistic declaration, a different party takes the tail. Arrangements like that stay stable for years, because the party holding the tail usually doesn’t know they’re holding it.\n\n## The thresholds, and the invitation\n\nThe same training covered destination-country tax, where the marketplace collects local VAT or consumption tax from the buyer and remits it. Collection triggers on value thresholds, and the thresholds are published.\n\n| Market | Collection trigger |\n| --- | --- |\n| EU 27 | Consignment value ≤ €150 (France applies at all values) |\n| UK | Order goods value ≤ £135 |\n| Norway | Single item unit price < NOK 3,000 |\n| Australia | Order goods total ≤ A$1,000 |\n| New Zealand | Single item unit price ≤ NZ$1,000 |\n| Singapore | Single item unit price ≤ S$400 |\n| Malaysia | Single item unit price ≤ MYR 500, taxed at 10% |\n| Chile | Single item unit price ≤ US$500 |\n| Canada (MB, SK) | No value limit |\n| US | State sales tax by destination state, no value limit |\n\nTwo warnings on that table. It’s from platform seller materials current in mid-2026, and those materials contradict themselves — the same document lists the UK under both “no threshold” and “£135.” Check the live order page before you quote anything, and assume the numbers move.\n\nNow the obvious thing, which the trainer said out loud: every trigger in that table is a number. Push declared order value or unit price above the number and collection doesn’t fire.\n\nHe offered it as a tip. Three reasons I won’t touch it.\n\n**It doesn’t remove the tax.** It moves collection from the platform to your buyer at import. Your customer gets a customs bill nobody warned them about, and then they come back to you about it. You’ve turned a line item into a dispute with a customer you wanted to keep.\n\n**It contradicts the platform’s own instructions.** The same training insisted unit price must track the real transaction price, because the platform records your historical unit price and uses it as the baseline for promotional pricing later. Every drafted order also runs through an authenticity check. You cannot inflate unit price to dodge a threshold and keep honest unit prices for pricing purposes. Pick one.\n\n**It breaks the three-way match.** Invoice, customs declaration, foreign exchange receipt. Those three have to agree, and that agreement is the entire substance of an export tax rebate claim. Putting a rebate on a six-figure shipment at risk to dodge €40 of VAT is not a trade, it’s a mistake with a spreadsheet attached.\n\n## The platform already assumed you’d try\n\nWorth noticing what Alibaba’s own reconciliation does before it accepts a self-export declaration. Five checks. The declaration date has to be later than the order draft date. At least one product name or category has to match. The destination country has to match. The declared amount has to sit between 80% and 120% of the order value. The declaration has to be in your own company’s name.\n\nAnd the credit released back to you is tied to cumulative declared value reaching 80% of the order. Fall short and the order sits in partial shipment while your money sits with the platform.\n\nInvoice, declaration and payment are treated as one object. Bend any of the three and the system stops and asks you about it.\n\n## What to do with the outlier quote\n\nAsk the forwarder in writing what basis the destination declaration will be made on. Keep the answer, keep the quotation, keep the thread.\n\nIf the answer is vague, that price isn’t a discount. It’s a position someone’s asking you to take without telling you they’re asking.\n\nThen price the honest version into your own DDP offer instead of matching a number you can’t itemise. Losing a deal to a quote you couldn’t explain is cheap. Winning one you can’t defend isn’t.\n\nThe training said don’t be scared of DDP. I’d put it differently. Be scared of any quote you can’t take apart — same instinct that makes me [check what the platform’s fee schedule is actually charging me](/blog/alibaba-seller-fees-effective-rate) and [what its chargeback cover actually covers](/blog/alibaba-chargeback-supplier-exposure).",
      "date_published": "2026-08-04T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "cross-border-operations",
        "export-sales",
        "alibaba",
        "trade-assurance"
      ]
    },
    {
      "id": "https://haoliglobal.com/blog/lead-quality-guarantee",
      "url": "https://haoliglobal.com/blog/lead-quality-guarantee",
      "title": "Alibaba Sells the Lead Guarantee Agencies Say Can't Exist",
      "summary": "Every B2B lead vendor guarantees volume, never quality. Alibaba.com sells a numeric quality floor built on verified buyer spend. Here is the catch.",
      "content_text": "Every article about guaranteed leads makes the same argument, and it is a good one. Vendors guarantee a count, never a standard. Twenty leads a month means twenty records, and nothing in the contract says any of them will want what you sell. The arithmetic is always the same too -- five thousand dollars for twenty leads is two hundred and fifty each, and if a tenth qualify then the real cost per qualified lead is two and a half thousand. Outly, MarketJoy, Prospeo and ViB have all published a version of it this year.\n\nThe premise underneath is that quality cannot be written into a contract. Alibaba.com writes it in, numerically, and sells it. How it manages that is worth more than another article agreeing that volume guarantees are bad.\n\n## How Alibaba makes quality contractual\n\nBuyers on Alibaba.com are classified by verified historical purchase value on the platform. L1 starts at fifty dollars of online purchasing, L2 at three hundred, L3 at a hundred thousand, L4 at three hundred thousand. L0 is a bare registration and is explicitly excluded from every reach commitment.\n\nAlibaba can certify those figures because it processed the transactions. That is the entire trick and it is why an agency cannot copy it. An agency selling you leads has no way to verify what a prospect previously spent. A marketplace that cleared the payments does.\n\nSo the guarantees carry two numbers. A package promises an inquiry count and, beside it, a minimum concentration of buyers at or above a given level -- thirty per cent L1-and-above, or fifty per cent, or twenty-five per cent L2-and-above, or twenty per cent L3-and-above, depending on what you buy. Higher floor, higher price. That is a quality guarantee you can hold someone to.\n\nIt goes further than packages. In Alibaba's RFQ market the inbound requests are tiered as well, and the top tier is locked. Gold-level RFQs -- buyers at L4, or buyers evidencing a million yuan in annual revenue, ten thousand dollars of online purchasing and single transactions above five thousand dollars -- can only be quoted by paid Gold Supplier members or by sellers holding a three-star rating or better. Access is forfeited outright if violation points reach twenty-four, or on a single intellectual property strike.\n\nRead that as a system and it is unusually candid. The platform scores its buyers, ranks them, reserves the top of the range, and sells entry. Most channels do a version of this. Almost none of them write the thresholds down. The same commercial logic is visible in [Alibaba's merged paid-and-organic AI-search ranking](/blog/merged-ranking-ai-search).\n\n## The pricing is not monotonic\n\nThree of Alibaba's guaranteed packages, at published prices, promise different volumes. Divided out and converted at roughly 7.1:\n\n| Package price | Guaranteed inquiries | Cost per inquiry |\n| ---: | ---: | ---: |\n| $1,408 | 50-90 | $15.60-$28.20 |\n| **$1,972** | **200-400** | **$4.90-$9.90** |\n| $4,789 | 360-600 | $8.00-$13.30 |\n\nThe middle package is the cheapest per lead. Not the largest and not the smallest. Read the ladder the way volume pricing normally works and you pick wrong twice.\n\nA separate ladder of managed-spend packages carries its own guaranteed counts, and one price point appears in both sets of material with different volumes attached because the bundles differ. I could not reconcile them and will not pretend I did. The instruction survives anyway: divide before you compare, and check what sits inside a bundle before comparing unit costs across bundles.\n\n## Where the guarantee stops, and it stops hard\n\nThe level definition is historical spend on Alibaba, in any category. A buyer who spent a hundred thousand dollars on injection moulding is an L3 buyer and counts toward the L3 concentration floor on a switchgear package.\n\nSo the guarantee certifies that a buyer is real, solvent, and has spent money here. It certifies nothing about fit. That is not a loophole buried in fine print, it is what the metric is. Which means the guarantee has relocated the argument rather than settled it. With a volume guarantee you argue about whether a lead is any good. With a tiered quality guarantee you have already conceded the definition of good, and the only question left is whether Alibaba's definition is yours. For a commodity seller it broadly is. For anything configured to order it is not, because spending in an unrelated category tells you nothing about whether a buyer's constraint set fits your production -- the same wall I hit building [qualification rules for emerging markets](/blog/lead-qualification-emerging-markets).\n\nThere is a second catch Alibaba states openly and sellers underweight. The star rating gating gold-tier access is not durable. Transaction credit expires on roughly a ninety-day clock, and a single missed threshold collapses the entire rating: average response time above twenty-four hours drops you to zero stars no matter how good everything else looks. So the standing you need in order to reach the guaranteed quality depreciates unless you keep spending and keep performing. The quality floor is real. The position from which you can reach it is rented.\n\n## What to do with this\n\nAsk any vendor how their quality floor is expressed, and whether they can verify it or only assert it. Verified-transaction floors exist. Most vendors cannot offer one because they do not sit inside the transaction, and that is a real distinction between vendor types rather than an objection to be handled.\n\nDivide price by guaranteed count for every tier before comparing, and drop the assumption that the ladder falls monotonically. [Alibaba's own spend-tier table](/blog/minimum-viable-ad-spend) does not.\n\nAnd keep apart two questions that any good guarantee will quietly merge: is this lead real, and is this lead mine. The first is verifiable and increasingly is verified. The second is not, and no concentration percentage will do it for you. I have written about how much of a [reported reply rate evaporates](/blog/positive-reply-rate-vs-reply-rate) once you insist on the second question. The same discount applies to anything sold with a tier attached.",
      "date_published": "2026-08-01T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "outbound-data",
        "emerging-markets",
        "export-sales",
        "lead-qualification"
      ]
    },
    {
      "id": "https://haoliglobal.com/blog/merged-ranking-ai-search",
      "url": "https://haoliglobal.com/blog/merged-ranking-ai-search",
      "title": "Alibaba Already Merged AI Search Ads With Organic",
      "summary": "Western AI search advertising rests on paid and organic staying separate. Alibaba.com merged them into one ranking, at 700,000 buyers a day.",
      "content_text": "Alibaba.com has already done the thing the Western AI-search industry keeps telling you cannot be done. It did it quietly, and it is running at more than 700,000 buyers a day.\n\nThe thing is merging paid and unpaid results inside an AI-generated answer. Read anything published this year on advertising in AI search and you will find the separation principle carrying all the structural load. OpenAI's sponsored slots sit below the response and carry a label. Perplexity has stated publicly that advertisers do not influence answer content. GEO vendors write, in bold, that citations are earned and cannot be bought. The entire body of paid-AI-search advice -- earn your way in first, buy placement around the edges afterwards -- depends on that wall staying up.\n\nThere is no wall on Alibaba.com. I spent two days in the platform's official seller training in late July, and it is not that the separation was dismantled after some scandal. It was never built.\n\n## One ranking, weighted toward whoever paid\n\nAlibaba's own description, in material handed to sellers, is that advertised and unadvertised products are mixed into a single ordering and that advertised products carry additional weighting inside it. Not a sponsored block above the results. Not a labelled card beneath them. The ad is a position in the list and it looks exactly like the position next to it.\n\nProducts from brand advertisers receive priority ordering once they clear a relevance bar. I am not going to pretend that condition is meaningless -- this is not an auction buying its way past relevance. It is a tiebreak running in favour of whoever paid, among products that already qualify. Which, if you have been doing this a while, is precisely how paid search worked before anyone thought to describe it as a wall.\n\nWhat that leaves for a seller who does not pay was put more plainly in the room than on any slide. Asked whether search ordering follows rules, the trainer said the two premium fixed positions are the only deterministic ones and everything else is not, and that a new seller running no paid promotion will not break onto the first page, because the first page belongs to accounts that have been there seven or eight years. The front rows, in the platform's own phrasing, are essentially all ad slots.\n\n## And then there is the query itself\n\nAlibaba has a qualification-gated feature that attaches an advertiser's brand term to the category's head term inside the buyer's own query, before the buyer has finished forming it. Qualification is share of category audience, somewhere around the top tenth.\n\nSit with that for a moment. The channel is not only selling positions in the answer. It is selling a small edit to the question.\n\nThe limits, stated so nobody has to point them out: this is described in seller material as rolling out rather than fully shipped, and the thresholds move. I read documents written for sellers, not ranking code. But the direction is not ambiguous, and nobody inside Alibaba is pretending the wall exists.\n\n## What earns the slot when you have not paid\n\nThe other half of the training is the most specific public account of AI-search ranking mechanics I have found from any platform in any language, and it is more useful than the entire GEO literature.\n\nAlibaba's deep search is on by default. Buyers no longer type keywords, they type sentences, and the platform puts buyer query length up about 12% year on year. The system parses the sentence into discrete requirements, then bands the results by how many of them each product satisfies.\n\nThe worked example in the material is a container-house query long enough to carry six separable requirements. Six intent points get resolved, and results are ordered by match count -- everything at six of six, then five of six, then downward.\n\nThat is not keyword coverage with extra steps. Under keyword matching, a partial match still competes on the same surface as a full one. Under intent-point banding, a product satisfying five of six requirements sits in a band beneath one satisfying all six, no matter how good those five are.\n\nThe sharpest consequence: where a buyer's query constrains supplier attributes -- the example given was a factory with more than a hundred employees -- accounts that left the employee-count field empty are excluded, not demoted. An empty field is not a weak signal. It is a failed filter. Alibaba's instruction to sellers was to fill it in even if the honest answer is three people.\n\n## The part that should actually bother you\n\nAlibaba's trainers tell sellers directly to keep transactions on the platform, and the reason given is not loyalty. Off-platform deals produce no visible exposure and no visible inquiries, which means less traffic allocated to you later. Separately, sellers lose penalty points for asking a buyer for an email address or a WhatsApp number.\n\nSo the same channel selling the unpaid half of the results page also penalises you for building the one relationship that would outlive it. Nothing conspiratorial in that. It is a coherent, well-run business model, and if I owned a marketplace I would probably run it the same way. It does mean the cost of the channel is not the ad spend, and it means the word organic on a marketplace is marketing copy rather than a category you can plan around. The same seller material also exposes [why the smallest ad budget is the worst place to enter](/blog/minimum-viable-ad-spend).\n\nTwo things to take from it. Separation in Western AI search is a norm, not a technical constraint. It is being defended on trust grounds right now, and a merged ranking is obviously buildable because it is already built and serving 700,000 buyers a day. Betting an acquisition plan on AI answers staying unbuyable is betting on somebody's restraint.\n\nAnd the intent-point mechanism is the clearest instruction anyone has published on what structuring data for AI actually means. Not be clear, not add schema. Enumerate every constraint a buyer could put into a sentence, and make sure each one has a field with a value in it. A blank field costs you the whole query, not a few positions.\n\nI sell electrical distribution equipment into Africa and the Middle East from an Alibaba.com account, and I also run cold email off domains I own, where [the pipeline yield is measurable](/blog/ai-outbound-pipeline-yield) and [a second attempt at the same list costs almost nothing](/blog/cold-email-second-pass-cost). Nobody there gets to reweight me. That is a preference with a bias attached. The mechanics above are not.",
      "date_published": "2026-08-01T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "outbound-data",
        "emerging-markets",
        "export-sales",
        "paid-acquisition"
      ]
    },
    {
      "id": "https://haoliglobal.com/blog/minimum-viable-ad-spend",
      "url": "https://haoliglobal.com/blog/minimum-viable-ad-spend",
      "title": "Alibaba's Own Data Says Small Ad Budgets Are Worst",
      "summary": "Alibaba's seller training includes a spend-tier table. Compute the marginal cost and your first paid lead costs four times your tenth.",
      "content_text": "Alibaba.com publishes a table to convince sellers that bigger ad budgets work. It does prove that. In the same five rows it also proves something absent from the slide notes: the first leads you buy are the most expensive leads you will ever buy.\n\nAdvertisers on Meta and LinkedIn already have vocabulary for the mechanism, even if nobody has priced it. Meta's delivery system wants roughly fifty optimisation events per ad set per week before exiting the learning phase, and costs inside that window run twenty to forty per cent above steady state. The standard formula falls out of it -- target cost per acquisition, times fifty, divided by seven, is your minimum daily budget. LinkedIn lands in similar territory, about fifty conversion events a month per campaign with a floor near fifty to a hundred dollars a day. Google's smart bidding wants thirty to fifty conversions monthly.\n\nEvery one of those is an event count. None of them is a price. I have not found a single published curve showing what an additional lead costs at each level of spend, as against what the whole budget averages out to.\n\nAlibaba's training material contains a table you can build one from. The same training also describes [how paid and unpaid products are merged inside AI-search ranking](/blog/merged-ranking-ai-search).\n\n## What Alibaba published\n\nThe deck for Keyword Advertising -- the pay-for-performance product Alibaba still calls P4P internally -- carries thirty-day per-account averages grouped into five spend tiers. Two columns matter. Converted at roughly 7.1 to the dollar:\n\n| Tier | Monthly P4P spend | Inquiries | Cost per inquiry |\n| ---: | ---: | ---: | ---: |\n| 0 | $23 | 43 | $0.55 |\n| 1 | $380 | 53 | $7.20 |\n| 2 | $765 | 77 | $9.90 |\n| 3 | $1,025 | 108 | $9.50 |\n| 4 | $1,640 | 176 | $9.30 |\n\nThe caption underneath, in the original, says P4P spend is proportional to a seller's premium listings and inquiries and that higher-tier accounts get better results. Read as averages that is exactly what the table shows. Spend more, receive more, cost per inquiry settling around nine dollars once you are off the bottom.\n\n## The column Alibaba left out\n\nAn average across a whole budget is useless for a budget decision, because the decision concerns the next increment and not the mean. So:\n\n| Step up | Extra spend | Extra inquiries | Marginal cost each |\n| --- | ---: | ---: | ---: |\n| 0 to 1 | +$357 | +10 | **$36** |\n| 1 to 2 | +$385 | +24 | $16 |\n| 2 to 3 | +$260 | +31 | $8.40 |\n| 3 to 4 | +$615 | +68 | $9.00 |\n\nThe first step is the expensive one, by a factor of four. Getting off the bottom tier costs thirty-six dollars for every additional inquiry. Every step after it lands between eight and sixteen.\n\nNow look at the bottom tier again, because it is the whole argument. Those accounts spend about twenty-three dollars a month, which is functionally zero, and receive forty-three inquiries. Whatever produces those forty-three, it is not the ad budget. So your first three hundred and fifty-seven dollars buys ten inquiries at thirty-six each, while forty-three were already arriving for nothing.\n\nThat is not diminishing returns. Diminishing returns runs the other way. It is an entry price: below it Alibaba's ad product prices badly, above it the product prices normally.\n\nAnd Alibaba's own recommended on-ramp sits almost exactly at the worst point on that curve. The entry-level managed package is 3,500 yuan for twenty-one days against a floor of fifteen guaranteed inquiries, which is about thirty-three dollars each -- within rounding distance of the thirty-six-dollar first step. The cheapest way in is priced like the worst way in, because it is the same thing.\n\n## Three reasons to distrust my table before you use it\n\nI would rather write these than have them thrown at me.\n\nThe bottom tier's forty-three inquiries are an organic baseline, not ad output, so the first step's marginal cost is partly an artefact of setting a paid number against a free one. I think it belongs in the calculation anyway, because it is exactly the comparison a seller faces when deciding whether to start spending. It is not clean and I am not going to call it clean.\n\nThe tiers are self-selected. Accounts spending more are probably better-run accounts with better listings and more experience, none of it controlled for. This is a correlation table. Getting the real spend-response curve means running the spend yourself, and by then you have paid for the answer.\n\nAnd the same table carries a third column that quietly undermines its own caption: premium listings per account, climbing from nineteen at the bottom tier to a hundred and fifteen at the top. Alibaba reads that as advertising building premium listings. Its own case study reads the other way. On a slide labelled BAD CASE, one advertiser bought an identical keyword through two of its own accounts, one holding forty premium listings and one holding two hundred and seventy-seven, and the second performed materially better. Inventory quality drives ad performance, not the reverse. Which means a good part of what the tier table demonstrates is that better shops spend more -- a different claim entirely, and a much less useful one for anybody deciding a budget.\n\n## The rule\n\nAny channel with a learning phase has an entry price and you can usually estimate it before paying it. Take the channel's stated event threshold, multiply by its mature cost per event from published benchmarks, treat the product as your floor, then decide whether you can cross it in one move. If you cannot, the honest answer is not to spend less. It is not to spend.\n\nThe expensive version of this mistake is rarely ads. It is the two-week pilot of anything with a learning curve -- a data vendor, an outsourced SDR team, a new sequence -- killed on numbers generated entirely inside the window where the numbers are supposed to be bad.\n\nI lean toward channels with no entry price at all. A research pass across five hundred companies costs me a couple of dollars in API calls and yields fifty-seven contactable accounts, [broken down in full here](/blog/ai-outbound-pipeline-yield), and [the second pass over that list](/blog/cold-email-second-pass-cost) is close to free. Neither has a learning phase, which is most of why I keep running them. That is a bias, not an argument, and it is not licence to test a paid channel badly. The marketplace's [numeric lead-quality guarantee](/blog/lead-quality-guarantee) is a different kind of offer, and it deserves different arithmetic.",
      "date_published": "2026-08-01T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "outbound-data",
        "emerging-markets",
        "export-sales",
        "paid-acquisition"
      ]
    },
    {
      "id": "https://haoliglobal.com/blog/cold-email-second-pass-cost",
      "url": "https://haoliglobal.com/blog/cold-email-second-pass-cost",
      "title": "Cold Email Follow-Up: Why the Second Pass Is Nearly Free",
      "summary": "Verifying 282 addresses took weeks. Touching them a second time costs almost nothing. Where list decay does and does not change that arithmetic.",
      "content_text": "Last Friday the first round closed. Every one of 282 companies has now been contacted once, and on Monday I start the second email to the same list.\n\nThe interesting part is that the second round is almost free, and it took me until the end of the first one to understand why.\n\n## Where the money went the first time\n\nThe first list was assembled by an agent pipeline, and I published [the yield on it](/blog/ai-outbound-pipeline-yield) in full: 500 companies requested, 130 to 150 with complete records, about 119 email addresses recovered, 74 surviving verification, 57 contactable at the end. Eleven point four percent, end to end. The API bill was around 14 yuan, which is not the interesting number.\n\nThe interesting number is time. Weeks of enumeration and verification, plus twenty-four days warming five mailboxes before the first email went out at all. Then the sending itself, capped at eight per mailbox per morning.\n\nAlmost none of that was spent on writing. The copy was the cheap part.\n\n## The asset is the address, not the email\n\nWhich means the thing I built in six weeks is not a campaign. It is a list of 282 verified addresses attached to named decision-makers, and the second email to that list skips every expensive step. No sourcing. No enrichment. No verification, because the addresses have already been proven to accept mail â€” I have the bounce data and the out-of-office notices to show it.\n\nWhat the second round costs is tokens to re-render the sequence and a slot in the morning. That is it.\n\nThis reframes what a follow-up is. It is not a nag. It is the cheapest contact I will ever buy against that list, because someone else â€” me, six weeks ago â€” already paid the acquisition cost.\n\n## Decay is real, and at my size it is not my problem\n\nThe standard objection is data decay, and the numbers behind it are solid enough. HubSpot's decay simulation, built on older MarketingSherpa research, puts B2B contact records at 2.1 percent going bad per month, compounding to about 22.5 percent a year. Measured on email addresses alone, ZeroBounce put roughly 23 percent going bad annually in its 2026 figures. Job changes drive most of it; when someone leaves, the mailbox is usually dead inside ninety days.\n\nYou will also see 70.3 percent a year attributed to Gartner. At least one analysis has gone looking and could not find a Gartner report that says it. I would not repeat that one.\n\nRun the credible rate against my actual list. 282 addresses at 2.1 percent a month is about six addresses going bad per month. If I spread three touches across two months, something like a dozen addresses die on me during the sequence.\n\nA dozen. Against four positive replies, that is inside the noise. Decay is a real problem for a database of ten thousand records and a rounding error for a list of 282, and the vendor framing that turns it into urgency is selling to the first case while quoting at the second.\n\nOne piece of the advice survives the arithmetic anyway: re-verify on a trigger, not on a calendar. A hard bounce is a signal to re-check that record. The passage of six weeks, by itself, is not.\n\n## How many times to go back\n\nThe benchmark figures that circulate in sending-platform reports are consistent on this, and they point somewhere slightly awkward. Three messages total tends to be the ceiling. Two follow-ups roughly doubles total reply rate against a single email. Sequences running three or more follow-ups show a *lower* average reply rate, which is probably a mix of exhausted lists and people who send more because nothing is working.\n\nSo the second and third touches carry most of the remaining return in the whole exercise, at close to zero marginal acquisition cost. Then it stops paying, quickly.\n\nThe other figure I keep in front of me: campaigns that do not track opens report substantially higher reply rates than those that do. Some of that is a deliverability effect from the tracking pixel and some is selection. Either way I stopped tracking opens, and the first thing that changed is that I no longer had a number to comfort myself with. If you would rather have the reply classification done for you than sort out-of-office notices by hand every Monday, that is a standard feature in the platforms.\n\n## What the second email says\n\nShorter than the first. One question, not two. Nothing that manufactures guilt â€” no bumping this to the top of your inbox, no just following up again.\n\nIn my case the second email has one advantage the first did not: I now have documentation to attach. Three of my four positive replies were requests for a catalogue or a website, so [the material I could not send in June is itself the reason to write again in August](/blog/no-website-what-to-send). That is a real reason to be in someone's inbox, which is more than most follow-ups have.\n\n## The open-source layer I would actually adopt\n\nI went looking for what could replace the paid parts of this, and the honest answer is: one layer, not all of them.\n\n**Worth running locally.** [email-verifier](https://github.com/AfterShip/email-verifier), Go, MIT, does syntax, disposable-domain and MX/DNS checks without touching SMTP at all. It costs nothing, runs in a second, and kills dead domains before you spend a paid credit on them. There is no argument for not having this in front of a paid verifier.\n\n**Worth knowing about, not worth self-hosting yet.** [check-if-email-exists](https://github.com/reacherhq/check-if-email-exists), Rust, around nine thousand stars, is the real open-source SMTP verifier. It is dual-licensed commercial and AGPL-3.0, with a pull request opened in March 2026 to move it to MIT. The blocker is not the licence, it is port 25: most ISPs and many cloud hosts block outbound SMTP on 25 to suppress spam, and without it the tool hangs and returns *unknown* rather than an answer. Self-hosting therefore means renting a box with 25 open and a clean IP, and some mail providers refuse real-time verification regardless. At 282 addresses that is a weekend project to save a few dollars. At a few thousand addresses re-verified monthly the arithmetic flips, and then it is genuinely the right tool.\n\n**Worth using instead of a platform, for now.** [mailmerge](https://github.com/awdeorio/mailmerge) is a small Python CLI that sends one individual message per recipient from a template plus a CSV, reads its SMTP settings from a config file, and refuses to send anything until you pass a flag â€” dry run is the default. Five mailboxes means five config files, and eight sends each is exactly the volume it is built for. What it does not do is detect replies, thread conversations, or schedule anything. It replaces the sending. It does not replace the inbox, and the inbox is where the work is.\n\n**What I would not adopt.** A self-hosted all-in-one marketing automation stack. My failure mode in this channel is deliverability and domain reputation, not missing features, and moving my own mail infrastructure in-house takes on that risk for no gain. [The authentication work](/blog/email-authentication-for-international-outbound) is the part that actually decides whether the second email arrives.\n\n## What the second pass really costs\n\nNot money. Mornings.\n\nForty emails a day across five mailboxes is my ceiling, and it consumes an entire morning. The same morning is the only window when marketplace enquiries are worth working â€” the ones that show up in the afternoon are already taken, obviously mismatched, or fraudulent, and I get about two usable ones a day. Every hour the follow-up round takes is an hour taken from quoting, and quoting is the only activity in this job that has ever produced revenue.\n\nSo the constraint on the second pass was never the cost of the list. It is that the cheapest contact I can buy still has to be paid for out of the same four hours as everything else.\n\n## FAQ\n\n**How many follow-ups should a cold email sequence have?**\n\nTwo, for a total of three messages. Benchmark data consistently shows two follow-ups roughly doubling total reply rate against a single send, while sequences with three or more follow-ups show lower average reply rates.\n\n**Do you need to re-verify email addresses before a second touch?**\n\nNot on a short interval. If the addresses passed verification and did not hard bounce on the first send, they are proven live. Re-verify when something triggers it â€” a bounce, a job change you can see, a domain that stopped resolving â€” rather than on a fixed schedule.\n\n**How fast do B2B email lists decay?**\n\nAbout 2.1 percent per month, compounding to roughly 22.5 percent a year on the most widely cited estimate, driven mainly by job changes. Email addresses specifically run around 23 percent a year. The figure of 70.3 percent a year that gets attributed to Gartner does not appear to trace back to any Gartner report.\n\n**Is self-hosted email verification worth it?**\n\nOnly above a few thousand addresses, and only if you can get a host that leaves outbound port 25 open. Below that, run a free local syntax and MX check to strip the obvious dead weight, then pay per credit for SMTP verification on what survives.\n\n**What should the second email say?**\n\nLess than the first, with one question and a lower bar to answer. If something has genuinely changed since you first wrote â€” new documentation, a new reference, a price you can now quote â€” lead with that, because it is a reason to write rather than a reminder that you did.",
      "date_published": "2026-07-30T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "cold-email",
        "outbound-data",
        "email-verification",
        "export-sales"
      ]
    },
    {
      "id": "https://haoliglobal.com/blog/no-website-what-to-send",
      "url": "https://haoliglobal.com/blog/no-website-what-to-send",
      "title": "Cold Email With No Website: What I Send Instead",
      "summary": "Three of my four positive replies asked for a website or catalogue my company does not have. What I sent instead, and what it actually cost.",
      "content_text": "On 22 July a director at a Vietnamese electrical company replied to one of my cold emails. He asked for two things: our website and our product detail pages. A fair request, and the first human reply I had seen in four days.\n\nWe do not have a website. The company manufactures medium-voltage switchgear in Nanjing and has never owned an English domain. What we have is a storefront on a B2B marketplace and a shared folder of Chinese datasheets, several of which are scans of printed sheets.\n\nI sent him the marketplace link and a one-page PDF I built that morning out of our own material. Then I spent the rest of the day wondering whether I had just spent a positive reply badly.\n\n## The replies were not asking for meetings\n\n282 emails in the first round produced four positive replies from decision-makers. I have written separately about [what the reply-rate number hides](/blog/positive-reply-rate-vs-reply-rate). What I had not noticed until I put the four side by side is what they actually asked for.\n\n- Business director, Uganda: said plainly that he wanted to work together. No documents mentioned.\n\n- CEO, Bangladesh: asked for the catalogue, same day.\n\n- Chairman, Egypt: one neutral line saying he was waiting to hear back.\n\n- Director, Vietnam: website and product documentation.\n\nTwo of the four are explicit document requests. The Egyptian chairman is waiting on a quotation, and a quotation in this industry travels with a datasheet underneath it. So three of four replies arrive at the same shelf, and the shelf is bare.\n\nAlmost all cold email advice, mine included, optimises the step before this one. [Writing a first email when nothing has happened at the target company](/blog/cold-email-no-trigger-event) is that genre exactly. Subject lines, list size, sending volume, warm-up, signals. All of it is about earning the reply. The reply lands, and the literature stops.\n\nAt a 1.4 percent positive reply rate, fumbling one costs a quarter of the quarter.\n\n## The instinct is to send everything\n\nA marketer in a B2B forum ran a small split test last year. Fifty prospects received a twelve-page service brochure; fifty received a double-sided A4 sheet with a business card. Both groups got a LinkedIn request about two weeks later, and the flyer group accepted at roughly three times the rate. One hundred people, one industry, no controls worth the name. I would not build a strategy on it. But it points the same direction as everything else I have watched happen, which is that a twelve-page company profile is the easiest document in the world not to read.\n\nI had a twelve-page profile on my list of things to build. Factory photographs, the certificate wall, every product line, a page about our corporate vision. A week of work, arriving in a buyer's inbox as homework.\n\nThe Vietnamese director did not ask for that. He named one product family and wanted to know whether we make it and what it does.\n\n## What goes on the page\n\nOne page per prospect, in this order.\n\n- The prospect's company name and the product family they raised, in the header. It should be obvious in two seconds that the document was made for them and not for a trade fair.\n\n- A ratings table. Rated voltage, rated current, breaking capacity, enclosure protection, the standard we build to.\n\n- Two photographs. One of the assembled unit, one of the interior.\n\n- Lead time and minimum order. In industrial distribution these are the first two questions, and we can quote single units at 15 to 30 days on switchgear and 7 to 20 on low-voltage assemblies. Saying so early removes a round of email.\n\n- A street address and my direct line.\n\nNo corporate vision. No case studies either, because they need customer permission we do not have, and in a first exchange nobody believes them.\n\nThe marketplace link goes in the body as the third-party page. It is not a domain we control, which cuts both ways. A buyer can see a verified business licence and transaction history there, which a three-week-old .com cannot show him. A buyer can also see that we chose not to build a site of our own. I do not know which of those weighs more. The two prospects who got the link have not told me.\n\n## Building the page without a design department\n\nThe source material is a mess: Chinese Word files, a few Excel sheets of ratings, and scans. Turning that into a template is two separate problems, reading and rendering, and both have decent open-source answers now.\n\n**Reading it.** [Docling](https://github.com/docling-project/docling) is MIT-licensed, came out of IBM Research and now sits under the LF AI & Data Foundation. It swallows the mixed pile â€” PDF, DOCX, XLSX, images â€” and recovers table structure with a dedicated table model instead of guessing from whitespace. That matters here more than anything else on the list, because a ratings table read as loose text is worth nothing to me. Microsoft's [MarkItDown](https://github.com/microsoft/markitdown), also MIT, is faster and covers more formats, but it is weaker on tables, which is the wrong trade for this job. For the Chinese scans I use [MinerU](https://github.com/opendatalab/MinerU) instead: it was built by a Shanghai lab specifically on CJK layouts, and it is the only one of these that has not yet mangled a two-column Chinese spec sheet on me. Baidu's PaddleOCR-VL currently leads the document-parsing benchmarks and is CUDA-only, so on a Mac it means renting a GPU â€” worth knowing before you plan around it. One licence note: Marker is popular and good, but its terms carry a revenue threshold, which matters if you ever intend to sell what you build on top of it.\n\n**Rendering it.** The one-pager is a [Typst](https://github.com/typst/typst) template, Apache 2.0, fed a small YAML file of prospect and product values. The usual alternative is an HTML template plus WeasyPrint, which I ran for a few weeks. Typst won for a reason that has nothing to do with typography: a .typ file is a short text file I can keep in version control and hand to a coding agent without first explaining a CSS print stylesheet to it. The speed gap is real and irrelevant at my volume â€” an independent benchmark in February had Typst finish a 500-page job roughly fifty times faster than WeasyPrint, and I produce two documents a week.\n\n**The rule that matters more than the tools.** No number produced by an OCR or vision model reaches a customer-facing datasheet until I have checked it against the Chinese original. A model that turns 12 kV into 24 kV has not made a typo, it has made a commercial claim I cannot honour, to a distributor who will check. We have already had to tell one buyer that 24 kV equipment is outside what we build. Machine reading gets the sheet drafted in ten minutes instead of ninety. It does not get to sign it.\n\n## What this does not fix\n\nThe PDF is a bridge over the gap, not a repair. The gap is that we own no domain, have no indexed product pages, and hold no English documentation a buyer can find without asking me for it first. Every custom one-pager is a manual answer to a question a website would have answered while I was asleep. It has gone into the weekly report as a formal request twice.\n\nThe one part of the credibility problem I have actually closed is [authentication on the sending domain](/blog/email-authentication-for-international-outbound), which no buyer will ever see and which decides whether he sees the email at all.\n\n## The time it costs\n\nTen to fifteen minutes per one-pager once the template exists. Two hours to build the template. About a day to get the parsing stable across our own folder, most of it spent on the scans.\n\nAll of it lands in the morning, which is the only window where I send anything and also the only window where marketplace enquiries are worth working. The same constraint is why [a second cold-email pass is nearly free in list cost but expensive in mornings](/blog/cold-email-second-pass-cost). So the pipeline is not saving money. It is buying back the hour I would otherwise lose inside a layout program, and that hour is the scarcest thing I have.\n\n## FAQ\n\n**What do you send when a prospect asks for your website and you do not have one?**\n\nSend the most verifiable third-party page you have â€” a marketplace storefront with a business licence and transaction history is stronger than a brand-new domain â€” plus one page of documentation built for the product family they named. Do not apologise for the missing site and do not explain it. Answer the question that was asked.\n\n**How long should a product one-pager be?**\n\nOne page. A marketer's small split test found a double-sided A4 sheet outperformed a twelve-page brochure by roughly three to one on a follow-up LinkedIn request. The mechanism is not mysterious: a brochure is a meal, a single sheet is a snack.\n\n**Do attachments in cold email hurt deliverability?**\n\nIn first contact, keep the email plain text with no attachment, no tracking and few links. Once someone has replied asking for documents, the attachment is what they asked for and the risk profile is different. If you want to know whether your attachment is what routes you to spam, the sending platforms all ship placement testing.\n\n**Can custom datasheets be generated automatically?**\n\nThe drafting can. Parse your existing material with Docling or MinerU, hold the values in YAML, render with a Typst template. Every technical figure still needs a human check against the source document before it leaves the building, because a wrong rating is a commercial claim rather than a formatting error.\n\n**Is a marketplace storefront a substitute for a company website?**\n\nNot for search, and not for the buyers who look you up before they reply. It works as a proof-of-existence link inside a conversation someone has already started. That is a narrower job than a website does, and it is the job I currently need done.",
      "date_published": "2026-07-30T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "cold-email",
        "export-sales",
        "sales-collateral",
        "document-automation"
      ]
    },
    {
      "id": "https://haoliglobal.com/blog/positive-reply-rate-vs-reply-rate",
      "url": "https://haoliglobal.com/blog/positive-reply-rate-vs-reply-rate",
      "title": "Positive Reply Rate vs Reply Rate: 282 Sends of Data",
      "summary": "My reply rate looked normal while my pipeline stayed empty. What the two numbers measure, and what 282 sends into industrial export markets showed.",
      "content_text": "On Friday I sent 37 emails to electrical distributors in Europe. Three came back by Saturday morning. Two were out-of-office notices, one of them from a company closed for the summer. The third was a short, reasonably polite note from a Swedish firm saying they had no use for what I sell.\n\nThree replies from 37 sends is 8.1 percent. Written into a weekly report, that is the best batch I have ever run. In practice nothing happened. No conversation started, no quotation was requested, and no company knows my name this morning that didn't know it on Thursday.\n\n## The two numbers are not the same measurement\n\nReply rate counts anything that arrives in the inbox. Out-of-office notices count. \"Remove me from this list\" counts. A rejection counts.\n\nPositive reply rate counts a human being who wants to keep talking.\n\nMost published benchmarks report the first one, and there is a boring reason for that: sending software can count total replies without anyone reading them, while sorting positive from negative needs a person or a classifier. So the number that gets published is the number that is cheap to produce, and it has drifted into being treated as the number that matters.\n\nI spent about six weeks comparing my results against it.\n\n## What 282 sends produced\n\nThe first round finished last Friday. Every name on the list has now been contacted once.\n\n- 282 emails total, 156 of them in the final week (25, 25, 40, 29, 37 across Monday to Friday)\n- 4 positive replies from decision-makers\n- 1 explicit rejection, from a Hungarian distributor who only handles explosion-proof equipment and central-battery emergency lighting\n- Several automated out-of-office notices\n\nFour positive replies from 282 sends is 1.4 percent, and I read that as bad news for most of the six weeks it took to send them. Against the 4 to 5 percent that turns up in every benchmark article, 1.4 looks like failure.\n\nThen I went and read what those benchmarks actually measure. [Sales.co's 2026 Cold Email Benchmark Report](https://sales.co/research/cold-email-statistics) analysed over two million cold emails sent between 2024 and early 2026 and found an average reply rate of 2.09 percent, of which 14.1 percent were positive, 29.9 percent negative, and 45.1 percent automated. The same report puts the effective interested-reply rate across all contacts at roughly 0.64 percent. My 1.4 percent is a little over double that.\n\nI should be careful with the comparison, because it is not clean. My list is 282 companies in one narrow industrial category, contacted from China into Africa, the Middle East, Europe and Southeast Asia. Two million contacts across every sector is a different animal, and 282 is a small enough sample that one more reply moves my rate by a third of a percentage point. But the direction is clear enough to act on. I was not failing. I was measuring against a number that describes a different thing.\n\n## Almost half of all replies are machines\n\nThat 45.1 percent figure also killed a theory I had written down on Saturday morning.\n\nI had assumed European buyers auto-reply more than my other markets because cold email is better established there and people have built defences. It felt like a real observation. But if nearly half of all replies everywhere are automated, then two out-of-office notices out of three on a Friday in late July says nothing about European market maturity. It says people take holidays in July. One batch of 37 is not evidence, and I was two hours from publishing it as though it were.\n\n## What the weekly report tracks now\n\nInstead of one number, four:\n\n- Emails sent\n- Human replies, with automated responses stripped out\n- Positive replies from a named decision-maker\n- Requests for materials that turn into an actual quotation\n\nThe fourth is the only one that pays for anything, and the gap between the second and the third is where most of the self-deception lives. If you would rather not sort this by hand every week, reply classification is a standard feature in the sending platforms.\n\nThe four positive replies break down less impressively than the headline suggests. One was a business director in Uganda stating plainly that he wanted to work together. One was a CEO in Bangladesh asking for a catalogue the same day. One was a chairman in Egypt writing a neutral line to say he was waiting to hear back. One was a director in Vietnam asking for our website and product documentation.\n\nOnly the first arrived looking like a qualified lead. The other three arrived looking like admin.\n\n## Which is why I stopped scoring replies\n\nEarlier in the week I gave an AI agent a sourcing job and asked for 300 companies. It found 300 companies and more than 170 email addresses, then applied its own three-part scoring logic to the results and recommended that I contact seven of them.\n\nThe research budget was already spent by then. Tokens, verification, my time reading the output. The scoring step ran after the money was gone and threw away 98 percent of what the money bought. An earlier run of the same pipeline finished at [11.4 percent end to end, 500 requested companies down to 57 contactable ones](/blog/ai-outbound-pipeline-yield), and all of that attrition happened before contact, which is where attrition is cheap.\n\nWorse, on the evidence above, a rubric like that would have discarded three of my four wins. A same-day catalogue request scores low on any interest rubric I have seen.\n\nSo the filters all moved forward. Geography, product-line overlap, whether the company is an authorised distributor, sanctions exposure, whether they sell anything adjacent to what we manufacture: all of that is checked before a single research call, and I wrote up [how that screen works and what it deletes](/blog/lead-qualification-emerging-markets) separately. After the research is paid for, the only question left is whether there is a named decision-maker with a verified address. After a human replies, there is no scoring at all.\n\nAt four positive replies per 282 sends you cannot afford to triage. Losing one is losing a quarter of the quarter.\n\n## The cost of doing it this way\n\nFollowing every faint signal to the end takes real hours. Writing the custom PDF, chasing the technical department for confirmation, building the quotation. My ceiling is about 40 emails a day across five rotating mailboxes, roughly eight per mailbox, sent in the morning and spaced out. Past that the follow-up work starts eating the quoting work, and the quoting work is the part that earns money.\n\nWhich means the permissive policy is affordable only because positive replies are rare. If my rate tripled I would need a second person, not a better rubric.\n\nThe Hungarian rejection, incidentally, was the most useful message of the week. It named a reason. Their product line does not overlap with mine, which tells me my pre-send screen leaked, and I can fix a screen. Silence tells me nothing at all.\n\n## FAQ\n\n**What is the difference between reply rate and positive reply rate?**\nReply rate counts every response, including out-of-office notices, unsubscribe requests and rejections. Positive reply rate counts only responses expressing genuine interest. In the Sales.co dataset, 45.1 percent of all replies were automated and 29.9 percent were negative, so the two numbers can differ by a factor of seven.\n\n**What is a good positive reply rate for cold email?**\nRoughly 0.64 percent of contacted people send a positive reply on industry averages. My own rate across 282 sends into industrial distribution is 1.4 percent. Any vendor benchmark quoting 4 to 5 percent is almost certainly quoting total reply rate.\n\n**Do out-of-office replies mean anything?**\nThey confirm the address is live and monitored, which is worth something for list hygiene. They are not pipeline, and leaving them in the reply-rate calculation inflates it substantially.\n\n**Should you score or grade cold email replies?**\nScore companies before you spend research budget on them. Do not score the replies. At normal positive-reply rates you receive too few to discard any.",
      "date_published": "2026-07-28T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "cold-email",
        "outbound-data",
        "emerging-markets",
        "export-sales"
      ]
    },
    {
      "id": "https://haoliglobal.com/blog/ai-outbound-pipeline-yield",
      "url": "https://haoliglobal.com/blog/ai-outbound-pipeline-yield",
      "title": "I Asked My AI Pipeline for 500 Leads and Got 57: The Real Yield Numbers",
      "summary": "500 requested, 57 contactable. Total API cost: about two dollars. The full funnel, why cost per lead misleads, and the rebuild I abandoned after three days.",
      "content_text": "Every article about AI-assisted outbound reports the same metric: cost per lead. The models got cheap, the number got small, and the conclusion writes itself — outbound is now essentially free, so send more.\n\nI run an AI-assisted lead pipeline for industrial exports out of Nanjing. My cost per contactable company is roughly three US cents. And I've come to think that number is one of the most misleading figures in outbound, because it describes the one part of the process that stopped being a constraint.\n\nHere's what actually happened on a recent run.\n\n## The funnel, with real numbers\n\nI asked the pipeline for 500 companies. Here is what survived each stage:\n\n- **Requested:** 500 companies.\n- **Complete records** — company plus a named decision-maker plus an email: 130–150, roughly 28% of what I asked for.\n- **Email addresses collected:** about 119.\n- **Passed bulk verification:** 74, or 62% of those collected.\n- **Distinct contactable companies: 57 — an end-to-end survival rate of 11.4%.**\n\nEleven percent. That is the number I have never seen published anywhere, and it's the number that actually governs planning. If you need to reach 200 companies, you don't source 200 — you source 1,700.\n\nTwo stages do most of the killing.\n\n**Completeness, not existence.** Getting 500 company names is trivial. Getting a company name *plus a verified named decision-maker plus a working email* collapses it to under a third. The pipeline can find companies all day; what it can't reliably find is the human inside them. Roughly seven in ten records died here, and almost all of them died on the person, not the company.\n\n**Verification.** Of the addresses that were collected, 62% survived bulk verification. That is not a criticism of the collection step — it's the expected outcome when you refuse to guess address formats and instead keep everything sourced and unconfirmed until a verifier rules. I'd rather discard 38% at a verification bill of a few dollars than discover the same 38% as bounces against my sending domain. I wrote about why guessing format is a prohibited operation in my system in [the post on disqualification rules](/blog/lead-qualification-emerging-markets).\n\n## What it cost\n\nThe sourcing stage: about ¥8 and 25 minutes of wall-clock time, running a low-cost model. The research and signal-detection stage: about ¥4, with most of the actual work done by non-LLM APIs rather than the model itself. With follow-on steps, roughly **¥14 total — a little under two US dollars — for 57 contactable companies with verified addresses.**\n\nThat's ¥0.25 per contactable company. Three cents.\n\nDrafting sits on top of that: a mid-tier model produces the first draft, a frontier model reviews and rewrites. That's the one place I deliberately spend more, because it's the only stage whose output a customer actually sees.\n\nSo: the entire acquisition and research layer for a batch costs less than lunch. This is the number everyone quotes. And it explains nothing about why my pipeline is slow.\n\n## The constraint is downstream, and it is physical\n\nHere is my sending configuration: five mailboxes per domain, five emails per mailbox on weekday mornings. That's **25 sends per day.** Before any of it runs, a new domain goes through roughly **24 days of warmup.**\n\nNow put the two halves together.\n\nGenerating 57 contactable companies: **25 minutes.**\nSending to 57 companies: **a bit over two working days.**\nMaking a fresh domain capable of sending at all: **24 days.**\n\nThe generation side is running about a hundred times faster than the delivery side. And the delivery side isn't slow because I chose a cheap tool — it's slow because sending more than that from a young domain damages its reputation, and a damaged domain silently degrades everything you send for weeks afterward.\n\nThis is why cost per lead is a trap. It measures the abundant resource. The scarce resources in this system are:\n\n- **Daily send capacity**, capped by deliverability physics, not budget.\n- **Domain reputation**, which is consumed by every bad address and every irrelevant send, and which cannot be bought back.\n- **My own attention**, since every email gets a human pass before it goes out.\n\nNone of those get cheaper when the model gets cheaper. Model prices have collapsed — open-weight models now sit at or below the price of the previously cheapest commercial options, and the trend is continuing. It has changed my API bill and it has not changed my throughput by a single email.\n\n## Reply latency, and why small batches lie to you\n\nTwo data points, both honest and both small. They come from **different batches in a three-batch program running across roughly two weeks** — I'm keeping them separate on purpose, because pooling batches to get a nicer denominator is how you manufacture a trend that isn't there.\n\n- **Batch 1** (the campaign I broke down [in an earlier post](/blog/cold-email-no-trigger-event)): 128 sends, three positive replies, the first arriving around send 60 at managing-director level.\n- **Batch 2**, much smaller: 44 sends produced one positive reply, from a C-level contact at a company in the Philippines, who asked for our product catalogue.\n- **Batch 3** is still going out as I write this. It has no numbers yet, and anyone quoting one would be guessing.\n\nThat Batch 2 reply arrived **four to five days after sending.**\n\nThat latency matters more than it sounds. At 25 sends a day, a 44-email batch takes two days to go out. If you check results at the end of the week and see nothing, you will conclude the batch failed — and you'll conclude it wrong. I nearly did. I wrote in my notes that I was getting impatient and expecting too much too fast, and then the reply landed.\n\nThe practical rule I've taken from this: **a batch is not evaluable until at least seven days after the last send.** Any dashboard that shows you a reply rate before then is showing you a partial number that will make you change a working system.\n\nApplied honestly, that rule disqualifies my own numbers. Three batches inside a two-week window means Batch 1's reply window was still open when Batch 2 started, and Batch 3 is in flight right now. So the figures above are running totals taken mid-experiment, not results. I'm publishing them anyway, labelled as such, because the alternative convention in this genre — wait until the number looks good, then present it as final — is worse. When these close out, I'll update them here whichever direction they move.\n\nThere's a second cost to compressing three batches into two weeks that I underestimated: overlapping reply windows make attribution harder. A reply landing today could belong to any of the three unless every contact carries its own send date. It does now. It didn't at the start.\n\nIt should also temper how you read both of those figures. One reply from 60 and one from 44 are not rates. They're anecdotes with denominators. I'm reporting them because the alternative — waiting until I have statistically meaningful data before publishing anything — is how this entire genre ends up containing nothing but vendor case studies.\n\n## Why I tried to replace my agent\n\nFor months the pipeline ran inside a general-purpose agent framework with my workflow encoded as a set of skills. It worked. I built the 100-plus-contact batches with it.\n\nI still tried to replace it, for one reason: **I couldn't see inside it.**\n\nI gave the agent a workflow and a library of skills. What I got back was output. What I did not get back was which skill fired, what each one contributed, which API calls each stage consumed, or which step was responsible for a given result. When a batch came out badly, I couldn't attribute the failure. When it came out well, I couldn't tell you why, which meant I couldn't repeat it deliberately.\n\nFor a system whose entire purpose is generating claims about real companies that I then send under my own name, that's not a minor ergonomic complaint. My drafting rules require every factual statement to carry a traceable source — that's the core of how I keep a language model from inventing a decision-maker. A pipeline that can't show its work is in tension with the standard I hold the output to.\n\nSo the plan was: build a small application that does the same thing, but itemizes everything. Every API call listed separately, every token counted, the framework structure written out explicitly. Observability first, cleverness second. A secondary goal was cost control — getting daily spend under a specific ceiling, which requires knowing where it goes.\n\n## Why that failed\n\nIt didn't work. I want to be precise about how it didn't work, because \"AI can't build software\" is not what I found.\n\nThe requirements were clear — I was specifying a workflow I had personally run hundreds of times. The method was reasonable: a frontier model produced the architecture and specifications, a coding model implemented against them, with explicit instructions to search open-source repositories for existing components rather than writing everything from scratch.\n\nWhat came out was a good-looking interface that could not execute the workflow. Ten-plus versions. Constant runtime errors. UI freezes. Each iteration fixed something and broke something adjacent. Three days in, after substantial token spend, the thing still would not run end to end.\n\nI stopped.\n\nThe honest post-mortem isn't \"the tools weren't good enough.\" Two things were true:\n\n**I was optimizing the fast half.** Everything I was building sat on the generation side of the pipeline — the side already running a hundred times faster than my ability to send. Even a perfect version of that tool would have moved my actual output by zero emails per day. I spent three days and a meaningful budget making the abundant resource slightly more abundant.\n\n**I was solving an observability problem with a rewrite.** What I actually needed was instrumentation: logging, per-stage cost attribution, a record of which step produced which record. That's a much smaller problem than a working application, and I could have attached most of it to the system I already had. I chose the rewrite because the rewrite felt like progress, and because specifying features to a model is genuinely pleasant work in a way that reading logs is not.\n\nThat second one is the trap I'd warn other people about. AI-assisted development makes building a new thing feel cheap, which biases you toward replacing systems when you should be measuring them. The cost only becomes visible three days later.\n\n## What I'm doing instead\n\n**Instrument the existing pipeline rather than rebuild it.** Per-stage record counts, per-stage cost, and a source trace on every generated claim. That's a logging problem.\n\n**Plan against yield, not volume.** 11.4% end to end is my current planning constant. If I need 100 companies contacted, I source 900. Sourcing more is nearly free; discovering the shortfall mid-campaign is not.\n\n**Track the two survival rates that move.** Completeness at ~28% and verification pass at 62% are the only two numbers in the funnel worth optimizing, because they're where 89% of the loss happens. Anything I do to the model layer is noise by comparison.\n\n**Stop treating model spend as the budget.** The real budget is sends per day and domain reputation. When those are the binding constraints, the correct response to cheaper models is not to generate more — it's to generate *better*, and send the same 25.\n\n**Don't evaluate a batch before day seven.** Written on the wall now.\n\n---\n\nNone of this means the AI layer is unimportant. It compressed a research process that used to take me hours per company down to minutes, and it did so at a cost that's effectively zero. That's real, and it's the reason I can run a list-building operation at all as one person.\n\nBut it moved a constraint rather than removing one. The bottleneck used to be finding and researching companies. Now it's the number of emails I can put into the world per day without wrecking my domain, and the number of drafts I can personally stand behind. Neither of those is on a pricing page.\n\n*Third of three posts on running outbound from Nanjing into emerging markets. Earlier: [what to do when a prospect generates no signals](/blog/cold-email-no-trigger-event), and [why my system deletes 69% of the companies it finds](/blog/lead-qualification-emerging-markets).*\n\n*The first outreach round is now complete. The follow-up report separates [reply rate from positive reply rate across all 282 sends](/blog/positive-reply-rate-vs-reply-rate).*",
      "date_published": "2026-07-21T00:00:00.000Z",
      "date_modified": "2026-07-28T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "cold-email",
        "outbound-data",
        "emerging-markets",
        "export-sales"
      ]
    },
    {
      "id": "https://haoliglobal.com/blog/lead-qualification-emerging-markets",
      "url": "https://haoliglobal.com/blog/lead-qualification-emerging-markets",
      "title": "The Disqualification Layer: Why My Outbound System Deletes More Than It Finds",
      "summary": "My outbound system killed 69% of sourced companies before I wrote a word. The four-step screen, the fake-company patterns, and the calibration rule.",
      "content_text": "Most outbound content is about finding companies. Channels, scrapers, directories, intent platforms — the entire genre is a search problem.\n\nAfter eighteen months of building a lead system for industrial exports out of Nanjing, I've concluded the search problem is the easy half. My sourcing channels can produce more companies than I can ever email. What determines whether the campaign works is the part that runs immediately afterward and throws most of them away.\n\nOn one recent batch, the screen took 36 sourced companies down to 11. That's a 69% kill rate before a single word of copy was written. The system I run is deliberately built so that the deletion logic is heavier, stricter and more documented than the acquisition logic.\n\nAnd the most important rule inside that deletion logic is one I've never seen written down in English: **your disqualification criteria are calibrated for developed markets, and if you apply them unmodified to emerging markets, you will delete your best buyers.**\n\n## The shape of the system\n\nThree stages, with a hard line about which parts a human owns.\n\n**Stage A — human-led.** Deduplication gate, sourcing, screening, email collection, verification.\n**Stage B — machine-led.** Deep research on survivors, then drafting.\n**Stage C — semi-automated.** I send. The system tracks, schedules follow-ups, and files replies back into the dataset.\n\nFour things the automation is never allowed to do: send email on my behalf, operate my Alibaba account, take over my WhatsApp or inbox, or commit to a price, lead time or term. Those aren't technical limitations. They're the boundary where an error stops being a bad email and starts being a business liability.\n\nEverything interesting happens in Stage A.\n\n## Step 0: the deduplication gate\n\nBefore any sourcing run, candidates are checked against a running exclusion file of companies already contacted. Three outcomes:\n\n- **BLOCK** — exact email match. Removed silently. No research, no email.\n- **WARN** — domain match, or company-name fuzzy match above 85% similarity. Flagged for me to confirm by hand.\n- **PASS** — clean. Proceeds to sourcing.\n\nThe fuzzy tier exists because company names are unstable across sources. The same firm appears as \"Acme Electrical Ltd\", \"Acme Electric LLC\" and \"ACME ELECTRICALS\" across a directory, LinkedIn and a customs record. Exact-match dedup catches none of it, and you end up emailing a company for the third time while believing it's a fresh lead. Normalizing away legal suffixes before comparison catches most of it.\n\nThis gate is boring and it is the highest-ROI component in the system. Nothing damages a reply rate like being visibly unable to remember who you already contacted.\n\n## Step 1: the four-step screen\n\nEvery surviving company runs a fixed sequence.\n\n**Website reality check.** Does it load? Is the content real, or template placeholder text? Are there actual product pages, project pages, contact details? Does the domain's country match the country the company claims? A European TLD on a company presenting itself as African is a flag, not a disqualification.\n\n**Buyer profile match.** I rank customer types explicitly rather than treating \"electrical company\" as a category:\n\n- **Electrical distributor or wholesaler** — best fit.\n- **EPC contractor** — best fit; high project procurement volume.\n- **Systems integrator** — strong; needs components.\n- **Small panel builder** — moderate; may buy components rather than build them.\n- **Mid-to-large manufacturer** — weak; a competitor, occasionally a partner.\n- **Pure manufacturer** — usually eliminate.\n- **Retail e-commerce or content blog** — eliminate.\n\n**Impostor detection.** Four recurring patterns, each with its own signatures. I'll cover these below.\n\n**Decision.** One flag marks the record. Two flags suggest elimination. Three or more eliminate automatically.\n\n## Step 2: the four impostor patterns\n\nThis is the part that has no equivalent in SaaS outbound, because in SaaS the companies on your list are real. In global industrial trade a meaningful fraction of what looks like a foreign buyer is not one.\n\n**Pattern A — trading company presenting as a local buyer.** Signatures cluster: a foreign TLD, a registered address and phone code from a different country than the one claimed, tax identifiers in a format belonging to that other country, and a contact email whose domain doesn't match the website's. Individually each is weak. Together they're conclusive.\n\n**Pattern B — a domestic manufacturer presenting as an overseas company.** Residual native-language artifacts in page source, a mail domain from the manufacturer's home country, two addresses coexisting on the contact page. I catch these constantly, and they matter more than you'd think: emailing a competitor a detailed capability pitch is worse than wasting a send.\n\n**Pattern C — marketplace listing pages masquerading as company sites.** URL paths containing manufacturer/supplier segments, a single product page and nothing else, and — the fastest tell — images hotlinked from a B2B marketplace's CDN, or footer markup left over from a free site builder. Free-mail contact addresses on a supposed corporate site reinforce it.\n\n**Pattern D — content farms.** Only \"how to\" and \"X vs Y\" articles. No product page, no project page, no team page. URL structures that betray a generic CMS blog template. No LinkedIn presence, or one with two employees. These rank well in search, which is exactly why they end up in scraped lists.\n\nEvery one of these patterns exists because the underlying source — a directory, a marketplace, a search scrape — has no incentive to distinguish a real importer from a page that ranks for importer keywords.\n\n## Step 3: the calibration rule that makes the whole thing work\n\nHere's the part I actually want to argue for.\n\nRun the four patterns above with Western defaults and you'll produce a list that is clean, defensible, and missing most of your real market.\n\nThree concrete cases from my own screening:\n\n**Free email as corporate email.** In Western Europe, Japan or the UAE, a distributor using a free mail account for business is a legitimate flag. In Bangladesh, Nigeria, Pakistan or Ethiopia it is ordinary practice at companies doing serious volume. Flag it there and you delete a large share of a real market.\n\n**Mobile-only, no landline.** A red flag in a developed market. Normal in most of Africa and South Asia, where messaging apps are the primary business channel and a landline signals nothing except an older office.\n\n**Multiple unrelated business lines.** In a Western context, an electrical distributor also selling generators, doing construction and importing tiles reads as unfocused or fake. In MENA and South Asian family businesses it's the standard structure, and often indicates exactly the capital base and import experience you want in a partner.\n\nSo the calibration runs *before* flags are counted, not after. The screen asks first: what's normal for a company of this size, in this country, in this decade? Then it evaluates. A rule that produces the right answer in Munich and the wrong answer in Dhaka isn't a quality standard. It's a geographic filter wearing one.\n\nI think this is the single most transferable idea in my system, and it generalizes past my industry: **every list-hygiene heuristic encodes assumptions about the market it was written in.** If your ICP is somewhere other than where the playbook was written, the heuristics need re-deriving, not importing.\n\n## Step 4: contact discovery, with a prohibition\n\nOnce a company survives, the system looks for a named decision-maker across LinkedIn, the company's own team and about pages, social profiles, and national business registries. Then one hard rule:\n\n**Guessing email format is forbidden.**\n\nNot discouraged — forbidden. The format must be confirmed against an aggregator or a documented public instance before an address is used. If it can't be confirmed, the record says \"not found — needs manual search\" and goes no further.\n\nThe reason is arithmetic. Pattern-guessed addresses bounce, bounces damage domain reputation, and a damaged domain silently degrades every campaign that follows for weeks. A guessed address that happens to be right saves ten minutes. A guessed address that's wrong costs a month.\n\nEverything that survives goes through bulk verification, and only results returning a clean status are kept. In one recent run, 62% of collected addresses passed — [the full survival numbers and what the pipeline costs are here](/blog/ai-outbound-pipeline-yield). Each company keeps two to three addresses: the named decision-maker, a role address, and a fallback — plus a non-email channel where one exists.\n\nOne thing that surprised me: the same company frequently holds multiple live domains, including legacy ones from before a rebrand or an acquisition. Reverse cross-referencing verified addresses back against known company domains catches these merges. It also catches something more important — companies that have been acquired by a major brand, which changes their signal profile entirely.\n\n## The anti-hallucination rules\n\nBecause most of the research is machine-executed, the system carries six standing rules that outrank every other instruction:\n\n1. Every factual claim — name, title, email, project, figure — must carry a traceable source URL.\n2. Anything not found is written as \"not found.\" Inference to fill gaps is prohibited.\n3. A list I supply myself is not an authoritative source. Every name is independently verified.\n4. Product certification claims are checked line by line against what we actually hold. Claiming a certification we don't have, because it sounds credible, is an unrecoverable error.\n5. Every outbound email ships with a sentence-by-sentence translation and per-sentence source, so I can verify it before sending.\n6. Decision-maker details are never fabricated. Not found means not found.\n\nRule 4 deserves emphasis for anyone selling regulated hardware. Certification language is a legal exposure, not a selling point, and a language model with no grounding will absolutely write a certification into your email because it makes the sentence stronger. I wrote about this constraint and the rest of the compliance layer in [my first post on cold emailing without a trigger event](/blog/cold-email-no-trigger-event).\n\n## Where my own system and my own results disagree\n\nNow the uncomfortable part.\n\nThe signal engine scores companies against sixteen signal categories — customs import surges, tender awards, contract wins, expansion announcements, leadership changes, hiring spikes, exhibition attendance and so on — with combination bonuses when several fire together, because multiple simultaneous signals indicate genuine buying intent rather than noise.\n\nAnd it carries an iron rule:\n\n> Weak signals — static facts like founding year, headcount, or holding a brand distributorship — **do not justify an email**. Strong signals — a dynamic event — trigger drafting immediately. No signal means the account is parked and waits.\n\nThat rule says, unambiguously, that the campaign I published my first post about **should not have been sent**. In that batch, 111 of 128 accounts had no dynamic signal at all. I emailed them anyway, using exactly the kind of static brand-relationship fact my own system classifies as insufficient. It produced three positive replies — below the average benchmark for overall reply rate, above it for positive replies.\n\nI'm not going to resolve this cleanly, because I haven't earned a resolution. Three honest readings:\n\n1. **The iron rule is right and I got lucky.** Three replies is not a sample. A signal-gated campaign might have produced the same replies from a tenth of the sends.\n2. **The iron rule is right about priority, wrong about permission.** Signals should determine *order* and *effort*, not whether an account is contactable at all. Parking 87% of a market indefinitely is not a strategy when signals in that market are structurally scarce.\n3. **The iron rule was written for a market that generates signals.** Customs surges, tender awards and hiring spikes are all detectable in some countries and effectively invisible in others. A rule that gates outreach on detectable events quietly gates it on data availability.\n\nI lean toward the second and third. But I built the first rule myself, deliberately, and I'm not going to pretend I've disproven it with three replies.\n\nThe reason I can't settle this yet is a measurement failure I've already admitted: I didn't tag replies by signal tier. So I cannot tell you whether those three came from the seven signal-bearing accounts or the 111 without. That tagging is now mandatory on every send, and when there's enough data I'll publish the split whichever way it falls — including if it says my own system was right and I was wrong to override it.\n\n## What I'd tell someone building this\n\n**Write the disqualification rules before the sourcing rules.** Sourcing capacity is not your constraint. Judgment is.\n\n**Make \"not found\" a legal output.** Any research system that can't return nothing will return fiction instead.\n\n**Audit your heuristics for where they were written.** This is the one that cost me the most to learn. Most outbound advice, including most of the good advice, was written by people selling software to companies in North America and Western Europe. The tactics port. The *disqualification criteria do not*, and they're the part that silently deletes your market.\n\n**Separate what a machine decides from what it executes.** Research, scoring and drafting are fine to automate. Sending, pricing and committing are not — not because the machine is bad at them, but because the failure mode is unbounded.\n\n---\n\n*Second of three posts on running outbound from Nanjing into emerging markets. The first covers [what I do when a prospect generates no signals at all](/blog/cold-email-no-trigger-event) — including the campaign this post argues my own system should have blocked.*",
      "date_published": "2026-07-20T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "cold-email",
        "outbound-data",
        "emerging-markets",
        "export-sales"
      ]
    },
    {
      "id": "https://haoliglobal.com/blog/cold-email-no-trigger-event",
      "url": "https://haoliglobal.com/blog/cold-email-no-trigger-event",
      "title": "Cold Email With No Trigger Event: 128 Sends, 3 Replies, Real Data",
      "summary": "87% of my 128-account list had no buying signal. Here's the static-anchor method I used instead, and the real reply numbers it produced.",
      "content_text": "Every serious guide to cold outreach published in the last two years says the same thing: find a trigger, then write the email. A funding round. A leadership change. A hiring surge. A tool migration. The trigger becomes the reason you're in their inbox, and the first line writes itself.\n\nI believe that advice. I also can't use it.\n\nI run export business development from Nanjing, China. I sell switchgear, ring main units and transformers into Africa, the Middle East and Southeast Asia. In July I built a list of 128 target accounts and worked through it. Here is what the signal audit looked like before I wrote a single email:\n\n- **Tier A — a real, recent, verifiable event:** 7 accounts, 5.5%\n- **Tier B — a weak or ambiguous signal:** 9 accounts, 7.0%\n- **Tier C — no dynamic signal at all:** 111 accounts, 86.7%\n- **Held for sanctions or compliance review:** 1 account, 0.8%\n\nEighty-seven percent of my list had nothing. Not a thin signal — nothing. No funding announcements, no LinkedIn posts, no press releases, no job listings, no product launches. An electrical distributor in Alexandria or Dhaka or Almaty does not broadcast. They have a website that was last updated in 2019 and a WhatsApp number.\n\nSo what do you do with 111 accounts that the entire outbound playbook says you shouldn't email?\n\n## The variable everyone gets wrong\n\nThe standard argument for signal-based outreach is that timing is the lever — you're catching someone in the window where the problem is live. That's real, and I'm not disputing it.\n\nBut it's not the mechanism doing the work in the first line.\n\nThink about what actually happens in the recipient's head. They open a cold email. In roughly two seconds they answer one question: *was I selected, or was I scraped?* That's it. That's the entire gate. Everything downstream — whether they read sentence two, whether they reply — sits behind that judgment.\n\nA funding round passes that gate. But it passes it because it's **specific and verifiable**, not because it's recent. Recency is a proxy. The real variable is verifiable specificity: something true about *them* that you could not have known without looking, and that they can confirm is accurate the instant they read it.\n\nWhich means the correct question isn't \"do they have a trigger event?\" It's \"do I have a fact about this company that survives contact with the person who works there?\"\n\nFor 111 of my accounts, the answer was yes. Just not a dynamic one.\n\n## Static anchors: what I used instead\n\nA static anchor is a fact that's been true for years and will still be true next year. It has no urgency. It has full specificity. Here are the four categories that worked on an industrial distributor list:\n\n**1. Authorized brand relationships.** \"You're an authorized Eaton distributor in [country].\" This is public, verifiable on the manufacturer's own partner locator, and — critically — it's *identity*. People who hold an official distribution authorization are proud of it. It's on their letterhead. Referencing it correctly signals you looked at their business rather than their industry code.\n\n**2. Product-line adjacency.** What they already carry tells you what they don't. A distributor stocking LV panels and ATS units but no medium-voltage switchgear has a defined gap. You're not guessing at a pain point; you're reading their catalog.\n\n**3. Market and regulatory position.** An EAEU-market distributor operates under different certification pressure than a Gulf one. A hazardous-area specialist has constraints a general electrical wholesaler doesn't. Naming the constraint correctly proves domain knowledge in a way no amount of clever copy can fake.\n\n**4. Structural role.** Authorized panel builder vs. channel partner vs. stocking distributor are three different businesses with three different problems. My list had 103 distributors, 20 channel partners and 5 authorized panel builders — and treating them identically would have been the fastest way to sound scraped.\n\nNone of these are triggers. All of them pass the \"was I selected or scraped\" gate.\n\n## The rule that made this workable\n\nI write cold emails with AI assistance, and the single most important constraint in my prompt system is negative:\n\n> **When there is no real signal, you may not manufacture one.**\n\nNo \"I saw your recent expansion.\" No \"I noticed you've been growing your team.\" No vague \"I came across your company and was impressed by your work in the sector.\" If I cannot point to a specific verifiable fact, the email opens on the static anchor and nothing else.\n\nThis sounds obvious. It is not what most AI-assisted outbound actually does. Hand a language model a company name and tell it to personalize, and it will produce a plausible-sounding observation that is quietly false. Your prospect knows it's false. That's a worse outcome than a plain email — you haven't just failed to prove selection, you've proved fabrication.\n\nI also manually edit every AI-drafted email before it goes out. That's not purism; the drafts that got human touch-up ran meaningfully better than the ones that didn't. The model is a first-draft engine and a research compressor, not a sender.\n\n## The numbers, honestly\n\nThis is where most posts like this inflate. I'm not going to.\n\nAll figures below are from this one 128-account batch — the first of three batches going out across a two-week window. A later, separate campaign is covered in a different post, and I've kept them apart deliberately: merging batches is how people accidentally invent trends.\n\n- **~60 emails sent → 1 positive reply** from a managing director.\n- **At 120 emails → 2 more:** an engineer in Bangladesh and a CEO in Egypt, both asking for product catalogs.\n- **3 positive replies across 128 sends ≈ 2.3%.**\n\n**These are running totals, not final ones.** The reply window on this batch is still open, and I have a documented case of a positive reply arriving four to five days after send. If a fourth reply lands next week the rate moves to 3.1%, and I'll say so here rather than quietly leaving the old number up. Treat every figure in this post as a reading taken mid-experiment.\n\nPublished benchmarks put average cold email reply rates around 4.5%, with positive reply rates near 1.4%. So my *overall* reply rate is below average, and my *positive* reply rate is above it. Both facts are true and neither is a victory lap.\n\nTwo things to say about that.\n\nFirst, this list was deliberately hostile. Any campaign built on 87% no-signal accounts should underperform a campaign built on funding-round triggers. The relevant comparison isn't \"signal-based outreach vs. mine\" — it's \"static-anchor outreach vs. not emailing these 111 companies at all.\" On that comparison, the static anchors won.\n\nSecond, and more importantly: **I did not tag replies by signal tier.** I don't know whether those three replies came from the 7 A-tier accounts or the 111 C-tier ones. That is the single biggest hole in this data set, and it means the strongest version of my own argument is currently unproven. I'm fixing it in batch two — every send gets tagged, and I'll publish the split whichever way it falls.\n\nWorth being explicit about something else: these 128 accounts are what *survived* screening, not what I sourced. The rules that decide which companies get deleted before anyone writes them an email are documented separately in [the post on my disqualification layer](/blog/lead-qualification-emerging-markets), and they kill far more of the pipeline than any copywriting decision ever will.\n\nIf you take one methodological thing from this post, take that one. Most outbound \"results\" you read are un-segmented totals that can't distinguish the tactic being sold from everything else in the campaign.\n\n## The layer nobody writes about\n\nThere's a whole category of constraint in cross-border industrial outbound that simply doesn't exist in the SaaS-centric content everyone reads. It shaped my emails more than any copywriting decision:\n\n**Certification language is a legal exposure, not a selling point.** My emails mention no certification marks at all — not CCC, CQC, CE, IEC, ATEX or IECEx. Medium- and high-voltage products in my category don't carry CCC or CQC, and I don't hold European conformity documentation. Writing \"CE certified\" into a cold email because it sounds credible is how you create a problem that outlives the deal.\n\n**Explicit scope disclaimers.** Roughly 36 accounts on my list serve hazardous-area applications. Every email to them states plainly that we supply standard industrial power distribution equipment, not certified explosion-proof products. I lose some of those conversations at the first line. I'd rather lose them there than at the purchase order.\n\n**Sanctions and export control.** One account in a sanctioned jurisdiction never received an email. No copy was written for it at all — it goes to legal review first, and until that clears, it doesn't exist as a prospect. Two accounts in EAEU countries got flagged for mandatory-certification review before outreach.\n\n**Calendar awareness.** No bulk sends during Ramadan across the MEA segment. This is not a deliverability tactic. It's the minimum competence you'd expect from someone claiming to understand the market.\n\nNone of this shows up in a cold email course. All of it determines whether you're a supplier or a liability.\n\n## What I'm changing in batch two\n\n1. **Tag every send by signal tier** so the core claim in this post becomes testable.\n2. **Split-test static anchor types** — brand relationship vs. product-line gap vs. regulatory position — on matched segments.\n3. **Cap at 1–2 decision-makers per company.** Contacting one to two people per account outperforms three or more by a wide margin, and it also protects the receiving domain from looking spammed.\n4. **Keep open-tracking off.** Campaigns without open tracking reply better, and the tracking pixel buys me nothing I actually act on.\n5. **Source against yield, not against volume.** A batch of 128 contactable accounts is not the output of sourcing 128 companies — it's the output of sourcing roughly ten times that, then screening and verifying down. I broke the full funnel down with real cost and survival numbers in [this post on pipeline yield](/blog/ai-outbound-pipeline-yield).\n6. **Three touches, then stop.** Three messages roughly doubles total reply rate versus one. A fourth and fifth doesn't; it just annoys people who already decided.\n\n## The takeaway\n\nSignal-based outreach isn't wrong. It's *unavailable* to a large share of the people being told to do it — anyone selling into markets where buyers don't broadcast, which is most of the world outside US and European tech.\n\nIf that's you, don't fake the signal. Find the fact. A verifiable static anchor does the same job as a trigger event, because the job was never timeliness. The job was proving you looked.\n\n---\n\n*This is the first of three posts on how I actually run outbound from Nanjing into African, Middle Eastern and Southeast Asian markets. The second covers [the screening rules that delete most of my pipeline](/blog/lead-qualification-emerging-markets); the third covers [what the whole thing costs and what fraction of it survives](/blog/ai-outbound-pipeline-yield). Batch two results, segmented by signal tier, will be posted here.*",
      "date_published": "2026-07-19T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "cold-email",
        "outbound-data",
        "emerging-markets",
        "export-sales"
      ]
    },
    {
      "id": "https://haoliglobal.com/blog/email-authentication-for-international-outbound",
      "url": "https://haoliglobal.com/blog/email-authentication-for-international-outbound",
      "title": "SPF, DKIM and DMARC for International Outbound Email",
      "summary": "A practical guide to checking SPF, DKIM, DMARC, alignment, and sender requirements before testing outbound email in a new international market.",
      "content_text": "International outbound email fails in two different ways. The offer can be irrelevant, or the sending infrastructure can make a legitimate message look untrustworthy before anyone reads it. SPF, DKIM, and DMARC address the second problem. They do not make weak outreach persuasive, and they do not guarantee inbox placement.\n\nUse the free [email authentication readiness checker](/tools/email-auth-checker/) before a small new-market outreach test. It separates missing records from DNS failures and only checks DKIM when you supply the selector your provider actually uses.\n\n## Start with a separate sending identity\n\nDo not experiment with unproven outbound campaigns from the same identity that carries invoices, password resets, support replies, and customer communication. A separate subdomain or carefully controlled secondary domain limits operational damage if list quality, message relevance, or complaint handling is poor.\n\nThat separation does not remove the obligation to identify yourself, respect opt-outs, and follow the rules in the recipient's market. It simply keeps an acquisition experiment from becoming a single point of failure for the rest of the business.\n\n## What SPF actually answers\n\nSPF publishes which sending systems are allowed to use a domain in the SMTP envelope. A receiver evaluates the connecting IP against mechanisms such as `include`, `ip4`, `a`, and `mx`.\n\nThe most common operating failures are:\n\n- publishing more than one SPF record;\n- forgetting a legitimate platform after switching providers;\n- using `+all`, which authorizes every sender;\n- exceeding the ten DNS-lookup limit through nested includes;\n- copying a record without understanding which domain it protects.\n\nSPF alone does not authenticate the visible From address that a recipient sees. That is why alignment matters later in DMARC.\n\n## Why DKIM needs a selector\n\nDKIM signs selected message headers and the body with a private key. The receiver retrieves the corresponding public key from DNS. The DNS name includes both the signing domain and a selector, commonly shown as the `s=` value in a `DKIM-Signature` header.\n\nSelectors are not standardized names. Google Workspace, Microsoft 365, an email service provider, and an internal mail system can all choose different selectors and rotate them over time. A checker that tries ten popular names and reports \"no DKIM\" is making a stronger claim than the evidence allows.\n\nUse the selector from the provider's setup screen or inspect a real signed message. Then verify that the exact DNS record exists and contains a non-empty public key.\n\n## What DMARC adds\n\nDMARC connects the visible From domain to SPF or DKIM through identifier alignment. It also publishes what a receiver should do when aligned authentication fails.\n\n| Policy | Operational meaning |\n| --- | --- |\n| `p=none` | Collect evidence without asking receivers to quarantine or reject failures. |\n| `p=quarantine` | Ask receivers to treat failing mail as suspicious. |\n| `p=reject` | Ask receivers to reject failing mail. |\n\nMoving directly to enforcement without inventorying every legitimate sender can block real mail. A safer sequence is to publish reporting, observe the sources, correct alignment, and then increase enforcement deliberately.\n\n## Authentication is not deliverability\n\nA domain can pass SPF, DKIM, and DMARC and still perform badly. Receiving systems also consider sender and IP reputation, complaint rates, recipient engagement, reverse DNS, TLS, message formatting, unsubscribe behavior, and the quality of the underlying list.\n\nFor a new market, infrastructure checks must sit inside a broader experiment:\n\n1. Select a small group of accounts with a clear reason to care.\n2. Write messages that reflect the market and the buyer's operating context.\n3. Authenticate the sending identity and verify alignment.\n4. Make opting out immediate and durable.\n5. Measure replies and negative signals before increasing volume.\n\nThis is the same operating discipline described in [cold email with no trigger event](/blog/cold-email-no-trigger-event): the first batch should buy evidence, not justify scale.\n\nAuthentication also cannot rescue a poor list. Apply the same evidence standard used in [the disqualification layer for emerging-market outbound](/blog/lead-qualification-emerging-markets) before a message reaches the sending queue.\n\n## A practical pre-send checklist\n\nBefore the first campaign, confirm:\n\n- the domain has one valid SPF record;\n- every legitimate sender is represented without crossing the lookup limit;\n- a real test message contains a passing DKIM signature;\n- the From domain aligns with SPF or DKIM;\n- DMARC reporting reaches a mailbox or reporting service someone reviews;\n- the campaign identifies the sender and provides a working opt-out;\n- reply handling and suppression are operational before volume increases;\n- the message has been tested with a small, relevant account set.\n\nRun the [SPF, DMARC, and DKIM readiness check](/tools/email-auth-checker/), save the findings internally, and fix the infrastructure before judging the market from campaign results.\n\n## What the evidence should change\n\nIf authentication fails, stop and repair the sending setup. If authentication passes but replies remain weak, do not hide behind technical metrics. Revisit the segment, trigger, offer, proof, and localization. The point of a controlled international outbound test is to learn which constraint is real before spending more money or sending more messages.",
      "date_published": "2026-07-18T00:00:00.000Z",
      "date_modified": "2026-07-22T00:00:00.000Z",
      "authors": [
        {
          "name": "Li Hao",
          "url": "https://haoliglobal.com/about/"
        }
      ],
      "tags": [
        "cold-email",
        "outbound-data",
        "email-authentication"
      ]
    }
  ]
}
