Verified onboarding
Women-eligibility confirmation, a government ID check (AI first pass with Google Gemini, then operator review) and a short onboarding survey.
The challenge: confidential support women can trust
Women looking for emotional support often face stigma, few confidential listeners, and scattered tools for booking and paying for sessions. SheTalks needed one closed platform that solved all three, without becoming a generic social network. The brief came down to five requirements: keep the community women-focused and verified; offer structured access through availability, booking and credits; schedule correctly across time zones; take payments on mobile app stores and web; give the SheTalks team tools to approve companions, review IDs and manage accounts.
We built SheTalks as six cooperating codebases: customer and companion apps in Flutter, matching Next.js web apps, a shared Flutter package, and one FastAPI backend that serves all four apps. Every journey follows the same five steps.
Women-eligibility confirmation, a government ID check (AI first pass with Google Gemini, then operator review) and a short onboarding survey.
Browse and filter companions by expertise, language, rating and availability.
A realtime inbox, interactive chat cards that lead straight to booking, and Zego voice or video calls.
Subscription plans and message top-ups through in-app purchase on mobile and Cashfree checkout on the web.
Companion approvals, an ID review queue, credit grants, plan management, recordings and account deletion requests.

The platform serves three roles, each with its own app experience on mobile and web.
All four apps talk to one FastAPI backend over HTTPS, plus a WebSocket channel for realtime chat. PostgreSQL holds bookings, credits and payment records; Redis handles login codes and chat fan-out; RabbitMQ carries push notifications. A separate background worker runs reminders, notification delivery and call clean-up, so scaling the API never duplicates scheduled jobs.
Flutter (iOS and Android)
Next.js, React and Tailwind CSS progressive web apps
Python, FastAPI, SQLAlchemy
PostgreSQL, Redis, RabbitMQ
WebSockets, Zego voice and video
Apple In-App Purchase, Google Play Billing, Cashfree
Google Gemini for ID document review
AWS SES, S3 and CloudFront; Firebase Cloud Messaging

The hardest problems on SheTalks were about correctness under real-world failure: time zones, duplicate payments, dropped calls and missed notifications.
01
Customers and companions in different zones saw the wrong slots when apps converted times naively. We store every booking in UTC, keep each user's IANA time zone, and use one shared clock in every app.
02
A customer's return to the app and the gateway's webhook can both report the same payment. Grants are idempotent, backed by unique order and transaction IDs and automated duplicate-delivery tests.
03
Receipts sent by an app can be forged, so Apple and Google purchases are checked server-side before any credit or plan is granted.
04
Running schedulers inside every API process would send duplicate reminders. A single background worker owns all scheduled jobs, so the API scales freely.
05
Each notification is written in the same database transaction as the event that caused it, then delivered after commit, so none are lost when a request fails.
06
People drop and rejoin calls, so we record actual connected seconds, close bookings on schedule, and sweep orphaned call rooms and recordings.
07
Web payments, push notifications, call recording and two-step login can each be switched on per environment and rolled back without a deploy.
The Story Behind SheTalks: From Vision to Platform
Discover how DEQX built SheTalks, connecting women with wellness companions through seamless bookings, private chats, and live voice and video sessions.
What we delivered
We delivered a complete multi-app platform, backed by a broad automated test suite and a deliberate split of payments across mobile and web.
apps on iOS, Android and web, from 1 shared Backend
user roles: customers, companions and operators
payment channels: Apple, Google Play and Cashfree
automated test files across backend, mobile and web
versioned database migrations
About this case study
This case study is based on DEQX's review of the SheTalks code, tests and engineering documentation in October 2026. Every feature described is implemented in the codebase, and SheTalks has not shared user or revenue figures, so we report engineering outcomes only. Reviewed by the DEQX product and engineering team.
SheTalks is a women-focused wellness platform where customers connect with wellness companions through private chat and bookable voice or video sessions. Access is gated by women-eligibility confirmation and ID verification, and it runs on iOS, Android and the web.
DEQX built the full platform: a Flutter customer app, a Flutter companion and operator app, two matching Next.js web apps, a shared Flutter package, and one FastAPI backend with a background worker that serves them all.
The apps use Flutter and Next.js. The backend runs on Python and FastAPI with PostgreSQL, Redis and RabbitMQ. Zego powers voice and video calls, Google Gemini assists ID checks, and AWS handles email and file storage.
Customers confirm women eligibility and upload a government ID, which Google Gemini reviews first; an operator decides cases the AI can't settle. Companions verify their email and wait for operator approval before they can take sessions.
Customers pick a slot from a companion's availability and book it with credits, then join a Zego voice or video call from the app. Cancelling at least two hours ahead refunds all credits, and at least one hour ahead refunds half.
Mobile apps sell plans and message credits through Apple In-App Purchase and Google Play Billing, as the app stores require. Web users pay through Cashfree checkout. Every purchase is verified on the server before credits are granted.
Payment grants are idempotent: if the app and the payment gateway both report the same payment, credits are added only once. Unique order and transaction IDs enforce this, and automated tests cover duplicate verification and webhook delivery.
All bookings are stored in UTC, and each customer and companion has a saved time zone. A shared clock library in every app converts times for display, so both sides see the same session at their correct local time.
Keeping bookings and payments correct when things go wrong: users in different time zones, payments reported twice by the app and the gateway, and calls that drop and rejoin. We solved these with UTC storage, idempotent payment grants and connected-time call tracking.