CommuniTalk — East Meets West

Owner Admin

This area is for JungStudios LLC only. Enter the owner passcode to continue.

CommuniTalk — East Meets West

Owner Admin

v1.63t · admin.communitalk.com

Overview

Real numbers pulled live from the database — total accounts, plan mix, current MRR, and this week's call activity. See the Members and Revenue & Forecast tabs for the full breakdowns.

—
Total accounts
—
Paying accounts
—
MRR (Together + Everyday)
—
Completed calls (7d)
—
Profit (7d, as reported)

🍎 App Review Demo Account

The fixed sign-in code Apple / Google reviewers use to log into the demo account reviewer1881@communitalk.com. This ONE account skips the emailed code and always accepts the code below — so a reviewer never needs to receive an email. Every other member still gets a normal one-time code. After Apple finishes reviewing, change the code here to lock the demo account down again (it stays a free member you can keep for testing).

🔑 Static Sign-in Codes — customer support & testing

Give any single account a fixed sign-in code so they can log in without receiving an email — perfect when a customer's email won't arrive, or for your own testing. Everyone else keeps the normal one-time emailed code (dynamic codes stay ON by default). Set a code here, tell that person the code, and they sign in with their email + this code every time. Remove it anytime to switch them back to normal emailed codes.

Growth Funnel

Where visitors turn into paying members — and exactly where they leak. Watch these conversion %s once you start marketing; the biggest drop is where to focus.

Loading…

Site Versions

Confirms which version of every live page is actually deployed right now — this API worker plus every public page — so a stale, un-redeployed page shows up immediately instead of being mistaken for a real bug.

📶 Data & Platform

Real call data used (measured on each call) + how many people use the iPhone app vs the web.

Data today
—
7 days
—
30 days
—
This year
—
All time
—

App vs Web (visitors · 30d)

—

Top members by data

—

App-vs-web needs the app rebuilt with the “CommuniTalkApp” User-Agent (Capacitor config). Total app downloads come from App Store Connect → Analytics.

📊 Traffic & Growth

First-party visitor analytics — every landing (cold leads) plus members, by country, with real conversion. Privacy-first: country only, never the raw IP.

—
Unique visitors (7d)
—
Page views (7d)
—
Total members
—
New members (7d)
—
Conversion (30d)

🌏 Sign-ups by brand

Which front door each new member came through — Thảo Ơi, EarnRak, or CommuniTalk — and whether they joined on the website or the Apple app.

—
Thảo Ơi · thaooi.com
—
EarnRak · earnrak.com
—
CommuniTalk.com
—
Total new sign-ups

📞 Call reliability

Every call marked honestly — ✓ successful, ⚠ connection lost (weak/unstable signal), or missed — so you can see whether long 60–180 min calls hold up. A low drop-rate = a premium, trustworthy call.

—
Successful (7d)
—
Connection lost (7d)
—
Drop rate (7d)
—
Long calls ≥ 60 min (7d)
WhenHostGuestOutcomeDuration
Open this tab to load…

By Country — visitors → members

Where visitors come from vs. who becomes a member. This is your "150 visits → 50 members" view.

CountryVisitorsPage viewsMembersConversion
Open this tab to load…

Members by gender

Male · Female · Other, from sign-ups — the split to watch as you scale to thousands.

Members by occupation

Members by age

All members, by age band (from their birthday). Members only — anonymous visitors don't provide an age.

New members by age (30d)

Members who signed up in the selected window, by age band.

Daily trend (30 days)

■ visitors   ■ members

Top referrers

Top pages

🎙 Voice Usage

How members hear their translated messages & calls read aloud. This covers text-to-speech only — the live "listening" (speech-to-text) is unaffected. UK premium voice is the default; members can override to Male/Female & UK/US in their account.

🎧 Listening engine (STT)

🌐 Translation engine

🗣 Voice vendor (TTS)

Free vs paid voice

Voice gender chosen

Read-back language

Listening device

📞 Call Analytics

Every call, end to end: who called whom, where from, on what device, which AI vendors ran (listening / translation / voice), how long, data used, and the true cost — so you can see where spend & heavy use go as you scale.

🌐 Language pairs

Which direction people call — caller's language → the person they reached. Count = calls.

