Skip to content

Repository files navigation

Meridian — Agentic Commerce

State what you want. An agent does the shopping.

Meridian kills the 15-tab shopping spiral. Type a plain-English request — "black over-ear noise cancelling headphones under $150 for the gym" — and an agent turns it into structured requirements, runs Channel3's agentic search across live merchant inventory, and returns ranked, in-stock offers with one-click checkout links. Changed your mind? Say "actually under $120" and it re-searches with your full context intact.

Built for the c0mpiled-13 / YC Startup School Hackathon #2.


The 90-second demo

  1. Sign up, type a messy request: noise cancelation headphoens under 150 in black
  2. Watch the agent clean it up, extract your constraints, and search — every result is live inventory with a real price, merchant, and buy link
  3. Refine conversationally: over-ear only → results re-rank with everything you've said so far still applied
  4. Add to cart / open a product / click Buy → real merchant checkout
  5. Open /test for the glass-box view: every backend call and the exact payload sent to Channel3's API, live, as you use the app

Run it

cp .env.example .env      # add CHANNEL3_API_KEY + OPENAI_API_KEY (or ANTHROPIC_API_KEY)
./run.sh                  # installs deps, starts backend :8787 + frontend :3000

Then open http://localhost:3000. (Manual start: uvicorn app.main:app --port 8787 + npm run dev in frontend/ — install with --legacy-peer-deps.)

How it works

user message ─→ LLM bookkeeper ─→ Channel3 agentic search ─→ gentle re-rank ─→ ranked cards
                (requirements,      (plans sub-searches       (preserve order,     (real prices,
                 refine-merge,       from the natural          demote clear         images, buy
                 hard filters)       sentence)                 mismatches)          links, cart)
  • Channel3 does the heavy lifting. mode: "agentic" — their planner decomposes the natural sentence into structured sub-searches. We layer hard guarantees on top: filters.price.max_price and hex filters.colors.palette (with an automatic retry if the beta color filter over-narrows).
  • The LLM is a bookkeeper, not a search engine. It keeps the conversation's requirement state (so refinements compose), enforces prices are never invented (no budget stated → no price filter), and writes the one-line consumer blurb on each card. Internal reasoning stays internal — visible only in /test.
  • Every offer is real. Prices, stock, and images come from live merchant inventory; each result carries the cheapest in-stock offer and a commissionable checkout link (buy.trychannel3.com).

Sponsor tools

Tool How it's used
Channel3 The engine: agentic search, price + color-palette filters, product detail, commissionable buy links. /test shows every payload we send them.
Hexclave The business layer: auth, sessions, and credit-metered payments — verified end-to-end (scripts/test_hexclave.py, test_payments.py, test_backend_metered.py). Demo runs DEV_AUTH_BYPASS=1; flipping metering on is one env var (HEXCLAVE_CREDITS_PRODUCT_ID), not new code.

Repo map

Path What
app/ FastAPI backend — requirements/refine agents, Channel3 client, routes
frontend/ Next.js UI — chat, cards/table, cart, product pages, /test glass-box
API.md Full endpoint contract (frontend ↔ backend)
run.sh One-command local startup

Also in the codebase: a full simulated negotiation pipeline (LLM buyer vs. seller under a hard ceiling, approval flow, purchase records, payment knowledge graph — POST /api/negotiate, GET /api/graph). Parked from the product flow by design; the API works if you want to poke it.

Team

Josh · Dean · Edward

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages