CASE STUDY
We sealed SmallTalks' revenue leaks.
Turkey's largest English-speaking community was losing leads as it grew. We turned an Excel-run company into a software-run company.

First response
Lost leads
Less manual work
THE SCALE
Not a community. An operation.
SmallTalks went from one city to six in six months. The system we built is the backbone under that growth — running live, used by 22 people daily, generating revenue right now.
6
CITIES
48
VENUES
94
ACTIVE EVENTS
22
STAFF
590
ACTIVE MEMBERS
1,051
CUSTOMER CARDS
4
CONNECTED APPS
65
MIGRATIONS
THE PROBLEM
Growth was cracking operations.
SmallTalks is a fast-growing community business. Hundreds of new inquiries every month — but the team couldn't keep up. WhatsApp messages sat unanswered for hours. Potential members went elsewhere.
Operations ran on hand-built files: Google Sheets, Trello, Padlet, Google Calendar, WhatsApp history. Every city kept its own notebook. Every moderator their own list. Every salesperson their own Excel.
The worst part: they couldn't even measure the losses. Cemil (the owner) spent days at month-end just reconciling revenue. Who showed up, how full events were, which moderator performed best — nobody could say.
Average first response time
Leads lost completely
Spent on manual follow-up
AFTER INSTALL
One line of outcome.
No more Excel. WhatsApp history is not a data source. The Trello board is closed. All of it replaced by a single Supabase database and four connected apps.
FIRST RESPONSE
LOST LEADS
LESS MANUAL WORK
796
Orders (Paratika)
266
Auto e-invoices (VisionPlus)
3,041
WhatsApp messages handled
1,166
Instagram DMs handled
570
AI bot conversations
572
Event attendances logged
116
Event photos uploaded
206
Moderator XP logs
ARCHITECTURE
Four apps. One database. One brain.
All connected to one Supabase Postgres instance. RLS across 5 role levels. 4 webhooks inbound, 16 crons internal. Bot, checkout, admin, mobile — all reading the same data.
Next.js 16
60+ sayfa / pages
Next.js 15
Multi-step + widget
Expo SDK 54
iOS + Android
Framer
SEO + landing
DATA SOURCES
DIGITAL BRAIN
AUTONOMOUS ACTIONS
TRANSFORMATION
Before and after.
THE SYSTEM WE BUILT
Five layers. One flow.
The system automates every step from lead capture to win-back. Each layer is backed by real data.
AI First Response
Every inbound message gets a personalized reply within 30 seconds. Active 24/7.
3,041 WhatsApp + 1,166 Instagram DMs processed
Lead Qualification
AI pre-qualifies and routes leads. High-intent prospects surface first.
570 active bot conversations, 75 learning-loop questions
Comms Automation
Follow-ups across WhatsApp, email, and push flow automatically. Nobody falls through.
12 approved WP templates + 15 automation rules + 278 logs
CRM Pipeline
Every lead tracked in a central Kanban. Drag & drop, cadences, tasks, focus mode.
1,051 customer cards, 254 sales notes, 201 tasks
Recovery & Memory
Inactive customers auto-detected, no-show winback, activity log.
16 cron jobs, 491 system action logs, 551 notifications
ZOOM IN — #1
The AI chatbot engine.
A 2,342-line TypeScript decision engine that answers WhatsApp and Instagram on its own, orchestrating OpenAI GPT-4o-mini with an Anthropic Claude fallback.
59 knowledge base entries, 6 categories (general, events, membership, pricing, location, lessons)
5 conversation flows: membership freeze, event location, private lesson, membership info, event info
Intent classification → KB similarity → flow match → button response → GPT fallback
Low-confidence escalation: hands conversation to human, message surfaces in the Inbox
Learning loop: unanswered questions get logged, admin adds to KB, system grows itself
Cache + invalidation: KB updates propagate live in 30 seconds
LIVE DATA
2,342
lines of engine code
59
KB entries
570
active conversations
75
learning-loop questions
ZOOM IN — #2
Roles and RLS.
A 5-level permission hierarchy, enforced via Supabase RLS policies on every table. Even admins don't see financial data in every role.
Admin (100) — Cemil + Can: everything, including financials
Coordinator (80) — legacy role, now merged into admin
Salesperson (40) — CRM + inbox + campaigns + sales; never sees revenue charts
Moderator (60) — only their own events, their own students, venue CRUD, XP system
Member (10) — customer, sees own data through the mobile app
RLS policy example: events_insert → moderators can only insert rows where moderator_id = auth.uid()
ACCESS MATRIX
5
role levels
65+
tables with RLS
9
pre-computed views
3
security migrations (00062-65)
ZOOM IN — #3
The mobile app.
Built with Expo SDK 54 + React Native. Member wallet and moderator scanner in one binary, hitting the same Supabase data as the admin panel.
Member flow: onboarding → dashboard → event reservation → QR wallet → lesson calendar
Moderator flow: scanner → event check-in → vibe mood + level rating
Assignment screen: private-lesson homework visible in-app
Notifications: push + email, 551 live records
Auth: Supabase Auth email/password, JWT-based
Shipping: EAS Build for iOS + Android, preparing for store submission
APP STRUCTURE
6
auth screens
12
tab + detail screens
Expo
SDK 54
2
platforms (iOS + Android)
APP STORE
The same system, in the member's pocket.
Event discovery, QR check-in, streaks and goals — the screens we prepared for the App Store listing.