🗣 Voice engine used (read-back)

The text-to-speech engine that spoke the translation aloud. Count = read-backs. "Free device voice" = the browser's built-in voice (no premium vendor billed).

🌍 Countries reached

Every country a caller or callee joined from — CommuniTalk's live global footprint. Count = call-sides from that country.

When Caller → Callee From → To Device Duration Status Listening (STT) Translate Voice (TTS) Data Cost
Loading…

Cost = exact AI-vendor spend (listening + translation + voice) + an estimated video/bandwidth charge from data used. STT/translation are logged on every call; voice only bills when spoken translation actually plays.

💌 Refer a Friend — Status

Who's referring, who signed up (free vs member), their Geo-IP location, sign-up date and member-conversion date — plus the gift-card payout queue.

💳 Pending payouts

👥 Referrers & their referrals

Vendor Status & Balances

Live health + balance for every AI vendor CommuniTalk depends on, grouped by role — Translation, Speech-to-Text, Text-to-Speech. Balances shown live where the vendor has a balance API (DeepSeek $, Deepgram $, ElevenLabs characters). OpenAI, Azure & Anthropic have no public balance API, so those show key validity only — check their own dashboards for dollar balance. Anything low or broken gets a ⚠ Reload / Fix badge and is listed in the summary at top.

Auto-emailed to rob@communitalk.com every Friday (~08:00 UTC / ~3pm Vietnam) — green if all healthy, \u26a0\ufe0f if any token is low or a key is broken.

Stripe & Billing Status

One click, real Stripe API calls — confirms whether checkout will actually work before a customer hits it. Checks the same secret key and price IDs the real /billing/checkout endpoint uses.

Listening — speech-to-text

How the call page hears each speaker. Deepgram Nova-3 live streaming is the production engine in CommuniTalk v1.05.29t; Browser (Free) remains the automatic fallback for a disabled/unavailable vendor and unsupported languages.

Speech-to-text for Deepgram-unsupported languages

Deepgram Nova-3 can't transcribe a few languages, so those speakers need another engine. Pick the order to try. Auto (default) = Azure real-time first, then OpenAI Whisper. Covers: Cambodia — Khmer (km) · Laos — Lao (lo).

AI Control Center — performance tiers

Pre-set engine "stacks" you can grow into as paying customers increase — Basic → Building → Medium → Goal Met → Premium. Each tier is readiness-checked: a green dot means that engine's key is present and passed a live key check; grey means a key is still needed. Nothing here changes your live settings automatically. Your current working setup is shown below and stays exactly as it is — the only one-tap action is applying a tier's Speech-to-text order (safe: it only affects Khmer/Lao). Translation & voice stay on your current choice until you switch them yourself in the sections above.

Loading current setup…

Reading the dots: a tier is fully green when every engine it uses has a valid key. Live credit/balance is on the API (Vendor) Tokens tab — a green dot means "configured & key valid", not "has money". Recommended path: fix Azure, keep today's working settings, and step up a tier only when your paying-customer volume justifies the added quality/cost.

Voice Translation Diagnostics

Read-only deployment checks for the speech-to-text pipeline. This verifies the Worker, Deepgram setting, temporary-token route and browser-to-Deepgram WebSocket authentication without showing either the permanent API key or temporary token. Translation and speaking retain their separate live-test buttons above.

A green token/WebSocket result proves Deepgram is reachable. Microphone capture, two-language captions and LiveKit delivery still require the Gold version pair plus the two-device acceptance test.

Translation engine

How each utterance gets translated between languages.

Speaking — text-to-speech

How the translated words get spoken back. Cheapest to most premium, left to right. ElevenLabs options automatically fall back to Azure for languages ElevenLabs doesn't support yet (Thai/Cantonese, and Vietnamese on the Multilingual model).

Members

Every account (free + paid), each with a permanent member number. Click any column heading to sort.

Check who is verified by real evidence (clicked the email link / paid / owner-set) — no changes until you confirm.
#EmailUserGiven NameSurnameSexAgeCountrySourcePlatformLanguage / DialectVerifiedCategoryPlanMinutes UsedCredit MinStripeJoinedLast activeDevicesEdit
Loading…

