Inspiration
When I upgraded my computers and gaming consoles, selling the old ones meant looking up prices across marketplaces and writing another listing. Even after choosing a price, I still had to recreate the listing wherever I wanted to sell it.
I started SnapList around that problem. I wanted to photograph an item, add the details I knew, and get a listing I could review before posting. I'm a computer science student at the University of Central Florida, and this is my entry for the Shipaton 2026 Next Gen Award.
What it does
SnapList is a native iPhone app for preparing used-item listings. You take one to five photos and can add a voice note with details the photos might miss. It prepares an editable listing with a suggested price and shows the evidence available for that recommendation.
The voice note can help resolve a product family when the photos support it. Seller-provided details stay identified as unverified context. Sold comparisons use completed sales with a known sold amount. An asking price is what someone hopes to get; it does not establish what a buyer paid. SnapList distinguishes an exact item from a broader model-family or category comparison, and shows an estimate when trustworthy sold evidence is missing.
Once an item is accepted, you can start photographing the next one while it finishes. To list holds items that still need work. Flips holds finished items, including prepared or shared export packs. You can edit the listing and choose your own price before delivery.
The eBay publishing path requires seller confirmation. For Facebook Marketplace, Mercari, and Depop, SnapList prepares text and photos for a manual handoff, and the seller finishes posting in the destination app.
The first usable AI listing comes before signup or a paywall. SnapList Pro supports continued AI listing preparation through a RevenueCat subscription. The subscription code loads offerings and supports purchase and restore, with server verification before granting access.
How I built it
I made the product and architecture decisions and used coding agents to help implement SnapList, especially the native client. The iPhone app uses SwiftUI with Apple's camera and audio frameworks. The server is TypeScript with Next.js, and Supabase stores the item data with row-level security and private media storage.
The AI pipeline validates structured outputs with Zod through the Vercel AI SDK. Model selection lives behind a provider registry. Pricing has its own router, including ISBN lookup, eBay sold research, and fallback estimates. The Apify adapter retrieves sold candidates, and a shared matcher checks which comparisons are relevant before they can support the price.
Accepted items run through a durable queue so recovery can reuse completed work. The seller's chosen price is shared by publishing and export paths. RevenueCat handles the subscription SDK flow, while the server verifies access and accounts for AI items when a usable draft is saved. A failure before that usable result restores the reserved credit.
The public repository includes the native app and server code, setup instructions, and an Apache-2.0 license.
Challenges I ran into
Product identity was a difficult part of pricing. A photo may identify a family while leaving the exact version unclear, and a spoken model name can be transcribed incorrectly. The pipeline has to keep the useful identity while preserving the uncertainty. Otherwise it can skip relevant sold research or compare the wrong item.
Another challenge was deciding what counts as a completed action. A copied export pack does not tell us whether a marketplace listing exists. A subscription response also needs server verification before the app can grant AI access. Those distinctions affect the copy people see and the states the app saves.
Accomplishments I'm proud of
I'm proud of the path between taking photos and reviewing a listing. The seller can inspect the price evidence and change the result before deciding what to do with it. Scout, the app's mascot, helps make the waiting and subscription screens feel consistent with the rest of the app.
Beta testers with the same resale problem told me that SnapList made price research and listing preparation easier. Their feedback drove more work on the app. I have qualitative feedback so far, and I still need to measure the time savings.
What I learned
I learned to treat the quality of a price recommendation as a separate question from whether an AI response sounds convincing. The comparison needs to be relevant to the item, and the seller needs to see how strong that evidence is.
I also learned how much product behavior depends on details outside the main AI call. A retry should preserve completed work, and changing the seller's price needs to affect every place the listing goes. Those details became part of the design and the tests.
What's next for SnapList
I want to finish device checks for subscription purchase and restore, and for the eBay publishing journey. I'm also continuing to refine the sharing drawer and how the app presents weaker sold comparisons.
After that, I want to measure processing time and the cost of each usable AI listing with TestFlight feedback. Those results will inform the Pro allowance and the next App Store release work.
Built With
- apify
- avfoundation
- clerk
- ebay-apis
- exa
- github-actions
- next.js
- openai
- pgtap
- postgresql
- revenuecat
- storekit
- supabase
- swift
- swiftui
- tavily
- typescript
- vercel-ai-sdk
- vitest
- xcuitest
- zod



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