-
-
"Jarvis, make my house look super cool and awesome"
-
Sending money via locked card using family mode, sender receives refunds and leftover amounts.
-
Tree patterns of potential sets you can save and edit.
-
Unlocked card on checkout page
-
Insurance sends money via Setly's card so customers can shop approved items without having to suffer the burden of initial cost
Inspiration
When each of us moved into our dorms for our first term in college, it took us hours to compare products and figure out what actually worked together within our budgets, even with our parents helping us out. After all that, we still had to split the costs with our roommates, including random expenses we didn’t even remember. The joy of welcome week and starting our new independent lives as freshmen quickly turned into a money-crazed hassle. This led us to a realization: moving into a new place with roommates should be one complete package, planned and paid for by a group. That led us to ask: what if shopping could be reimagined to bring a space to life?
What it does
Setly helps groups build complete sets together and buy them as one. Start a set by describing what you need (“furnish our living room, 4 people, $1,200”), then pick your vibe in 3D by pulling the styles, colors, and materials you like closer. Setly grows a full set of real products from live search, organized as a tree of branches that adapts as you shop. Everyone joins from a link and shapes the set together, swapping, adding, or removing items while budget and compatibility checks update as they go. When the set is locked, each person pays their exact share up front. Then one button buys the whole set from every store at once, using a virtual card that can only buy what’s in the set, up to each store’s limit. The group’s money can only be spent on what the group agreed to, and nothing goes over budget without the organizer’s approval. When checkout finishes, the set closes out: any store nobody bought from is canceled, its card limit shuts off, and every unspent dollar goes back to the people who paid.
How we built it
We built Setly with Next.js and TypeScript, Tiger Data (Postgres with TimescaleDB) for the money ledger and product catalog, Gemini for building maps of item sets, SerpApi for live product search, and Stripe for payments. Checkout has three stages, which include our own demo stores built on the Agentic Commerce Protocol and paid with the group card, Zinc for real retailers with a hard price cap on every order, and a guided checkout for everything else. Every group edit happens inside one locked database transaction, and card details are dealt with using Stripe
Challenges we ran into
A major obstacle was bridging the gap between authorizing payments and completing real transactions. While virtual cards effortlessly approve funds, they cannot complete merchant checkout forms on their own. We initially attempted to send all purchases through Zinc to handle retailer orders, but ran into issues because our catalog used Google Shopping links instead of direct product pages. To solve this, we divided checkout into three distinct paths:
- Agentic checkout for stores that support it
- Zinc for real retailers
- A guided checkout Another challenge was keeping several people’s edits in sync. Everyone’s screen polls the server every second, so two people editing at once could overwrite each other. We fixed that by locking the group’s row in Postgres for every edit. This made saves about five seconds slower as every save rewrote the whole group with ~30 separate queries. Rewriting only the sections that changed brought the save down to a second or two. This particular challenge was important to us as we found it to be a headache in implementing when we were personally creating lists with our real roommates. We also had to rethink product search. SerpApi’s free tier limited us in production, so we built our own catalog of 2,700 products in Postgres that we slowly built through the day. Its gaps showed up almost immediately alerting us to problems in price disparity between products and lack of products in certain categories that then passed along thinly matching products that don’t belong.
Accomplishments that we're proud of
Shopping that feels like designing a room: Setly takes a group from a short chat to a finished set without a single form instead of sliders, you shape your style in 3D space, pulling the colors, materials and moods you like closer. It's our personal favorite, and the closest we’ve gotten to feeling like talking with Jarvis since watching Iron Man 3 as kids. The set then grows as a tree of rooms and items that anyone can tap to swap, recolor, add to, or remove with changes visible in seconds. A comparable shopping experience and outcome when navigating an in person store or talking with actual store employees. Real API’s with real workarounds: Gemini, SerpApi, Stripe, Zinc, and the Agentic Commerce Protocol were all new to us. When a service hit a limit or needed approval we couldn’t get in a weekend, we built a test version, so the demo worked with space for seamless integration as soon as possible. Explanations at every step with overselling: Setly tells you why, not just what without bombarding you with information. From picking a vibe to fixing a mistake, Setly explains its reasoning so every choice feels like your own, even when something goes wrong.
What we learned
We learned the most by building for a problem we had lived through: splitting move-in costs with roommates. Our hardest bugs came from rules we had always followed without thinking about them. When a store charges more than its price tag, the purchase waits for the group to approve it. When a roommate returns a lamp, the refund goes to the people who paid, in proportion to what each one paid. Because we had moved in ourselves, we could tell when an answer felt wrong. Talking with customers and industry professionals caught the cases we hadn’t lived through, and we’re glad to say those conversations shaped the product as much as the code did. We also learned how much the planning period mattered. Agreeing early on shared data types, even simple ones, meant everyone understood how the pieces fit together. That saved us hours of merge conflicts.
What's next for Setly
Zinc can’t buy from every store, and most online stores haven’t opened their checkout to shopping agents yet, so some items in a set still need a guided checkout. Setly’s checkout already runs through a single interface, so each store can switch to one click as soon as it adopts agent checkout. We also want to grow beyond the sets we started with, making it a more general-use collaborative shopping product. Finally, we want to fix the biggest bottleneck in group funding: a group member who hasn’t paid as the deadline gets close. We want Setly to send reminders, show the organizer who’s still outstanding, and give the group options before the set expires, like covering the gap or dropping that person’s items and editing the set.
Built With
- drizzle-orm
- firebase
- gemini
- git
- javascript
- next.js
- node.js
- postgresql
- react
- serpapi
- sql
- stripe
- tailwind
- three.js
- tigerdata
- timescaledb
- typescript
- zinc
- zod

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