🔗 Member Connections

Who is connected with whom, and how active each member is. Sorted by most connections. Sourced live from accepted matches — no effect on the app.

#MemberEmail# ConnectionsConnected with (member · when connected · last online)
Click “Load / refresh connections”.

Grant Minutes

Comp minutes to any account by email — no Stripe charge. Useful for your own testing, or for comping a real customer goodwill minutes through support. Granted minutes behave exactly like a purchased credit: they never expire and are only spent after the plan's included minutes run out.

Plan Distribution

How many accounts sit on each plan right now, and what each tier contributes to MRR.

PlanAccountsPriceMRR Contribution
Loading…

Cost → Profit report

Real usage, not estimates — pulled from actual calls and actual vendor tokens/characters billed.

—
Completed calls
—
Total minutes
—
Vendor cost
—
Est. revenue
—
Profit

Quality & errors

Latency and failure tracking for every translate-and-speak call, so slowdowns or vendor outages show up fast.

—
Utterances processed
—
Errors
—
Avg. latency
—
Slowest response
TimeRoomTranslationVoiceError
No errors in this range.

Breakdown by option combo

Which Listening/Speaking combos are actually being used, and how each performs cost-wise.

ListeningSpeakingCallsMinutesCostRevenueProfit
No completed calls in this range yet.

💰 Profit Snapshot — last 30 days

The bottom line at a glance, fully loaded: real revenue minus all costs (AI vendors + LiveKit video + Deepgram speech + Stripe fees). This is your true take‑home — clearer than the Reports tab, which counts AI cost only.

—
Revenue (30d)
—
Total cost (fully loaded)
—
Net profit (30d)
—
Profit margin
🎯 Monthly profit goal
0%

📈 Scenario Studio — profit vs paying members

Slide the assumptions and watch the chart move. Bars = monthly profit at each paying‑member milestone, fully loaded (AI translation + TTS + Deepgram STT + LiveKit video + Stripe fees + overhead). Dashed lines = your $38k / $50k / $100k profit goals.

★PayingRevenue/moCall‑min/moMedia+AI costStripeProfit/moMargin

Cost per call‑minute (, fully loaded) comes from your Model Settings above — change the STT/Translation/TTS combo or the LiveKit/Deepgram $ inputs and every number here recomputes. Estimate only; reconcile against LiveKit + Deepgram dashboards monthly.

Sales & ROI — detailed planning

A live planning + reconciliation tool. The snapshot above is the quick answer; the tools below let you model pricing, plan mix, and scale. Note: the Reports tab's Cost → Profit tracks AI vendor cost only (Listening + Translation + Speaking) — it does not include LiveKit video/bandwidth cost or Stripe's fee; this tab (and the snapshot) add both on your real usage data. Entirely client‑side — nothing here changes what's live for customers.

Model Settings

Pick which Listening / Translation / Speaking combo to model — defaults to whatever's actually active today. Set your real fully-loaded costs below; every table on this tab uses them.

Listening (speech-to-text)
Translation
Speaking (text-to-speech)
Launch / Incentive Discount
% off list price — models a promo. Applies to the planning table below only.
Payment Processing Fee (Stripe)
% + $/charge
Video/Bandwidth Cost (LiveKit) — not tracked in Reports today
$ /call-min conservative overage estimate: two $0.0005 participant-minutes plus about $0.0018 of downstream video at 1 Mbps per participant. Included plan allowances can make the real blended rate lower.
Speech-to-Text Cost (Deepgram) — new server-side STT
$ /min, both participants combined — current promotional Nova-3 monolingual streaming is approximately $0.0048/participant-min × 2. Adjust this when your invoice shows a different blended rate.
Deepgram STT (iPhone translation)
LiveKit Monthly Base Fee
$ /mo once past LiveKit's free tier — shown in Portfolio only, not per-plan.

Break-even minutes — is "unlimited" actually profitable?

Every minute of a call costs real money, so no plan is truly unlimited in cost. This shows how many minutes/month each plan can be used before it stops making a profit, using the fully-loaded per-minute cost from Model Settings above.

PlanPriceCost / minBreak-even min / moVerdict

Where each cost comes from

