Not a chatbot. Not a scraper. A fully autonomous agent that owns the supplier-sourcing lifecycle end to end — finding suppliers, verifying contacts, posting RFQs, chasing quotes, tracking samples, negotiating terms — across Alibaba and a stack of live business systems, on a schedule, from anywhere, while healing and improving itself.
Everything a human in this seat does daily — finding, qualifying, quoting, sampling — turned into deterministic, auditable, around-the-clock automation.
The human stays in the loop where it matters. The agent drafts, never sends blind. Cold outreach is verified before send, quotes are logged but a supplier is never approved without sign-off, and the handoff to procurement is an explicit checklist. It does 95% of the legwork and asks for a decision on the 5% that commits the company.
Every autonomous agent I ship is the same four-part stack. The harness gives it a body and a clock; tools give it hands; skills give it know-how; the database gives it memory — and a permanent record of every action, error, and run.
The agent shepherds a material through a strict, verifiable sourcing pipeline. Each stage has an owning skill, a logged output, and a gate before it advances. Sourcing finds, qualifies, and quotes — then hands a clean package to procurement.
A supplier is never recommended on a single bid. The agent enforces the "get three competitive quotes" rule before any comparison goes to a human.
Every cold-outreach address is run through deliverability checks first — no burning sender reputation on dead inboxes.
Sourcing's job ends at an approved supplier with documented price, MOQ, lead time, and pre-negotiated terms — a package procurement can issue a PO against immediately.
Alibaba has no usable buyer-side API — direct HTTP returns 503 against their signed-request scheme. So the agent drives the real portal through a browser. ali-cli is a first-class command-line tool (Python + Playwright) that logs in once via a cloud browser, then runs everything else locally and free.
ali monitor | full inbox + RFQ sweep in one session (~20s) |
ali messages | list conversations & unread supplier messages |
ali send | reply to a supplier thread (text / image / file) |
ali rfqs · rfq-quotes | list RFQs and pull comparison pricing |
ali post-rfq | post a new RFQ with an attached spec |
ali keepalive | refresh cookies locally — avoids a paid re-login |
ali doctor | self-test suite + auto-recovery + issue analysis |
Most "integrations" need a clean API. Alibaba doesn't offer one — it actively blocks automated access. The agent operates the same web UI a human uses, surviving OTP login, session expiry, captchas, and silent DOM redesigns.
Login costs run near zero: a daily keepalive refreshes cookies in free local Chromium, so the paid cloud browser only fires when a session truly ages out.
PlaywrightBrowser UseGmail OTPcookie cacheEach skill is a self-contained, tested SKILL.md the agent invokes by intent. They auto-load from the repo, so the same skills run identically whether a human asks in chat or a cron job fires at 7 a.m.
Finds suppliers for any material via Alibaba, ImportYeti, trade-show exhibitor lists & LLM research — outputs a ranked list.
discoveryGeneral Alibaba navigation: browse products, vet supplier credentials, extract chat history.
discoveryPre-sourcing briefing: PO history, sample status, every quote on file, and a recommended action.
researchCold & re-engagement campaigns — pulls potential suppliers from Baserow, personalizes HTML emails, attaches the RFQ.
outreachValidates deliverability with Bouncer before any cold send — protects sender reputation.
outreachWhen a supplier has no email, submits the website contact / sample form via browser automation.
outreachDrafts on-brand replies to live supplier threads, negotiates, and logs every interaction.
commsGenerates Excel RFQ files for pouches, bottles, caps, scoops, shrink bands & poly bags.
rfqPosts RFQ listings on Alibaba and reposts expired ones via ali-cli.
rfqCompares incoming RFQ quotes side-by-side; verifies products match spec.
rfqOwns the frontend sourcing request end-to-end: research → post RFQ → monitor → recommend.
rfqLLM-extracts raw-material quotes from any email format into SA Material Quotes (745).
quotingSame for packaging components into SA Packaging Quotes (746).
quotingPulls all quotes for a material, compares across price · lead time · terms · tariffs, outputs a Google Sheet.
quotingRanks the best materials to source by spend, no active BPO, and savings vs. best quote on file.
quotingThe scheduled 2×/day sweep — checks the messenger inbox, reviews new quotes, responds, escalates unknowns.
cronManual triage — classifies messages as spam / bot / real and responds per the RFQ spec.
monitoringWatches the shared sourcing inbox for inbound supplier inquiries and routes them to the right skill.
monitoringBaserow is the system of record. Every supplier touch, every quote, every sample, and every autonomous run lands in a table — and every failure lands in a structured error log. That's what makes the agent auditable, debuggable, and trustworthy enough to run unattended.
Baserow holds suppliers, materials, quotes & samples behind one REST API. The frontend sourcing form writes straight into table 752, where the agent picks it up.
The ali-cli trace writes a structured event per browser step with an opaque run_id. ali logs --run <id> replays any past run, step by step.
Failures don't vanish into stdout — they're appended to errors.jsonl with the exception, a hint, and a stack location, then matched against known patterns.
This is the design principle I build into every agent I ship. A browser tool against a site that actively changes its DOM will break — so the agent is instrumented end-to-end to diagnose itself, fix known failure modes unattended, and accumulate institutional memory it reads on every run.
A full self-test suite on demand or cron. --analyze reports 7-day error-pattern counts & recovery success rates; --heal loops auto-recoverable patterns; exit codes are wired for cron branching.
self-testA regex-keyed table maps each failure to a recovery action — relogin, cookie fallback, open-in-new-page, fall back to the unread API. Recoverable patterns fix themselves before a human is paged.
recovery.pyLLM quote & message classifications carry a confidence score. Below threshold, the agent writes nothing and flags it for a human. "When in doubt, don't change state" is enforced in code.
extractionThe cloud browser only fires for true OTP logins. A daily local keepalive keeps cookies fresh — holding a heavy-use month near a few dollars, not hundreds.
keepaliveHard-won gotchas live in KNOWN-ISSUES.md, a local issues.md, and a searchable brain vault. The agent reads them on every run — institutional memory that never quits.
brain vaultThe 2×/day monitor runs each task independently — a crash in one is recorded and isolated, the rest finish. A wedged browser is killed by a cron-level timeout, never hangs forever.
monitorSelf-defending against the outside world. When Alibaba silently redesigns its messenger or trips a captcha, ali-cli recognizes the failure signature, attempts the matching recovery, and — if it can't fix it unattended — surfaces a precise hint instead of failing blind. The agent notices the ground shifting under it and raises its hand.
The entire agent is a portable repo — skills, tools, scripts, and SOPs all check in together. No hardcoded paths, no servers to babysit. The skills auto-load in Claude Code or Codex; OS-native schedulers keep it running unattended on a Mac or a cloud box.
It owns a real operational seat — a harness that runs anywhere, tools that drive Alibaba and the web, eighteen skills, and a database that logs every interaction, run, and error — with a human only signing off where it commits the company. It catches its own mistakes, escalates at the right moment, and gets permanently better every time something breaks.
I build agents this way on purpose: harness, tools, skills, and a logged database — resilient by design, self-healing by default, and compounding over time. Point me at any repetitive, multi-system role and I'll give you one that runs from anywhere.