CodingIdeas.ai

ShelfCount — The Stocktake App for Small Retailers Who Are Still Writing Numbers on Clipboards in 2026

Independent retailers and bottle shops do monthly stocktakes on paper, then transcribe everything into a spreadsheet at midnight while questioning their career choices. ShelfCount is a mobile-first barcode-scan stocktake app that reconciles counts against your supplier invoices and exports a variance report before you finish your coffee.

Difficulty

intermediate

Category

E-Commerce

Market Demand

High

Revenue Score

7/10

Platform

Web App

Vibe Code Friendly

No

Hackathon Score

6/10

What is it?

Small independent retailers — bottle shops, pet stores, hardware stores — run physical inventory counts monthly or quarterly using pen and paper or basic spreadsheet templates. The transcription step alone takes 3-5 hours and introduces errors that cause costly reorders or write-offs. ShelfCount is a mobile web app (PWA) that lets staff scan barcodes via phone camera, records counts in real time, syncs across two devices for team counts, and reconciles against a CSV of last purchase orders to auto-generate a variance report. No barcode scanner hardware required. No enterprise ERP needed. This is a pure mobile-web gap — Shopify's stocktake is locked to Shopify stores, and dedicated tools like Cin7 are $349/month overkill for a 200-SKU bottle shop. Buildable now using the QuaggaJS barcode scanning library which is stable, MIT-licensed, and works in mobile Safari and Chrome without any native app.

Why now?

QuaggaJS v2 and Supabase Realtime are both production-stable in June 2026, making a two-device barcode-scan PWA without any native app or hardware scanner finally shippable in a single sprint.

  • Live barcode scanning via phone camera using QuaggaJS with instant SKU lookup and count entry (Implementation note: QuaggaJS continuous scan mode with debounce to prevent double-counts)
  • Two-device simultaneous scan session with Supabase Realtime sync for team stocktakes
  • CSV import of last purchase order to auto-generate variance report showing over/under per SKU
  • One-tap PDF and CSV export of final count and variance for accountant or bookkeeper

Target Audience

Independent small retailers with 100-500 SKUs — bottle shops, pet stores, hardware stores, specialty food retailers. Estimated 500,000 such businesses in the US.

Example Use Case

Tom runs a 300-SKU bottle shop and used to spend 4 hours on quarterly stocktakes transcribing paper counts. With ShelfCount, he and one staff member scan simultaneously on their phones, and the variance report is ready in 45 minutes with zero transcription.

User Stories

  • As a bottle shop owner, I want to scan barcodes with my phone during stocktake, so that I never transcribe paper counts into a spreadsheet again.
  • As a retail manager, I want two staff members to scan simultaneously from different aisles, so that we finish the stocktake in half the time.
  • As an independent retailer, I want a variance report comparing my count to my last order, so that I immediately know what was stolen, broken, or miscounted.

Done When

  • Barcode scan: done when pointing the phone camera at a barcode increments the count for that SKU in the live feed within 1 second.
  • Two-device sync: done when a scan on device one appears on device two within 3 seconds without page refresh.
  • Reconciliation: done when importing a purchase order CSV and clicking Reconcile produces a variance table showing over and under counts per SKU.
  • Export: done when clicking Download PDF produces a correctly formatted variance report PDF that opens without errors.

Is it worth building?

$29/month x 100 stores = $2,900 MRR at month 4. $29/month x 400 stores = $11,600 MRR at month 10. Math assumes cold outreach to local retailer Facebook groups at 4% conversion.

Unit Economics

CAC: $65 via Facebook ads and in-person demos. LTV: $522 (18 months at $29/month). Payback: 3 months. Gross margin: 87%.

Business Model

SaaS subscription

Monetization Path

Free trial: one stocktake with up to 50 SKUs. Paid $29/month: unlimited SKUs, two-device team scan, variance reports, and CSV export.

Revenue Timeline