So the numbers make sense. Deepgram does speech-to-text only — it turns spoken audio into text. It does not translate, and it does not lower your Cloudflare bill.

CostProviderRough rateWhat it does
Speech-to-textDeepgram nova-3~$0.0096 / call-minNEW added cost. ~$0.0048/participant × 2 at the current promotional rate. Turns each speaker's voice into text so it can be translated reliably across browsers.
TranslationClaude Haiku / DeepSeek~$0.001 / minThe actual language translation. Unchanged — this is NOT Deepgram.
Voice outputAzure / ElevenLabs~$0.008–0.015 / minOnly when spoken-voice output is on. Free browser voice = $0.
Video / audio callLiveKit~$0.0028 / call-min after allowancesTwo connection-minutes plus estimated 1 Mbps downstream video per participant. Ship starts at $50/mo; Scale starts at $500/mo. Actual bitrate and included allowances matter.
PaymentsStripe2.9% + $0.30 / chargePer successful payment, not per minute.
Hosting / APICloudflare Workers~$0 at this scaleGenerous free tier. Deepgram audio goes browser→Deepgram directly, so it barely touches the Worker — but it also does NOT reduce this already near-zero cost.

Bottom line: Turning Deepgram on currently adds about $0.0096/call-min for a two-person call. It is the production choice for reliable two-way recognition on iPhone and desktop; the browser engine remains the free fallback. Update the editable rate above whenever your actual invoice differs.

Vendor / Combo Cost Reference

Real rates from the worker's own STT_OPTIONS / TRANSLATION_OPTIONS / TTS_OPTIONS constants (fetched live via /admin/options) — not hand-typed, so this never drifts out of sync with what's actually deployed.

TypeOptionRateStatusNote
Loading…

Estimated Profit by Plan

Sell price reflects the discount above. Drag each plan's Low/High minute sliders to bracket real usage — cost, profit, and margin recalculate as ranges, live, as you drag. Fully loaded: Listening + Translation + Speaking + LiveKit + Stripe fee, all deducted before it's called "profit."

PlanSell PriceEst. Minutes (range)Est. Cost (range, fully loaded)Est. Profit (range)Margin (range)

Portfolio Reconciliation — real data

Answers "is it really just ~$1/user profit?" using your actual usage this period, not a guess. Left card = what the Reports tab currently shows. Right card = the same real numbers with LiveKit + Stripe fee added on top.

As Currently Reported
Vendor cost (AI only)
—
Revenue
—
Profit
—
Fully Loaded (+ LiveKit + Stripe fee)
Total cost
—
Revenue
—
Profit
—

