Autonomous Agent · Supplier Sourcing & RFQ Operations

A sourcing team member that runs itself.

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.

Alibaba.com Baserow Gmail Google Sheets Browser Use Bouncer
Harness Claude Code / Codex · cron · runs anywhere Tools ali-cli · gemini-search · Bouncer · scripts Skills 18 procedures the agent runs by intent Database Baserow · production · errors · runtime logs one coherent autonomous operator
18
specialized skills across the full sourcing surface
10
Baserow tables — every interaction, quote & run logged
daily autonomous runs — Alibaba inbox & quote monitor
All
failures trapped & escalated — traced, fingerprinted, healed
The premise

It does the job of a sourcing coordinator.

Everything a human in this seat does daily — finding, qualifying, quoting, sampling — turned into deterministic, auditable, around-the-clock automation.

A HUMAN COORDINATOR DOES… …THE AGENT DOES IT AUTONOMOUSLY Hunt Alibaba & the web for candidate suppliers Builds ranked supplier lists from Alibaba + LLM research Write & post RFQs, then babysit the inbox for replies Generates the RFQ, posts it, monitors quotes 2× daily Copy pricing out of emails into a spreadsheet by hand LLM-extracts every quote — any format — straight to Baserow Compare quotes & remember who was contacted when Ranks quotes, logs every touch, never loses a thread

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.

System architecture · how I build every agent

Four layers: harness, tools, skills, database.

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.

① HARNESS — the body + the clock Claude Code / Codex repo = working dir cron / launchd inbound email operator chat frontend form ② TOOLS — the hands ali-cliAlibaba buyer portal gemini-search.shweb research Bounceremail verify Browser Usecloud browser Gmail APIsourcing@ scripts/ — generate_rfq.py · quote_extractor.py · LLM extraction ③ SKILLS — the know-how discovery · outreach rfq · quoting sampling · negotiation monitoring · response each skill = a self-contained, tested SKILL.md playbook ④ DATABASE — the memory + the black box PRODUCTION · quotes · interactions · samples RUNTIME · Activity Log · run.jsonl ERRORS · errors · recovery · escalations
Every skill the harness invokes drives tools and writes its result — and any failure — to the database
Core flow · the supplier sourcing pipeline

From "find me a supplier" to a quote on the table.

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.

Each stage logs to Baserow before the next one starts — the pipeline is always auditable mid-flight DISCOVER Alibaba + LLM build supplier list VERIFY Bouncer checks email deliverability RFQ + REACH generate · post on Alibaba · cold email QUOTE extract · log · rank 3+ quotes per item SAMPLE request · track · collect feedback → HANDOFF TO PROCUREMENT approved supplier · best quote · terms checklist complete supplier-list-builder email-verification rfq-posting · outreach quote-extraction sample tracker negotiate MOQ · price · lead time · pre-set credit terms — loops until competitive

🔎 3+ quotes, always

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.

✅ Verify before you send

Every cold-outreach address is run through deliverability checks first — no burning sender reputation on dead inboxes.

🤝 Clean handoff

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.

Spotlight · the ali-cli tool

A purpose-built robot for the Alibaba buyer portal.

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.

Log in once in the cloud · run everything else locally for $0 DAILY LOGIN · cloud browser 1 · Browser Use cloud session opens 2 · Alibaba emails an OTP code 3 · Gmail API fetches + pastes it 4 · cookies saved → state.json ~$0.09 · or $0 via keepalive refresh cookies ALL OPERATIONS · local Chromium · loads saved cookies — free + fast · API calls via page.evaluate() · read / send / RFQ / monitor · headless, cron-safe, no cloud $0 — runs as often as you want WRITES BACK quotes → Baserow 745 / 746 messages → Activity Log 750 trace → run.jsonl errors → errors.jsonl

The command surface

ali monitorfull inbox + RFQ sweep in one session (~20s)
ali messageslist conversations & unread supplier messages
ali sendreply to a supplier thread (text / image / file)
ali rfqs · rfq-quoteslist RFQs and pull comparison pricing
ali post-rfqpost a new RFQ with an attached spec
ali keepaliverefresh cookies locally — avoids a paid re-login
ali doctorself-test suite + auto-recovery + issue analysis

Why this is hard — and impressive

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 cache
Layer ③ · the skill library

Eighteen specialized skills. One coherent operator.

Each 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.

Discovery & research

supplier-list-builder

Finds suppliers for any material via Alibaba, ImportYeti, trade-show exhibitor lists & LLM research — outputs a ranked list.

discovery

alibaba-research

General Alibaba navigation: browse products, vet supplier credentials, extract chat history.

discovery

material-research

