Skip to content

Solution Studio Shopping Greeter

A stated goal becomes a finished look, so a shopper who cannot phrase a query still gets a usable answer.

A shopper states a goal, and a short guided conversation ends in a curated collage rather than a results page.

What the agent does

Turns a stated goal into a structured intent, chooses its next question from what is still unknown, then composes coherent sets from what it finds.

Contributed by
MACH Alliance (Reference implementation)
Industry
Retail, Apparel & Footwear
Audience
B2C
01
The problem

Why this exists

A search box answers the question it was given. A shopper who is furnishing a room, dressing for an occasion, or replacing one piece of a set is not asking a question yet, and the interface offers no way to arrive at one.

Read more

The usual response is more filters, which moves the work rather than removing it. The shopper still has to translate a goal into the retailer's vocabulary before anything useful comes back, and the goal is the part they can actually articulate.

02
Outcomes

What this demonstrates

  • A shopper describes a goal in plain language and receives a curated set of products and matched content, rather than a ranked list to sort through.
  • The conversation is short because each question is chosen from what the goal still needs. A fashion goal is asked about fit before style, a home project skips questions that do not apply, and nothing is asked that an earlier answer already settled.
  • A thin category does not silently degrade the result. When a search comes back empty the constraints relax in a fixed order, and anything the shopper stated explicitly is preserved to the end.
Read more
  • Something the shopper already owns is dropped from search rather than filled with a lookalike, and still reads as part of the finished look.
03
How it works

Architecture

The widget is a chromeless iframe embedded in a mockup retailer storefront, so it owns its own chrome and does not inherit the host page's styling. The retailer pages are deliberately not MACH Alliance branded; the operator surfaces are.

Read more

Intent resolution runs as a guided conversation that builds a structured model rather than a query string. Each turn selects the next question from what the model still lacks. When the model is complete the categories are queried against translated tags, with a retry ladder that drops the budget filter, then the style tags, then the hardest constraints, relaxing fully only on genuine emptiness.

Curation is a separate step. Once the products are final, a model composes two coherent sets from the results, and a third when the products support a different combination rather than a swapped item.

Search and CMS sit behind a single adapter interface. The same code runs against local fixtures or live services, switched by one flag, so the prototype behaves identically either way. Operator routes are off when the environment is production, and the two endpoints that spend money are rate limited.

A chromeless iframe on a mockup storefront runs a guided conversation that builds a structured intent model, choosing each next question from what the model still lacks. Once complete, categories are queried against translated tags, and a retry ladder drops the budget filter, then style tags, then the hardest constraints when a category comes back thin. Curation then composes coherent sets, and a single adapter interface switches the whole thing between local fixtures and live search and CMS on one flag.

A chromeless iframe on a mockup storefront runs a guided conversation that builds a structured intent model, choosing each next question from what the model still lacks. Once complete, categories are queried against translated tags, and a retry ladder drops the budget filter, then style tags, then the hardest constraints when a category comes back thin. Curation then composes coherent sets, and a single adapter interface switches the whole thing between local fixtures and live search and CMS on one flag.
Open standards used
REST APIs
Tech stack
HonoReactViteVercel AI SDKAlgoliaContentstack
Next step

Take the code

This one is published in full. Read it, run it, fork it. Nothing here is behind a conversation.

Request an intro

This one is the MACH Alliance’s own work. Ask about turning stated goals into curated results, and the people who built it will answer.

Your details go to a named contact on the MACH Alliance team that built this work and can answer your questions. We aim to reply within 2 business days. Your details are handled under the MACH Alliance privacy policy.

Not ready to talk to anyone? MACH Insider is the Alliance mailing list. New solutions, program openings, and the research behind them, once a month.

Keep reading

Related solutions

Verification

Public code

The implementation is published in full, so anything on this page can be checked against the repository. Anything the repository does not show is not established here.

Where this came from

Written from the public repository README and the accompanying implementation article.

Status: Reference prototypeAdded Sep 10, 2026A listing is an editorial decision, not a MACH Alliance certification.

Built something worth showing?

Put your agentic solution in front of the enterprise leaders who use the hub to decide what to build next. Submissions are open to MACH Alliance Members, Collaborators, or Ambassadors.