Note: Stripe's fixed $/charge portion isn't modeled here (real transaction count isn't in the usage report) — only the percentage fee is applied to real revenue. The Estimated Profit by Plan table above models the fixed fee precisely, per plan.

Customer Goal Estimator

How many customers, at each plan's midpoint fully-loaded profit, to reach a monthly profit goal.

PlanProfit/Customer (midpoint)Customers for Goal LowCustomers for Goal High

Scale Target Planner — 500 to 500,000 registered customers

A transparent scenario model—not a promise. It separates registered accounts from paying accounts, uses the active AI combination above, estimates LiveKit from published plan allowances, and shows why Cloudflare request charges are usually much smaller than speech/media and customer acquisition. Replace every assumption with real cohort data as CommuniTalk grows.

RegisteredPayingMonthly revenue equivalentCall minutesAI + media + paymentsCloudflare + D1 estimateOperating contributionMarginPeak connectionsLiveKit plan signal

Model boundaries: Traveler is treated as the entered number of purchases each month. Minutes mean initiated translated call-minutes; do not count the same two-person call twice. LiveKit assumes roughly 1 Mbps downstream per participant and compares published Ship/Scale allowances. Cloudflare assumes 14 dynamic requests per app-open minute under today's polling/heartbeat design and 5 ms average Worker CPU; real dashboard metrics must replace these estimates.

Growth Funnel — traffic, paid customers, CAC and churn

Use this to distinguish a customer goal from the traffic and cash required to reach it. “Customer” below means a paying customer; free registered accounts are shown separately.

Paying-customer goalRegistered accounts neededQualified visitors neededIllustrative acquisition cashBlended monthly revenueCustomers to replace monthly

Best initial channels: Vietnamese/English and other diaspora communities; long-distance couples; immigrant families; expat groups; international students; language tutors; travel creators; community organizations and churches. Start with referral loops and creator/community partnerships before scaling paid advertising. Track acquisition and retention separately for every language pair and channel.

Operational Gates — what must be true before each scale jump

ScaleRequired reliability/security gateCommercial gateInfrastructure action
0–500Two-device automated acceptance suite; rate limits; CSP/HSTS; incident log; verified backups; honest encrypted-transport wording.20–30 interview customers, measurable weekly retention, refund/support playbook.Workers Paid; LiveKit Ship for production; error monitoring; daily vendor health tests.
500–1,000Passkeys; dependency pinning; secret rotation; independent penetration test; recovery drills.One repeatable acquisition channel; cohort LTV/CAC >3; payback preferably under 6 months.Replace five-second polling with realtime presence; alerting for call success, STT latency and vendor failure.
1,000–5,000Formal access reviews, change approvals, vendor DPAs/retention settings, security owner.Churn segmented by plan/language; referral loop; customer support coverage.Durable Objects/WebSockets or push presence; queues for asynchronous logs; load test at 2× projected peak.
5,000–10,000SOC 2 readiness assessment; centralized audit logs; disaster-recovery RTO/RPO tests.Predictable monthly acquisition and contribution margin after support.LiveKit Scale when economics/concurrency require; vendor quota increases; multi-vendor STT/translation failover.
10,000–50,000SOC 2 Type I then Type II evidence period; annual pentest; privacy/deletion automation.Localized onboarding/support; fraud/refund controls; finance forecasting.Database query audit, read replication where useful, analytics warehouse, SLO dashboards and on-call rotation.
50,000–100,00024/7 incident coverage, enterprise vendor SLAs, formal business continuity exercises.Multiple durable acquisition channels and regional partnerships.LiveKit quota/Enterprise discussion before limits; regional performance tests; capacity reservations where needed.
100,000–500,000Continuous control monitoring, mature trust center, regular red-team/vendor-risk program.Regional pricing, taxes, local payment methods, multilingual support operations.Enterprise media contract, push-notification platform, partitioned realtime state, staged regional rollouts and dedicated SRE/security staffing.

🎨 Filter Artwork —

AR face filters (like Instagram). Pick the engine, turn it on, and test it. All three run 100% on the member's device — video never goes through DeepAR's or Banuba's servers; they only do a tiny license check. Start on the free engine; add a key later if you want the premium ones.

Master switch

Who can use filters:

Choose the engine

Keys (only for the premium engines)

What each engine needs

A · Free (default) — on-device MediaPipe face mesh. No signup, no key, no cost. Fun emoji-sticker filters (crown, ears, sunglasses, hearts). Great for testing today.
B · DeepAR — polished beauty/3D filters. Free to test (watermark), then ~$25/mo up to 1,000 users. Needs a license key pasted above.
C · Banuba — top-tier quality. 14-day free trial, then enterprise pricing (~$1/user/mo, annual). Needs a client token pasted above.
🔒 Privacy: all three process video on the device. Nothing is uploaded to a filter vendor — only a small license/usage ping for B and C.

🪪 Validation by Selfie Photo —

Compare each member's live selfie with their profile photo. If it's the same person, tap Approve to grant the official ✓ Verified badge — which also boosts them in Discover. Tap any photo to zoom it full-size.

Open this tab to load the queue…

📧 Email me when photos are waiting

Pick how often CommuniTalk emails you to approve selfies. On a chosen day it emails you only if at least one photo is waiting — otherwise it stays quiet until the next one. Change this anytime; it saves instantly, no code edits.

⚙️ Future automation (for later): approval is manual today. To make it automatic, (1) add a face-match vendor (AWS Rekognition CompareFaces or FACEIO) so the selfie is auto-compared to the profile photo and auto-approved above a confidence threshold — the method column is already set to accept 'auto'; and (2) the digest runs on the worker's Cloudflare Cron Trigger (Workers → Triggers), so add a daily cron like 0 13 * * * and these day settings do the rest. Until then, this tab + email is the manual flow.

✓ Verification queue

Pending selfies. Compare the selfie to the member's profile photo, then approve to grant the ✓ Verified badge (which also boosts them in Discover).

🛡 Scam Radar

Automatic trust-radar for the classic catfish/scam patterns — new & unverified accounts, mass-liking, login-country ≠ stated country, duplicate photos, missing photos. Nothing is auto-banned; review and Suspend (reversible) or send them to the Validation queue.

Open this tab to scan…

💞 Dating — At a Glance

Live from the dating tables (profiles, matches, chat, reports). Powers the soulfinder side of CommuniTalk. Needs API worker v0.50+.

—
Members
—
Active
—
Verified ✓
—
Premium
—
Matches
—
Messages
—
New (7 days)
—
Open reports

Members

Every dating profile, newest first. Verify grants the ✓ badge; Pause hides a member from discovery.

NameCitySpeaks → WantsJoinedStatusActions
Open this tab to load members…

🧪 Full Automated Self-Test

Simulates two members through the entire flow — sign-up → profile → connection request → approve → one-tap ring enable → translated chat → gentle goodbye — against the LIVE database + translation engine, then auto-deletes all test data. Run this any time to confirm the whole site is healthy.

🎥 Test Video Calls

Runs a REAL end-to-end health check of the whole calling stack — LiveKit tokens, live translation (EN→TH), transcript phonetics, Deepgram STT, TTS vendor, R2 snapshot storage, Resend email, shareable Video Links, scheduled calls, and the transcript/snapshot backend. Every run is logged; a weekly check (Mondays) also emails ceo@communitalk.com a pass/fail summary.

🛡 Safety & Moderation

The big-tech Trust & Safety layout. Action Queue = reports to address (Apple 1.2: act within 24h). Restricted = members currently suspended (reversible). Archive = decommissioned accounts (self-deleted + ejected), restorable for 30 days, then auto-purged.

WhenReporterTargetReasonStatusActions
—

💰 Revenue Goal — App Portfolio

Toggle a stage to see the predicted climb to your goal over ~6–12 months — or edit any stage's numbers. Each stage saves its own plan on this device.

$0 / mo net
—
0% of goalGoal $38,000
$0
Gross / mo
$0
Net (after Apple)
0
Paying subs
$0
Blended price
%

The 15% rate applies once you enroll in Apple's free Small Business Program (under $1M/yr). Conversion % drives the free-user funnel below.

AppPrice / mo Paying subsIncome / mo
Total0 $0
$0 net

The funnel behind it

0

free users needed to produce 0 paying subscribers at 3% — roughly 0 downloads.

Reality check

Revenue rarely spreads evenly — usually 1–2 apps carry 60–80%. Think a couple of winners plus a portfolio of smaller earners. More apps = more shots on goal + name-locking + cross-promotion.

🎁 Gifts (beta) — owner test

My eWallet · Reloadly
—
Loading live balance…
Gift rail — the method she receives
Transfer to a contact
Debits your Reloadly float and sends straight to the contact's TrueMoney. She only ever sees what you send her. No contact in the list yet? Enable them in the allowlist below (with their TrueMoney number).
₿ Bitrefill · crypto-funded balance
—
Loading…
Pays from your loaded Bitrefill balance (fund it with crypto from Coinbase). Delivers a redeem code (TrueMoney/Grab gift card) to her Gift Wallet, or a direct phone top-up. Add secret BITREFILL_API_KEY (Personal) — or BITREFILL_API_ID + BITREFILL_API_SECRET (Business). Test scope: girlfriend / ceo-admin.

Send a real gift-credit to a connection's Gift Wallet, check your Reloadly balance, and see which gift-card products exist for Thailand / Vietnam. Owner-only. The gift-credit shows live in her app; the real payout is fulfilled via a Reloadly gift card or manually for now. Needs Worker secrets RELOADLY_CLIENT_ID / RELOADLY_CLIENT_SECRET (+ optional RELOADLY_ENV).

Allowlist & TrueMoney top-up (Thailand test)

Enable a Thai connection, save the mobile number connected to their TrueMoney, then send a direct top-up. Get a member's user ID from the Members tab.

All gifts + withdrawal requests