Inspiration
What it does: Inspiration We asked today's AI assistants to help us shop, using the short prompts real shoppers type:
- ChatGPT, "Find 5 outfits for my next week": searched 30 retailers, then suggested only Target.
- ChatGPT, "Now try secondhand": cited a Harvard paper on eating disorders and an Ohio government website.
- Gemini and Grok, "Help me find clothes": Urban Outfitters, ASOS, Forever 21, Uniqlo. No one small, no one secondhand.
Nobody writes a paragraph-long prompt about their exact style, size and budget, so with so little to go on, agentic search falls back on what it's financially incentivised to show: partner brands and the biggest, most keyword-stuffed catalogs. Shoppers get things they wouldn't actually buy, and the independent labels, resellers and vintage shops they'd love never appear. We shop on Depop and from small Instagram labels on a student budget, so we wanted a shopping agent that starts from our taste, not from who paid for placement.
What it does: Niche turns photos of outfits you love into a taste profile, then finds real pieces from any seller, big or small, in your size and budget, with the reason each one fits.
- Tell us: a short profile (sizes in your own chart, budget, where you shop). Type it or just talk to Niche.
- Show us: add photos from anywhere, or import public Pinterest boards, Instagram posts and TikToks. Tap a photo to say what you like about it.
- Your taste: Claude clusters your photos into a moodboard of style clusters, notes and measured colours. Edit it by voice or text, share it to Instagram, TikTok or X, or send a link so a friend can shop for you using your taste.
- Shop for you: chat with the agent ("an asymmetrical buttoned top", "like Lewkin but Korean y2k"). It searches independent labels, Depop/Poshmark/Vinted/Etsy/Grailed, local shops and major retailers at once, and ranks every piece by looking at its photo against your taste.
- Before you buy: a market price check against similar past listings, plus warnings for off-platform payment requests, prices that are too good to be true, poorly reviewed sellers and duplicate listings.
- No sponsored results, ever. With Keep to budget on, searches stay inside what's left of your monthly clothing budget.
How we built it
- Claude is the core: it reads every photo (garments, colours, silhouettes), clusters your taste, plans searches, ranks listings by looking at their photos with structured outputs, and runs the shopping chat.
- Custom search agents: four Apify actors of our own (mainstream stores, secondhand marketplaces, and two fully team-built independent-label actors reading Shopify catalogs), plus Bright Data (SERP API and Web Unlocker) to find independent labels on any platform and import lookbooks.
- SpacetimeDB streams results as each marketplace lands and powers the shared moodboard with live cursors. -Cartesia is the assistant's voice (speech-to-text and text-to-speech, hands-free on every page); Moss is its memory ("the green skirt from before").
- Gemini with Google Maps grounding suggests real nearby local shops relevant to your search; Snowflake (SQL API and Cortex) stores listing history and writes the price verdict; Capital One Nessie is the budget-aware bank.
- FastAPI and Python backend, Next.js and Tailwind frontend, 170+ backend tests.
Challenges we ran into
- Search engines are biased before the AI ever sees the results. Google Shopping's top results were mostly Fashion Nova, Shein and marketplace sellers, so no ranking prompt could fix it. We had to change what we fetch, adding direct independent-label sources, rather than how we rank.
- Fast results that are actually relevant. Showing pre-loaded listings instantly surfaced pieces that only shared a colour with the request. We now have Claude tag visible features from each photo ahead of time, so only proven matches appear before ranking.
- Messy marketplace data: sizes in a dozen formats, missing seller ratings, and the same item posted by six look-alike accounts. - Measuring colour honestly: our palette picked up skin tones until we excluded them, keeping them only when the garment itself is beige, camel or nude.
- Latency: the Gemini Maps lookup took 35 s until we switched models (now about 3 s) and started it alongside the search.
Accomplishments that we're proud of
- A full flow from your own photos to a ranked, explained shortlist, running on live data with nothing mocked.
- Small sellers genuinely show up next to big stores, and every results page reports how many came from independent and secondhand sellers.
- Trust built in from the start: consent before photos go to Claude, explanations, scam warnings,
What we learned
- Fairness in agentic commerce is a retrieval problem first. We assumed better ranking would surface
small sellers, but Google Shopping's top results were already mostly fast fashion and marketplace
sellers before Claude saw anything. If an independent label isn't fetched, no model can recommend it. So
we built our own search agents (Apify actors for resale marketplaces and independent Shopify labels,
plus Bright Data for shops on any platform) instead of prompting around the bias.
- Photos say more about taste than prompts do. Real shoppers type three words, not a paragraph. A taste profile built from their own outfit photos makes a short request work like a detailed one.
- Relevance beats speed. Showing results instantly sometimes meant showing pieces that only matched on colour. We'd rather wait a few seconds for listings Claude has actually checked against the request, so only proven matches appear early.
- **Measure, don't guess. **Asking a model for colours gave plausible but wrong answers. Measuring pixels (and excluding skin) was more honest. The same goes for prices: the market check compares against real past listings instead of asking a model what something "should" cost.
- Design for the messy web. Sizes come in a dozen formats, seller ratings go missing, the same item gets posted by look-alike accounts, and any source can be slow, blocked or empty. Every part of the pipeline has a fallback, and the page says honestly when a source didn't answer.
- Trust is a feature. Consent before photos go to Claude, explanations on every result, scam warnings, and Delete my data took little code but changed how the product feels.
What's next for Niche
- Let small sellers in directly: a simple way for independent labels and resellers to connect their
shop, so Niche can find them without scraping and they can be found by AI shoppers without paying for
placement.
- More sources and regions: more resale marketplaces and local boutiques, and sizing and currency for shoppers outside the US.
- Alerts on your shortlist. price drops, back-in-stock, and similar pieces from sellers you've saved.
- A mobile app: snap an outfit you see and add it to your lookbook, or shop by voice on the go.
- Smarter taste over time: let the profile learn from what you save and buy, and show you how your style is changing.
- Shopping together: shared moodboards for trips, events and wedding parties, where friends can suggest pieces for each other.
How we built for each prize track
Anthropic: Claude
- Named community: small clothing sellers (independent labels, Depop and Poshmark resellers, vintage and thrift shops) and the Berkeley students who buy from them, dressing in a specific aesthetic on a student budget.
- Real problem: we lived it. ChatGPT searched 30 retailers and suggested only Target; asked for secondhand, it cited a Harvard paper on eating disorders; Gemini and Grok returned Urban Outfitters, ASOS, Forever 21, Uniqlo. Real shoppers type a few words, so agentic search falls back on partner brands and the biggest catalogs, and small sellers never appear.
- It works: one thing done well. Your outfit photos in, a short list of real, buyable pieces out, in your size and budget, from any seller, each with why it fits. Multimodal clustering drives custom search agents, on live data.
- Thoughtful use of Claude: Claude reads every photo, clusters taste, plans searches and ranks each listing by looking at its photo, judging fit instead of promotion. We guard where it could go wrong: hard size filters, colours measured from pixels, no single trait filling a page, listing IDs and prices verified server-side, scam warnings, consent before photos are sent, and refusal and keyword fallbacks.
Visa: Reimagining Shopping with AI
- Innovation: shop from your own photos and an editable taste profile; a friend can shop for you from your taste; local shops and a market price check sit next to online results.
- User experience: a hands-free assistant on every page, search as soon as you ask, compare pieces in chat, sizes in your own chart, one shortlist.
- Technical execution: Claude plans and visually ranks; Apify and Bright Data search stores, resale and independent labels in parallel; SpacetimeDB streams results; Snowflake Cortex checks prices; Nessie keeps the agent on budget.
- Commerce impact: independent and secondhand sellers are found without paying for placement, and each results page reports their share. Fewer, better-fitting results and a shortlist that sends you to the seller's own checkout.
- Trust & responsibility: no sponsored results, a reason on every result, "Before you buy" scam warnings, consent, expiring photo links, revocable share links, and Delete my data.
Meta: Bringing People Closer Together
- Human connection: share your taste and a friend sees your moodboard and finds a gift in your style and sizes, on their budget. Friends arrange one moodboard together with live cursors. Sharing your style is one click: Niche renders your moodboard as a story-size image for Instagram and TikTok (downloaded, with the upload page opened for you) and a square image for X, where it also drafts the post, ready to share.
- Essential AI: without Claude's taste profile the friend is guessing; with it, the AI turns someone else's style into specific pieces.
- Originality and demo: gifting from someone's own taste, live end to end, with links you can revoke.
Microsoft: Built for the Real World / Customer Impact
- The problem: fair representation in agentic commerce. Agents return what search engines promote; Niche returns the best match for the user's own preferences from any seller.
- Customer understanding: built around how our community actually shops: own photos, specific aesthetics, secondhand first, tight budgets.
- Measurable usefulness: a search report (listings checked, wrong sizes removed, share of small and secondhand sellers, time to first results) and an impact line on every results page.
- Path to production and end-to-end: deployed at shopniche.fashion; tested FastAPI backend; our own deployable Apify actors; a fixture mode that runs without keys. Onboarding through to a purchase recorded in a bank ledger, all live.
Capital One Nessie
- Completeness: customers, accounts, merchants, purchases and bills; the agent reads balance, this month's clothing spend and upcoming bills, and "mark as bought" records the purchase.
- Creativity: "Keep to budget" caps searches at what's left this month and mentions a bill due soon.
- Complexity: Nessie balances don't move, so we compute the running balance from purchases and categorise spend by merchant.
Cartesia
- Voice is the main way to use the assistant on every page:
ink-whisperspeech-to-text andsonic-3replies with six voices. It covers onboarding (spoken answers fill the form), photo reactions, taste edits and shopping. - Hands-free listening with pause detection; the mic pauses while Niche speaks; tap to interrupt; everything also works by typing. Audio isn't stored by Niche and the key stays on the server.
Moss
- The assistant's memory: every listing you've been shown goes into your own Moss index for instant semantic recall, and saved labels' catalogs are indexed so similar pieces come back in milliseconds while live searches run.
Apify: Best Use / Best Actor
- All product search runs on our own actors:
niche-mainstream(Google Shopping, trusted stores plus brands you name),niche-secondhand(Depop, Poshmark, Vinted, Etsy, Grailed), and two fully team-built actors with no community scrapers inside:niche-indie(independent labels' Shopify catalogs) andindependent-labels(verified independent labels, public on the Apify Store).
Bright Data
- Finds independent labels on any shop platform (SERP API, then Web Unlocker, then schema.org product data), imports public Pinterest, Instagram and TikTok lookbooks, and verifies suggested brands are real independents.
- Handles real web conditions: retries, timeouts, and an honest note when a source is blocked or empty. Public pages only, no personal data, nothing mocked.
SpacetimeDB
- The live layer between our agents and every browser: search results stream in per marketplace, the moodboard is shared with live cursors, build progress shows live, and edits update every open view. Server-side reducers include Delete my data.
Best Use of Gemini API
- Gemini with Grounding with Google Maps turns a search plus a ZIP into real nearby vintage, consignment and independent shops, each with its Google Maps link, in about 3 seconds.
Best Use of Snowflake API
- The SQL API stores public listing history and embeds it with Cortex
AI_EMBED. Opening a listing retrieves the most similar past listings for a typical price range, and the Cortex REST inference API writes a "good deal / fair / above typical" verdict grounded in those prices.
Best Use of Vultr
- The live product at shopniche.fashion runs on a Vultr cloud server (Ubuntu, Los Angeles): Next.js and
FastAPI behind Caddy with automatic HTTPS, in live mode, so judges use the real thing. It redeploys
mainautomatically within minutes of each merge.
Best Domain Name from GoDaddy Registry
- shopniche.fashion, registered this weekend on
.fashion(a GoDaddy Registry extension). The name says what Niche does (shop your niche),.fashionnames the category, and it's our live product URL, served from Vultr.
Built With
- apify
- bright-data
- capital-one-nessie
- cartesia
- claude
- fastapi
- figma
- gemini
- httpx
- moss
- next.js
- node.js
- pillow
- pydantic
- python
- react
- snowflake
- spacetimedb
- sqlite
- tailwindcss
- typescript
- vultr
- websockets


Log in or sign up for Devpost to join the conversation.