First dollar: week 2 via local retailer demo conversion. $1k MRR: month 3. $5k MRR: month 7.

Estimated Monthly Cost

Supabase: $25, Vercel: $20, Stripe: $20. Total: $65/month at launch — no AI API cost.

Profit Potential

Solid lifestyle SaaS at $5k–$12k MRR with low churn once the first stocktake is done.

Scalability

High — can expand to QR label printing, automated reorder triggers, and multi-location support for small chains.

Success Metrics

Month 1: 20 stores complete a full stocktake. Month 2: 60 paid stores. Month 4: less than 10% monthly churn.

Launch & Validation Plan

Join 5 independent retailer Facebook groups, post asking how people do stocktakes, and DM anyone who says pen and paper. Offer a free in-person demo stocktake for 3 local stores.

Customer Acquisition Strategy

First customer: walk into three local independent retailers, offer to run their next stocktake for free using the app, and film the variance report generation for a social proof video. Ongoing: Facebook group posts, bookkeeper partnerships offering referral fees, Google Ads targeting 'stocktake app small business'.

What's the competition?

Competition Level

Medium

Similar Products

Cin7 Core is $349/month and overkill for small retailers. Shopify POS stocktake only works for Shopify stores. Stocky by Shopify has no barcode scanning on mobile Safari — ShelfCount fills the hardware-free gap for non-Shopify independents.

Competitive Advantage

No hardware required, $29/month vs $349/month competitors, and built specifically for 100-500 SKU independent retailers who are invisible to enterprise vendors.

Regulatory Risks

Low regulatory risk. No financial data processed — only inventory counts. GDPR: SKU data deletable on account close.

What's the roadmap?

Feature Roadmap

V1 (launch): barcode scan, two-device sync, CSV reconciliation, PDF export. V2 (month 2-3): QR label printing, scheduled stocktake reminders. V3 (month 4+): multi-location support, automated reorder alerts.

Milestone Plan

Phase 1 (Week 1-2): scan interface, session API, and Supabase Realtime sync ship — done when two phones sync correctly. Phase 2 (Week 3-4): CSV reconciliation, PDF export, and Stripe billing live — done when first paid conversion completes. Phase 3 (Month 2): 30 paying stores — done when MRR crosses $870.

How do you build it?

Tech Stack

Next.js PWA, Supabase, QuaggaJS for barcode scanning, Papaparse for CSV import, Stripe — build with Cursor for scan logic and reconciliation, v0 for mobile UI components

Suggested Frameworks

QuaggaJS for barcode scanning, Papaparse for CSV parsing, Recharts for variance visualization

Time to Ship

2 weeks

Required Skills

PWA setup with Next.js, QuaggaJS barcode scanning integration, Supabase real-time for two-device sync, CSV parsing with Papaparse.

Resources

QuaggaJS GitHub docs, Next.js PWA setup guide, Supabase Realtime docs, Papaparse docs.

MVP Scope

app/page.tsx (stocktake session start screen), app/scan/page.tsx (mobile barcode scan interface with QuaggaJS), app/api/session/route.ts (create and update scan session), app/api/reconcile/route.ts (CSV import and variance calculation), lib/db/schema.ts (sessions, scanned_items, sku_catalog tables), components/ScanFeed.tsx (live scan result list), components/VarianceReport.tsx (variance table with export button), lib/csv-parser.ts (Papaparse wrapper), .env.example (required env vars), seed.ts (demo session with 50 SKUs and sample variance)

Core User Journey

Create session -> import last purchase order CSV -> scan barcodes with phone -> invite second device -> generate variance report -> export PDF.

Architecture Pattern

Phone camera -> QuaggaJS barcode decode -> POST to scan session API -> store in Supabase -> Realtime broadcast to second device -> reconcile endpoint compares counts to CSV import -> variance JSON -> PDF export.

Data Model

User has many StocktakeSessions. Session has many ScannedItems. Session has one ReconciliationReport. SKUCatalog belongs to User and is populated via CSV import.

