Small sellers already run their shops from a phone, between customers. They should not have to open a dashboard to know how the day went. We wanted selling to feel like talking to a helper: say what you sold, confirm it, and get a checkout link for the buyer.
1voice is a voice-first seller dashboard, built as a PayPal sandbox prototype. Speak or type "sell 2 jars of honey to Riya" and it drafts the sale, asks the seller to confirm, then creates a PayPal checkout link for the buyer and reserves the stock. Revenue counts only after the payment is actually captured and verified against the PayPal API - pending checkouts are tracked as pending, never as sales.
The seller can ask about today's revenue, PayPal fees and net proceeds, top seller, low stock, recorded expenses, per-customer paid totals and unpaid checkouts, and which product earns the most margin per unit. Profit is shown before other expenses, and amounts after fees are labeled PayPal net proceeds. The full ledger - orders, fees, net proceeds, expenses - exports to CSV in one click.
A Flask app serves a single-page dashboard with browser speech recognition and synthesis, plus full text input and output as the fallback path. Gemini turns free-form seller speech into structured intents, with a deterministic parser behind it as an engineering fallback. PayPal's Orders API (sandbox) creates checkout links, and captures are verified against the API before money counts as earned. Catalog prices and costs, stock and expenses are entered by the seller and stored in Postgres, so the ledger survives restarts. It runs on Render's free tier with zero paid services.
The hardest part was getting the money semantics right. An order created is not revenue earned: a capture has to be verified before the ledger moves, a cancelled checkout has to release its reserved stock, and a pending one must never inflate the totals. Getting that discipline to hold across every query - revenue, customers, margins, export - took more care than the voice layer itself. Working entirely on free tiers also made persistence and cold starts real design constraints.
The flow works end to end on a real integration: a spoken or typed sale becomes a live PayPal sandbox checkout link after seller confirmation, a verified capture becomes a ledger entry with exact fees and net proceeds, and the seller can interrogate that ledger by voice or text. All of it runs on $0 of paid services.
Payment APIs are about states, not events: create, approve, capture, cancel - and the truth lives in whichever state you verified last. Voice interfaces earn trust through explicit confirmation and honest wording, not through pretending to be sure. And a finance tool is only as good as its labels: fees, margins and "pending" have to mean exactly what they say.
Moving from sandbox prototype to production means more than switching API keys: live PayPal onboarding, seller accounts with real authentication, more supported currencies and localized reporting, buyer notifications, and payout flows. We also want proactive nudges - "Riya's checkout has been pending for two days, resend the link?" - and richer trend insights across weeks of sales.
Built With
- aggrid
- css
- flask
- gemini
- html
- javascript
- paypal
- postgresql
- python
- webspeechapi