Pre-sourcing briefing: PO history, sample status, every quote on file, and a recommended action.

research
Outreach & communication

supplier-outreach

Cold & re-engagement campaigns — pulls potential suppliers from Baserow, personalizes HTML emails, attaches the RFQ.

outreach

email-verification

Validates deliverability with Bouncer before any cold send — protects sender reputation.

outreach

web-form-submit

When a supplier has no email, submits the website contact / sample form via browser automation.

outreach

email-response

Drafts on-brand replies to live supplier threads, negotiates, and logs every interaction.

comms
RFQ & quoting

packaging-rfq-generation

Generates Excel RFQ files for pouches, bottles, caps, scoops, shrink bands & poly bags.

rfq

alibaba-rfq-posting

Posts RFQ listings on Alibaba and reposts expired ones via ali-cli.

rfq

alibaba-rfq-review

Compares incoming RFQ quotes side-by-side; verifies products match spec.

rfq

adhoc-sourcing

Owns the frontend sourcing request end-to-end: research → post RFQ → monitor → recommend.

rfq

email-quote-extraction

LLM-extracts raw-material quotes from any email format into SA Material Quotes (745).

quoting

email-packaging-quote-extraction

Same for packaging components into SA Packaging Quotes (746).

quoting

quote-analyzer

Pulls all quotes for a material, compares across price · lead time · terms · tariffs, outputs a Google Sheet.

quoting

rfq-priority-finder

Ranks the best materials to source by spend, no active BPO, and savings vs. best quote on file.

quoting
Monitoring & unattended runs

alibaba-packaging-monitor

The scheduled 2×/day sweep — checks the messenger inbox, reviews new quotes, responds, escalates unknowns.

cron

alibaba-message-response

Manual triage — classifies messages as spam / bot / real and responds per the RFQ spec.

monitoring

sourcing-inbox-monitor

Watches the shared sourcing inbox for inbound supplier inquiries and routes them to the right skill.

monitoring
Layer ④ · the database — production, runtime & error logging

Nothing happens that isn't written down.

Baserow 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.

Three classes of data, each with a home — query any of them after the fact PRODUCTION DATA what the business runs on SA Supplier Interactions · 751 SA Material Quotes · 745 SA Packaging Quotes · 746 SA Sample Tracker · 748 Suppliers (master) · 686 RUNTIME DATA what the agent did, and when SA Agent Activity Log · 750 SA Sourcing Requests · 752 run.jsonl — step-level trace skill-reports.jsonl — run outcomes per-run timing · unread counts ERROR DATA what broke, and what was done errors.jsonl — exception + hint recovery.jsonl — heal attempts issues.md — novel-failure memory fingerprinted signatures escalation thresholds (3 / 5)
CLAUDE.md mandates it: every supplier email, message, or call is logged to table 751 before the agent moves on

🗂 Source of truth

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.

🧾 Every run is reconstructable

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.

🚨 Errors are first-class

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.

The differentiator · self-healing & self-improving

Every failure makes the agent permanently smarter.

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.

The compounding loop — a failure becomes architecture 1 · TRACE every browser step runs in a step() context → run.jsonl + errors.jsonl 2 · FINGERPRINT exception matched to a known-pattern table — cause + recovery action 3 · SELF-RECOVER session expired → relogin; DOM race → cookie fallback; RFQ stuck → click "apply" 4 · ESCALATE 3 fails → alert a human; 5 fails → skip the write, stop the bleeding 5 · CAPTURE novel cause → issues.md + a new recovery pattern. never re-learned twice the next run starts smarter — the failure class can no longer recur Real patterns it already heals: session_expired · baxia_captcha · context_destroyed · rfq_ai_stuck · download_cors

🩺 ali doctor

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-test

♻️ Known-pattern recovery

A 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.py

🎯 Confidence gates

LLM 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.

extraction

💸 Cost-aware by design

The 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.

keepalive

📚 Compounding memory

Hard-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 vault

🛡 Isolated tasks

The 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.

monitor

Self-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.

Portability · runs from anywhere

Clone the repo, set the secrets, and it runs itself.

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.

clone the repo skills · tools · scripts SOPs · templates — all portable, no fixed paths .env + ali config Baserow token · Gmail Browser Use key · profile ali login once cron / launchd keepalive every 4–8h monitor 2×/day pick native scheduler unattended checks Alibaba + inbox logs every run to Baserow escalates only when stuck Same skills, same tools, same logs — whether a human runs it in chat or a 7 a.m. cron job fires it.
The takeaway

This is what an autonomous team member looks like.

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.

Autonomous Self-healing Self-improving Fully logged Runs from anywhere
← Back to the full portfolio