Inspiration

Great retail sales feels personal: a merchant remembers what each customer likes, what fits them, what they have already discussed, and when to follow up. But this knowledge is often scattered across messages, spreadsheets, individual employees, and memory.

We built Mai Merchant to help fashion merchants preserve that customer understanding and turn it into coordinated action—without removing human judgment from sensitive decisions such as consent, image approval, product recommendations, and outreach.

What it does

Mai Merchant connects customer knowledge, product inventory, virtual try-on, campaign planning, approvals, outreach, and customer care in one workspace.

A merchant can select an audience, assign products, choose a primary virtual try-on item, generate and review VTO results, collect human approvals, prepare personalized offers, and manage follow-up.

Alongside this workflow, the Mai sales agent examines the current campaign, recalls merchant-specific memory, identifies blockers, explains risks, and proposes the safest next action. The merchant remains in control of consequential actions. Explicit corrections help the agent improve future recommendations.

How we built it

We built Mai Merchant as an independent, multi-tenant application using Next.js, TypeScript, PostgreSQL, and Docker.

The sales agent is a Python service built with Google ADK and Gemini on Vertex AI through Google Cloud’s enterprise agent platform. Agent tools ground recommendations in merchant data, campaign state, session context, and long-term sales memory. Feedback is recorded as evidence that can drive evaluated learning rather than uncontrolled self-modification.

Long-running generation and campaign jobs use Temporal with a durable database fallback. Google OAuth, tenant isolation, consent auditing, versioned approvals, and human confirmation protect sensitive operations.

Challenges we ran into

The main challenge was building an agent that could be useful without becoming unsafe or overconfident.

Campaigns combine consent, customer portraits, inventory, asynchronous VTO jobs, proposal versions, approvals, and outreach. A recommendation can become stale when another teammate changes the campaign. We therefore had to preserve tenant isolation, use version checks, make blockers explicit, and keep consequential actions under human approval.

We also separated Mai Merchant from an existing marketplace application while preserving its data workflows, Docker deployment, workers, and production configuration.

Accomplishments that we're proud of

We built an end-to-end workflow that moves from customer selection to product assignment, virtual try-on, approval, personalized outreach, customer care, and measurable results.

We are especially proud that the agent is grounded in operational evidence, maintains merchant-scoped memory, explains its recommendations, and accepts explicit human corrections.

We also tested the product concept with prospective users and received concrete interest in piloting it. The demo includes a meaningful Ethiopian fashion catalog and customer workflow rather than generic placeholder records.

What we learned

We learned how to build a self-learning agents with Google ADK 2. We also learned that agents are more valuable when embedded inside a real operational workflow than when presented as a disconnected chatbot.

What's next for Mai Merchant

Next, we will run a focused pilot with Ethiopian fashion merchants and measure whether Mai improves campaign preparation time, follow-up consistency, and recommendation quality.

Built With

Share this project:

Updates

Submission history