ZOOM IN — #4
Payments + e-invoice stack.
Paratika production payments + VisionPlus SOAP e-invoice integration. When an order completes, membership opens automatically, an invoice is issued, a welcome message fires, and the email goes out — all in one chain.
Paratika 3D Secure: session token → callback → order update → trigger chain
Migration 00022: Order completed → membership auto-created
VisionPlus SOAP: XML builder + soap-client → invoice creation → PDF URL
Resend: React Email templates for order confirmation, welcome, receipt
WhatsApp: welcome template fires automatically
Success + failure callbacks, installments, coupon validation
COMPLETED FLOWS
796
Paratika orders
266
VisionPlus invoices
12
active coupon codes
100%
automated flow
THE OPERATOR'S VIEW
From ad to member, on one screen.
Every lead from a Meta ad lands in the system instantly, WhatsApp follow-up fires on its own, and it's tracked through to membership from one panel. The member sees the app; the operator sees the whole flow.

Member sees
Meta Ads Tracking
Ad spend
₺48,200
Leads captured
590
Cost per lead
₺82
Converted to member
312
53% conversion
| Campaign | ||||
|---|---|---|---|---|
| Istanbul · Networking198 lead · ₺75 | ₺14,800 | 198 | ₺75 | Active |
| Izmir · Game Night132 lead · ₺71 | ₺9,400 | 132 | ₺71 | Active |
| Ankara · Meetup88 lead · ₺82 | ₺7,200 | 88 | ₺82 | Active |
| Bursa · Social74 lead · ₺82 | ₺6,100 | 74 | ₺82 | Paused |
| Antalya · Event61 lead · ₺97 | ₺5,900 | 61 | ₺97 | Active |
Lead flow
WhatsApp follow-up fires automatically on every lead — the bot replies in 30 seconds, so nothing goes cold.
Operator sees
THE GALLERY
The screens the system runs on.
A designer didn't draw these. Every one of them is a live surface that 22 people open every day — Cemil reads revenue at month-end, moderators plan events, the bot answers customers in real time.
The operations dashboard — revenue, leads, events, capacity.
Drag & drop Kanban — New → Contacted → Quoted → Won.
Message center — bot and human side by side, claim system.
Knowledge base + conversation flows + test panel.
Plan-week wizard — city, venue, moderator, one flow.
Cohort, sales, loss, operational — 9 report pages.
XP system, rankings, performance dashboard.
Member QR wallet — scanned by moderators at check-in.
VisionPlus e-invoice list + XML preview + PDF.
Team management + 5 roles + city assignments + venue CRUD.
THE STACK
Modern stack, in production.
No piece is gratuitous. No piece is half-installed. All of it running in production right now.
Next.js 16
Admin panel (RSC + Server Actions)
Next.js 15
Customer checkout + widget
Expo SDK 54
iOS + Android mobile
Supabase
Postgres + Auth + Storage + Realtime
OpenAI GPT-4o
AI chatbot engine
Anthropic Claude
Chatbot fallback
WhatsApp Cloud API
Bot + message center
Instagram Graph API
DM inbox (6 city accounts)
Meta Lead Ads
Webhook lead capture
Paratika
3D Secure payments
VisionPlus
E-invoice SOAP service
Resend
Transactional email
Google Calendar
Event + lesson sync
Google Meet
Private lesson links
Google Forms
Universal lead polling
Google Contacts
Phone directory sync
TECHNICAL DEPTH
Operations as code.
Competitors don't publish these numbers because they don't build at this scale. We did. Now the same pieces can work for you.
65
Supabase migrations
RLS on every table
65+
tables
+ 9 pre-computed views
16
cron jobs
reminders, cadences, reports, retargeting
4
webhooks
WhatsApp, Instagram, Meta Leads, Google Forms
4
connected apps
admin, checkout, mobile, marketing
2,342
lines chatbot engine
TypeScript, OpenAI + Claude
59
knowledge base entries
6 categories, learning loop
15
active CRM rules
278 automation logs
9
report pages
sales, cohort, loss, operational
12
approved WP templates
city visuals + buttons
THE PROCESS
How we built it.
Transparency: here's how long each phase took and what we invested.
01
· 1 weekRevenue Check-up
We mapped SmallTalks' existing flow. Spoke to every city's moderator. Found the leaks and bottlenecks. Output was a prioritization report.
02
· 2 weeksSystem Design
We designed a custom architecture. 4 apps, 5 role levels, 16 crons, 4 webhooks. Migration 00001 was the first schema. Scope locked with Cemil.
03
· 8 weeksPhased Rollout
Phase 1 — Checkout + memberships + payments (2 weeks). Phase 2 — Admin CRM + WhatsApp inbox (3 weeks). Phase 3 — AI chatbot + cadences + reports (3 weeks). Each phase went live.
04
· OngoingContinuous Optimization
We keep improving against live data. Migration 65 shipped last month. The chatbot gets smarter every week. 4-6 new features a month.
One system. One panel.
Running right now.
It's running as you read this page. 22 people log in every day. Customers write on WhatsApp, the bot replies, orders fire, invoices cut. Not a demo.
YOUR TURN
Your business has the same leaks.
Start with a free Revenue Check-up. Open up your Excels, your WhatsApp history, your tools — we'll find the leaks together.