SnapVent
An AI listing tool that turns a phone photo into a ready-to-publish Facebook Marketplace listing, across a Flutter app, a Next.js web app and a Chrome extension.
- Role
- Sole developer, across mobile, web, browser extension, backend and infrastructure
- Period
- 2026 – Present
- Live
- snapvent.app↗
Overview
An AI listing tool for Facebook Marketplace: photograph an item on your phone, a vision model writes the title, description and price, and a Chrome extension fills the Marketplace form in one click, leaving you to press Publish. A Flutter app and a Next.js web app upload photos to S3, where an SQS-driven worker on AWS Lambda turns them into a structured listing stored in Neon Postgres. Infrastructure is defined in AWS CDK, with Cognito sign-in and one billing ledger shared by Stripe and the app stores.
How it's built
A queue-driven vision pipeline
Photos land in S3 and an SQS message wakes a Lambda worker, which downscales them to 1024px and asks a vision model for the listing. One Zod schema serves as both the model's output contract and the validator, and the prompt tells the model to leave a field empty rather than invent it. An hourly sweeper makes sure no listing can get stuck mid-pipeline.
Filling a React form from outside
Facebook's form is React-controlled, so assigning a value directly is ignored. The extension calls the input prototype's own value setter and rewinds React's value tracker so change detection fires exactly once. Photos are fetched in the service worker, turned into real File objects and attached through a DataTransfer, with a synthetic drag-and-drop as the fallback.
Offline-first mobile sync
The Flutter app works from its own SQLite copy, kept current by a delta sync with server-issued tokens and deletes sent as tombstones. Snapping queues an upload that resumes after a closed app or a lost signal, and photos are cached by id and signed in batches.
One account and one ledger across platforms
Phone, web and extension all sign in through Cognito, with Apple and Google logins linked to an existing account by verified email. Stripe on the web and the App Store and Google Play through RevenueCat report by webhook into a single ledger, so a purchase made anywhere counts everywhere.
Technology stack
- Flutter
- Next.js
- Chrome MV3
- Fastify
- AWS Lambda
- SQS
- Neon PostgreSQL
- AWS CDK
- OpenRouter
- Stripe
More work
- Bilbx — A cross-platform Flutter and Next.js receipt vault built for Australian tax compliance and warranty tracking.
- UseInvites — A referral and community invitation network for gig workers and creators, built on Next.js and serverless Postgres.
- Deft — A privacy-first Chrome extension that fills signup forms in one click, keeping personal data on the device.
- FairGo — A same-day logistics and delivery booking platform serving the Perth Metro area, built with Next.js and Stripe.
Building something similar?
I'm Hazem Elsawy, a Full Stack Developer in Perth, WA. If this is the kind of work you need, I'd like to hear about it.
