wGrow
menu
Inside the Selection Crew: six analysts brief the buy, the buyer signs the PO.
AI & Agents 29 April 2026 · 11 min

Inside the Selection Crew: six analysts brief the buy, the buyer signs the PO.

By Scott Li ·

How the Selection Crew briefs an e-commerce buy across six lanes — market intelligence, trend forecast, competitor radar, keyword research, arbitrage scout, sentiment — in EN ⇌ 中文, async, with a downloadable .docx the buyer signs before procurement moves.

The Selection Crew runs on the ArightAI platform behind every product-selection and sourcing decision a category buyer makes. Six narrow analysts — market intelligence, trend forecast, competitor radar, keyword research, arbitrage scout, sentiment — read the destination market, surface the structural drivers, and ship a downloadable brief in the buyer’s language. The buyer reads, downloads the .docx, signs, raises the PO. The crew briefs; the human commits.

This is the part of the platform I work on day-to-day. What I’m describing is what we built, why each lane needed its own agent, and the failure modes a single “category research bot” would walk straight into.

What “one research agent for sourcing” failed at

We tried it. The temptation is real — “given a product and a market, brief the buy.” The output looked like an investor deck. It bought us nothing.

Average-of-everything. A single agent given six different research methodologies smooths them into one. The market-share section reads like a trend forecast. The trend forecast reads like sentiment. The buyer needs them separated — market saturation, seasonal lift, supplier complaints, search intent are different decisions made on different evidence.

Confident on no horizon. The agent would say “trending” without naming a horizon. “Trending” is not a brief. A buyer needs the multiplier and the date — 4× lift across the 6.6 mid-year window in Indonesia — or the brief is unactionable.

No competitors named. Asked for “the competitive landscape”, the agent would invent a category-shaped composite. Asked for “monitoring on these five competitors”, the agent had nothing real to say. Generic competitor analysis is worse than none.

Currency wandering. A pricing band in USD became a band in IDR, then in MYR, sometimes in the same brief. The agent was conflating channels, regions and pricing tiers because it was trying to be all of them at once.

The fix was the same shape as every other crew: six narrow agents, one lane each, each with a distinct methodology, each producing a distinct output the buyer reads as a separate brief.

The shape

SIX ANALYSTS · ONE LANE EACHMARKET.ANALYSTshare · price bands · channelsTREND.ANALYSTmultipliers · seasonal anchorsCOMPETITOR.RADARnamed brands · monitoring focusKEYWORD.RESEARCHintent · seasonal lift · local langARBITRAGE.SCOUTlanded price · margin bandSENTIMENT.ANALYSTcompetitor reviews · complaintsBRIEF QUEUEasyncauto-refreshingEN ⇌ 中文 toggle.docx downloadCATEGORY BUYER (HUMAN)reads the briefdownloads the .docxsigns the buyraises the POFIG. 01 · ASYNC QUEUE · BUYER ON THE OTHER SIDE OF THE GLASS

The buyer types a question in their own language. Should we list bluetooth speakers in Indonesia? How does business-backpack demand swing in Malaysia? Where’s the arbitrage between Yiwu sourcing and SG retail on a Bose-shaped headphone? The right analyst picks it up. Jobs run async — a thirty-second-to-three-minute window per brief depending on the lane. The console auto-refreshes; the buyer goes to lunch and comes back to a queue of completed jobs.

Async matters. Synchronous research-bots that wait for a model to finish are a UX disaster — buyers task-switch, sit on the wrong tab, lose context. Async with a queue and notifications is how an actual researcher works. We modelled the UI on a Slack-message-thread, not a chat.

What an analyst actually does

Six lanes, six methodologies, six output shapes. None of them is paraphraseable into another.

market.analyst — Target market plus product. Returns competitive market share as a pie of named brands, pricing bands by tier (entry / mid / premium) with currency-anchored ranges, online-vs-offline channel split, executive summary that names the structural drivers. Cited back to listings and channels. The analyst reads a curated list of marketplace top-sellers, top-3 channels by category, sectoral reports for the destination market — not the open web.

trend.analyst — Target market, category, forecast horizon. Returns a stable / rising / cooling verdict, price bands by tier, and seasonal demand multipliers tied to the local calendar — 6.6 and 7.7 mid-year, Merdeka Day, school-holiday windows, Lunar New Year. Multipliers are numbers (3×, 4×, 4.5×), not adjectives. The horizon is on the brief.

competitor.radar — Named competitors, named monitoring focus. Tracks listing velocity, price moves, assortment changes, claim shifts on the brands the buyer cares about. The agent runs against brands the buyer wrote down — not a “category landscape.” If the buyer didn’t name competitors, the brief comes back empty with a request for names.

keyword.research — The destination market in its own language. Surfaces the search terms buyers actually type, with intent shape (browse vs buy vs compare) and seasonal lift. The output is the listing copywriter’s input — searches the listing should land on, plus the longer-tail searches that are still uncontested.

