This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
I built SnapToSell — an on-device AI reseller copilot and real-time net profit engine for vintage flippers, thrifters, and secondhand entrepreneurs cross-listing across eBay, Etsy, Poshmark, Mercari, and Facebook Marketplace.
The Real-World Problem It Solves
Over 25 million people sell vintage items, clothing, and collectibles as their primary side hustle or full-time business. They love hunting for bargains, but dread what comes next:
- Listing Fatigue: Researching eBay's strict 80-character title limit, writing storytelling copy, and crafting 13 unique Etsy SEO tags takes 10 to 15 minutes per item. Resellers end up with piles of unlisted inventory (the dreaded "death pile").
- Platform Commission Blindness: Selling a vintage jacket for $85 sounds great until eBay takes 13.25% + $0.30, Etsy takes 6.5% + 3% + $0.45, or Poshmark takes 20%. Many resellers unwittingly sell items at a loss after factoring in shipping and platform cuts.
- Thrift Dead Zones: The best sourcing happens in church basements, estate auctions, and rural flea markets with zero cellular reception. Cloud-dependent AI apps fail right when you need them.
- Cloud API Bills Kill Margins: SaaS cross-listers charge $20–$50/month or pass through per-token cloud API bills, eating directly into a solo seller's razor-thin profits.
Who Would Pay For It?
- Vintage & Thrift Resellers: Flipping clothing, mid-century modern home goods, retro tech, and collectibles.
- Estate Cleanout & Garage Sale Pickers: Who need immediate, in-person appraisals and pricing targets on their laptops before buying.
- Cross-Listing Power Sellers: Who need platform-compliant copy (eBay titles, Etsy tags, Poshmark bundles) without manually retyping descriptions 5 times.
Demo
SnapToSell runs locally at http://localhost:5174 with instant preset testing, live camera/upload classification, and real-time fee comparisons.
Interactive Highlights:
-
Curated Sourcing Presets: Test immediately without leaving your desk using curated specimens:
- 90s Vintage Distressed Leather Bomber (Outerwear & patina heuristics)
- MCM Fat Lava Studio Ceramic Vase (Mid-century home decor & Etsy storytelling)
- 1978 SLR Film Camera (Vintage tech & mechanical specs)
- Y2K Graphic Band Tee (Streetwear aesthetics & single-stitch collector tags)
- Artisan Hand-Woven Wool Rug (Textile provenance & profit margins)
- Real-Time 2026 Commission Engine: Move the sliders for Buy Cost, Target Sell Price, and Shipping to watch exact fees, Net In-Pocket Profit, Margin %, and ROI % update live with a crowned Top Payout winner.
-
Multi-Platform Copy Tabs:
-
eBay: Strict 80-character title counter (
64 / 80 Chars Max), Cassini search item specifics, and bulleted specs. - Etsy: Evocative provenance narrative, tactile styling advice, and exactly 13 targeted search tags with 1-click "Copy All Tags".
- Poshmark: Trendy title with emoji, closet description, and copy-paste hashtag bundle.
- Mercari & FB: Quick, direct copy for fast sales.
-
eBay: Strict 80-character title counter (
-
Local Inventory Ledger: Save listings with one click and export a formatted
.csvspreadsheet for Excel or Google Sheets. - Thrift Mode (100% Offline): Flip the Thrift Mode badge to verify that all vision, pricing, and copywriting functions operate with 0KB network traffic.
Code
Abhinav-Shrivas
/
SnapToSell
On-device AI reseller copilot & net profit engine. Generates eBay (80-char), Etsy (13 tags), and Poshmark listings with 100% offline WebGPU vision & Gemma 2.
âš¡ SnapToSell
On-Device AI Reseller Copilot & Real-Time Net Profit Engine
Turn thrift and estate sale finds into high-converting, platform-compliant listings across eBay, Etsy, Poshmark, Mercari, and Facebook Marketplace — powered 100% locally by open-weight AI.
💡 The Problem: Listing Fatigue & Commission Blindness
Over 25 million vintage dealers, thrifters, and secondhand resellers face the same tedious bottlenecks:
- Listing Fatigue: Writing differentiated descriptions, adhering to eBay's strict 80-character title limit, and researching 13 unique Etsy SEO tags takes 10–15 minutes per item.
- Platform Commission Blindness: Calculating actual take-home profit after factoring in eBay final value fees (13.25% + $0.30), Etsy transaction & payment fees, or Poshmark's 20% cut is confusing and error-prone.
- Thrift Dead Zones: The best sourcing happens in church basements, estate auctions, and flea markets with zero cellular connectivity.
- Cloud API Bills: Paying per-image and per-token cloud API…
How I Built It
SnapToSell was engineered from scratch around open-weight models, browser WebGPU hardware acceleration, and local agent runtimes:
How I Built It
SnapToSell was engineered from scratch around open-weight models, browser WebGPU hardware acceleration, and local agent runtimes. The architecture connects five coordinated local subsystems: an in-browser vision transformer that extracts product traits in milliseconds, an open-weight copywriting agent tuned for multi-platform eCommerce rules, an offline heuristic fallback engine for dead zones, a deterministic 2026 platform commission calculator, and a local-first inventory ledger.
1. In-Browser WebGPU Vision Classifier
The visual pipeline runs on @huggingface/transformers using a quantized Vision Transformer (Xenova/vit-base-patch16-224 ONNX runtime). When an image is captured via webcam or dropped into the viewfinder, it is processed directly on the client machine using WebGPU hardware acceleration (Direct3D 12 on Windows, Metal on macOS, or Vulkan on Linux), automatically falling back to WASM SIMD CPU threads on older systems. In approximately 40 milliseconds, the model identifies the item, infers tactile materials and vintage textures, and assigns SEO category tags without uploading a single byte to any remote server.
2. Tuned eCommerce Copywriting Agent (Modelfile)
For listing generation, SnapToSell connects to a locally hosted Ollama instance powered by open-weight models such as gemma2:2b, qwen2.5:3b, or llama3.2:3b. To ensure consistent, platform-compliant formatting, the agent runs against a specialized Modelfile with a low temperature (0.35) for high factual consistency:
FROM gemma2:2b
PARAMETER temperature 0.35
PARAMETER top_p 0.9
SYSTEM """You are SnapToSell, an expert eCommerce cross-listing and vintage reselling copywriter.
Rules:
1. For eBay: Title must NOT exceed 80 characters. Use high-traffic keywords (Brand, Era, Material, Color, Style, Flaws). No emojis or filler like 'L@@K'.
2. For Etsy: Focus on vintage provenance, aesthetic vibe, tactile materials, and styling tips. Provide exactly 13 targeted search tags under 20 chars each.
3. For Poshmark: Punchy styling notes, hashtag bundle, measurements advisory.
4. Always produce valid JSON matching the requested schema.
"""
3. Graceful Offline Heuristic Fallback (Thrift Mode)
Because sourcing frequently takes place in cellular dead zones such as church basements and rural flea markets, the application includes a deterministic heuristic commerce engine. If Ollama is offline or the user toggles "Thrift Mode", the application instantly synthesizes compliant 80-character eBay titles, 13 Etsy search tags, and platform copy entirely in-memory using localized attribute heuristics, guaranteeing 100% operational uptime without internet access.
4. Deterministic 2026 Commission Engine
The financial core models the exact 2026 commission schedules across five major resale marketplaces. It calculates eBay's 13.25% Final Value Fee plus $0.30 transaction charge, Etsy's 6.5% transaction cut plus 3% payment processing and $0.45 in fixed fees, Poshmark's flat 20% commission (or $2.95 minimum), Mercari's combined 12.9% plus $0.50 fee, and Facebook Marketplace's 0% local pickup versus 5% shipped fee. The engine dynamically computes net in-pocket profit, profit margin percentage, and return on investment based on sourcing cost and shipping expenses, automatically crowning the highest-payout platform.
5. Local-First Inventory Ledger & CSV Exporter
All saved listings, pricing breakdowns, and item previews are stored inside browser localStorage. Resellers can inspect aggregate portfolio metrics — including total capital invested and projected net revenue — and export their inventory with a single click into a clean CSV spreadsheet formatted for Excel, Google Sheets, or bulk listing management tools.
Why Does Open Innovation Matter?
This week's theme asks: Where did your open-based approach work better than a closed one? For an independent reseller, open innovation isn't just an alternative — it is the only architecture that makes the business model economically viable.
1. $0 API Bills = 100% Margin Retention
Closed APIs like GPT-4o or Claude 3.5 Sonnet charge per image upload and per thousand completion tokens. A reseller cataloging 300 thrift finds a month would incur $20 to $45 monthly in recurring API charges. For a solo side hustle operating on tight margins, that expense directly reduces net income. Running quantized open weights on-device costs $0.00 indefinitely.
2. Sourcing in Cellular Dead Zones
Estate sale basements, rural barns, and flea markets are notorious cellular dead zones. Cloud-dependent apps fail completely when a reseller is standing in an aisle trying to appraise an item before purchase. Because SnapToSell combines on-device WebGPU vision with local Ollama and offline heuristics, it remains fully functional in airplane mode.
3. Absolute Privacy for Wholesale Sourcing
Resellers guard their supplier notes, estate contacts, and wholesale purchase receipts closely. Uploading photos of unreleased inventory and cost data to third-party tech servers risks leaking proprietary sourcing intel. SnapToSell guarantees that zero kilobytes of sourcing data ever leave the user's laptop.
4. Custom Modelfiles & Model Independence
Closed APIs frequently enforce unpredictable moderation on vintage terminology, shift conversational tone without notice, or introduce unexpected rate limits and price changes. Open weights allow complete control over prompt constraints, temperature, and output structure in a version-controlled Modelfile. When new efficient models are released, they can be swapped in instantly without vendor lock-in.
My First User
I demonstrated SnapToSell to an active vintage clothing flipper who lists weekly on eBay and Poshmark.
Their immediate feedback:
"Wait, it actually keeps the eBay title under 80 characters? Every other AI tool writes a giant paragraph for the title that eBay's listing form immediately rejects."
They tested the tool on a distressed vintage leather motorcycle jacket sourced for $18:
- Setting a target sell price of $95 immediately revealed that Poshmark would take $19.00 in commission, whereas eBay took $12.89 — demonstrating that selling on eBay put $6.11 more cash in their pocket for the exact same transaction.
- Generating the 13 Etsy search tags took less than a second, replacing 10 minutes of manual keyword brainstorming.
- They saved the record to the ledger and exported the CSV directly into their bookkeeping spreadsheet.
They noted they would gladly pay for this tool as a standalone utility — and with SnapToSell's open architecture, they incur zero ongoing API costs to keep it running.
Prize Categories
Best Use of Gemma ($200 USD)
-
Model Used: Google Gemma 2 (
google/gemma-2-2b-it/gemma2:2b) by Google DeepMind. -
Implementation: Gemma 2 powers the core cross-listing copywriting engine. We created a custom Ollama
Modelfile(FROM gemma2:2b) with low temperature (0.35) and a specialized eCommerce prompt that enforces strict multi-platform marketplace rules. Gemma 2 clamps eBay titles to under 80 characters with high-traffic keywords, generates evocative vintage provenance stories with exactly 13 search tags for Etsy, and produces hashtag-ready listings for Poshmark. We paired it with an in-browser WebGPU Vision Transformer and an offline heuristic fallback cache for zero-cloud resilience in thrift store basements and flea markets. -
Verification: Run
npm testto verify the open-weight copywriting and financial fee calculation pipeline directly in your terminal, or inspectModelfilein the repository root.
Top comments (0)