Integration Points

Supabase for real-time session sync and data storage, QuaggaJS for barcode scanning, Papaparse for CSV parsing, Stripe for subscriptions, Vercel for hosting, react-pdf for PDF export.

V1 Scope Boundaries

V1 excludes: native mobile app, automated reorder triggers, supplier API integration, multi-location chains, label printing.

Success Definition

A bottle shop owner found ShelfCount without founder help, ran their full monthly stocktake using two phones, downloaded the variance report, and renewed the following month.

Challenges

Distribution is the core challenge — small independent retailers do not read SaaS blogs or browse ProductHunt. The acquisition channel is local Facebook groups, Instagram ads targeting retail owners, and partnerships with bookkeepers who service these clients. CAC via paid channels may be $60-80 so pricing at $29/month needs careful LTV math.

Avoid These Pitfalls

Do not build native iOS or Android apps in v1 — PWA on Next.js with QuaggaJS covers 95% of use cases and ships 10x faster. Do not target Shopify store owners first — they already have tools. Finding the first paying retailer requires in-person demos not online ads — budget time for walking into stores.

Security Requirements

Supabase Auth with magic link. RLS on all user tables. Rate limit scan endpoint at 300 req/min per session. Input validation on CSV import to reject malformed files. GDPR: full data deletion on account close.

Infrastructure Plan

Vercel for Next.js PWA. Supabase for Postgres, Realtime, and auth. Sentry for error tracking. GitHub Actions for CI. No external file storage needed.

Performance Targets

200 DAU at peak. Barcode decode under 500ms on mobile. API routes under 300ms. PWA loads offline after first visit for scan sessions in progress.

Go-Live Checklist

  • QuaggaJS scan tested on iPhone Safari and Android Chrome.
  • Stripe payment flow tested end-to-end.
  • Sentry error tracking live.
  • Vercel analytics configured.
  • Custom domain with SSL active.
  • Privacy policy published.
  • Three retailer beta users completed a real stocktake.
  • Rollback plan documented.
  • Facebook group launch posts drafted for 5 retailer communities.

First Run Experience

On first run: a demo stocktake session is pre-loaded with 50 SKUs and a sample purchase order CSV already imported. User can immediately point their phone camera at any barcode and see it match against the demo catalog. No manual config required: demo session works without login, Stripe, or CSV upload.

How to build it, step by step

1. Define Drizzle schema for users, stocktake_sessions, scanned_items, and sku_catalog tables in lib/db/schema.ts. 2. Scaffold Next.js PWA with manifest.json and service worker, install quagga2, papaparse, @supabase/supabase-js, drizzle-orm. 3. Build app/scan/page.tsx with QuaggaJS continuous scan mode targeting the phone camera and debounced count increment on barcode detect. 4. Build POST /api/session route to create and update stocktake sessions stored in Supabase. 5. Enable Supabase Realtime on scanned_items table and subscribe in the scan page to sync two-device counts live. 6. Build CSV import UI that uses Papaparse to parse a purchase order CSV into the sku_catalog table. 7. Build POST /api/reconcile route that compares session scan counts to sku_catalog quantities and returns variance per SKU. 8. Build VarianceReport component rendering an over/under table with color coding and a one-click PDF export using react-pdf. 9. Add Stripe billing with free tier limit of 50 SKUs and $29/month unlimited paid plan. 10. Verify: open app on two phones, scan 10 barcodes across both devices, import a CSV, confirm variance report generates accurately and PDF downloads correctly.

Generated

June 8, 2026

Model

claude-sonnet-4-6

Disclaimer: Ideas on this site are AI-generated and may contain inaccuracies. Revenue estimates, market demand figures, and financial projections are illustrative assumptions only — not financial advice. Do your own research before making any business or investment decisions. Technology availability, pricing, and market conditions change rapidly; always verify details independently.