arbitrage.scout — Base market and unit cost in. One or many target markets out, with the realistic landed-price spread, target tier the unit lands in, and the margin band that survives shipping, duty and platform fees. The buyer can defend the brief in a P&L review.

sentiment.analyst — Mines reviews on the named competitor brands. Surfaces the recurring praise and the recurring complaints. The output is a supplier brief — what to ask the factory to fix on this generation of the unit.

Each brief is dated, sourced, downloadable. In the buyer’s language.

The brief format

BRIEF · MARKET · PRODUCT · CURRENCY · HORIZON · DATE · ANALYSTEXECUTIVE SUMMARYthree structural drivers — named, not “growth is robust”EVIDENCE BLOCK 01market share · pie of named brandscited per sliceEVIDENCE BLOCK 02price bands · entry / mid / premiumcurrency-anchored, range + baseEVIDENCE BLOCK 03channel split · online vs offlineCITATIONS · LIVE URLSlistings · sectoral reports— signed off by [buyer name] · [date]

Every brief carries the same shell: header (market, product, currency, horizon, date, originating analyst), executive summary (three structural drivers, named — not “growth is robust”), four to six evidence blocks specific to the lane, a live-URL citation list, a signing line for the buyer.

The shape is deliberate. It is not a chat transcript. It is a document the buyer can put in front of a category director and defend. The brief survives the meeting; a chat transcript doesn’t.

What we won’t ship

Five rules. They look like marketing copy on the platform page; under the hood they are gates the verifier and the brief renderer enforce.

No fabricated market shares. Every chart links back to the listings, channels and signals it pulled from. If a source rots, the number is flagged on the next refresh, not silently kept. The brief has a “freshness” indicator per source.

No supplier roster pretending to be an agent. The crew briefs the buy. Supplier conversations, MOQs, sample policy, contract terms are the human buyer’s job. We won’t simulate a relationship that has to be earned.

No “trending” without a horizon. Every forecast names its horizon and the seasonal anchors it weights. The renderer rejects a brief that doesn’t have a horizon set.

No competitor radar without named competitors. The agent rejects the brief in this case and asks the buyer to name competitors. We won’t paint a category landscape that is really a guess.

No buy decision without the buyer signing. Every brief is downloaded, read, and signed off before procurement moves. The crew sources intelligence; the human commits inventory.

How we built it

Phase 1 — market analyst alone. Six weeks. We started with market intelligence only because it has the longest tail of failure modes and the clearest output shape. The first version was confident and largely fabricated. We added a curated source registry per market — about forty sources for Indonesia, about sixty for China, named marketplace top-sellers and sectoral reports. The agent reads the registry; it does not crawl.

Phase 2 — trend, then competitor. Six weeks. Adding the trend analyst was straightforward; the seasonal-anchor calendar was the new artefact (a per-market table of anchors and their historical lift multipliers). Adding the competitor radar required the named-competitor constraint up front — we built the request flow to demand named brands before the analyst would run.

Phase 3 — keyword and arbitrage. Five weeks. Keyword research needs marketplace search-term data. Arbitrage needs unit-cost-to-landed-cost math, including platform fees, shipping by weight class, duty by HS code, GST/VAT by destination. The math is deterministic once you have the inputs; the analyst’s job is to collect inputs and render the math, not to estimate.

Phase 4 — sentiment. Three weeks. Mining competitor reviews was the easiest agent to build but the hardest to keep on-spec — it had a habit of summarising into PR-style positivity. The fix was a tier-01 prompt that says explicitly: surface complaints, not praise; surface recurring patterns, not anecdotes; the supplier reads this brief.

Phase 5 — async queue, .docx renderer, EN ⇌ 中文. Four weeks. The queue made the crew usable for buyers with multiple briefs in flight. The .docx renderer made the briefs portable into procurement workflows. EN ⇌ 中文 went through every brief shell so a buyer in Shenzhen reads the same brief as a buyer in Singapore.

Total: about six months from first analyst to today’s six-lane shape.

What I’d build differently

Three.

Source-freshness as a first-class field. Every brief shows source URLs, but we don’t currently surface “this URL was last live on date X” alongside the citation. We should. A buyer reading a brief two weeks after generation needs to know which evidence has aged and which hasn’t.

The seasonal-anchor calendar belongs to the operator, not the agent. Per-market seasonal multipliers are tier-04 today — read by the trend analyst, written by the operator. They should be exposed in a UI the operator updates after each campaign cycle, with the actual lift observed becoming the prior for the next year. We have the data; we don’t have the loop closed yet.

Currency conversion at render, not at analyst time. Some early briefs had multiple currencies because analysts called conversion in-flight. The right pattern is to keep the brief in the source currency throughout the analyst stage, and convert at render only — with the FX rate and date stamped on the brief. We are halfway here.

The shape ports. Six analysts becomes a different cardinality for a different sourcing function — fashion buying, food and beverage, industrial procurement, regulated medical. The methodologies change. The crew shape — narrow lane-specialist analysts, an async queue, a buyer-readable brief, a human in the only seat that signs — holds across every category.

— Scott Li, wGrow