Case Study
Karmah
Turning honest consumer feedback into tangible charitable impact.

About Karmah
Karmah is a purpose-driven startup reshaping how brands gather consumer feedback. Rooted in the core philosophy of LUCK — Love, Understanding, Compassion, and Kindness — the platform operates on a transparent exchange: honest opinions in return for real-world social impact.
Instead of relying on traditional, paid focus groups, Karmah engages users who are motivated by making a difference. By completing short surveys — known as “chimes” — or leaving open-ended voice notes about the brands they interact with, users trigger a donation of up to $2 to a charity of their choice. The experience is completely anonymous and smartly gamified; users can build daily streaks, collect “Koins”, and track the exact financial impact their answers have raised over time.
Karmah approached Bitcube in late 2024 with initial designs and a foundational database of brands and charities. They needed a technical partner to bring their vision to life and build a Minimum Viable Product from the ground up. Eighteen months later, we delivered a comprehensive, fully deployable digital ecosystem — a mobile application, a web platform, and the backend powering them both — ready for launch.
The Challenge
The project began with a clear mission: transform Karmah's initial static designs into a fully functional, cross-platform MVP. That required engineering two distinct applications — a Next.js web app and a Flutter mobile app — delivering an identical, seamless experience. Because the initial designs illustrated the visual screens but not the dynamic behaviours of real-time data, our design team worked continuously alongside the developers, evolving the experience as the platform came to life.
Karmah is a company built on listening, and their active market testing during the build provided real-world insight. Six months in, research revealed a clear user preference: people wanted to speak their feedback rather than tap through a survey. We embraced that pivot, shifting the platform's core focus to voice chimes. It required real-time audio capture with live transcription and completely reimagining the analytics engine to interpret unstructured, spoken sentiment rather than tallying multiple-choice answers.
Behind the scenes, the build required highly collaborative data architecture. Karmah's internal developer was building a custom admin tool managing brands, surveys and charities in MongoDB, while our API handled users, answers and the platform's digital economy in PostgreSQL. Both had to run in harmony while turning spreadsheets of raw data into a rich, searchable catalogue of thousands of brands.
Most importantly, because every completed chime triggers a real charity donation and awards in-app Koins, data integrity was non-negotiable. An answer lost or double-counted wasn't a display bug — it was real money. The architecture had to guarantee financial accuracy from day one.

Our Solution
Phase 1 — Design review and foundational architecture
We reviewed the UX/UI designs and database Karmah supplied, then moved into strategic planning to ensure the architecture could support a unified frontend ecosystem. The web application is Next.js 14 with the App Router; the mobile application is Flutter. To guarantee the two never quietly drift apart, both consume a client generated directly from the API's OpenAPI contract, eliminating hand-written HTTP code. On top of that foundation we built the core user flows: sign-in via Google and LinkedIn (with Apple and Facebook supported in the API), a dozen distinct question types from image pickers to ranking and free text, and gamification wired into the answering path itself — a completed chime instantly allocates its donation to the user's chosen charity, so the reward loop is the core experience rather than an afterthought. New users are profiled through a question bank spanning eleven topics, each with its own badge to earn.
Phase 2 — Transforming spreadsheets into a dynamic catalogue
Karmah supplied raw brand and charity data that had to become a navigable, targetable ecosystem. The catalogue now hosts over 4,400 brands, categorised by competitors, target age ranges, geographic focus and spend brackets, alongside over 300 charities grouped by cause with ratings, regions, registered numbers and fundraising goals. To remove the manual burden of managing visual assets we integrated Brandfetch, so brand logos and symbols resolve automatically and are stored in every format the apps need — perfect rendering at any size, on any background, without human intervention.
Phase 3 — A comprehensive control centre for brands
Because brands are the paying side of the platform, they needed a dashboard rather than an inbox. The portal holds brand and location records and supports distinct roles — Brand Representatives and Location Managers — with secure invite, view and revoke flows. Access is requested and approved, with an automated toggle for trusted brands, and store locations are sourced dynamically via Yelp and Radar rather than typed by hand. For data collection we built a drag-and-drop survey builder with a per-question editor, a real-time issues sidebar to catch incomplete fields, and a true-to-life preview. Brands rarely start from a blank canvas, so they choose from four core templates that adjust depending on whether the brand sells large goods, small goods or operates online — “how often do you buy this?” means something very different for a car than for a coffee. Surveys run once or on a recurring schedule with geographic targeting. Later we engineered a QR code pivot: locations generate unique codes so users can scan and drop a chime on the spot, every scan logged, no account required.
Phase 4 — The pivot to voice chimes and machine learning
Once market testing validated the shift to voice, we moved fast. Work started in the backend and mobile app, reached the web app within a week, and live transcription was running within a month. Transcription became its own standalone service streaming audio over WebSockets, switching between AWS Transcribe and Deepgram behind a single interface — for AWS we hand-wrote the request signing, since that streaming endpoint authenticates a signed URL rather than a standard header. Recordings can be paused and resumed while the socket stays open, so a user can stop mid-thought, read their transcript back, and edit it before submitting. To make sense of the qualitative data we built a sentiment scoring engine on ML.NET, hosted in Amazon S3, returning nuanced probabilities for every class and retrainable via an administrator CSV upload with no redeploy. The message board extracts keywords from actual speech, running them through a Hunspell spell-checker so misspellings don't fragment the analytics.
Phase 5 — Actionable analytics and reporting
Collected feedback only matters if a brand can act on it, so the analytics layer grew to eighteen distinct chart types. Net Promoter Scores include distribution, competitor comparisons and historical trends. Predictive forecasts cover personal finances, the wider economy and spending habits, while other visualisations track sentiment, brand love, purchasing factors and demographics. Brands drill down from a high-level survey view to individual answers, download any section as a PDF, or export raw survey and voice data as CSVs via the API.
The finished platform required two administrative surfaces. We designed and built the primary SuperAdmin tier directly into the web dashboard, letting Karmah onboard brands, approve access requests and manage the catalogue via a dedicated API. The one piece we didn't initially build was Karmah's internal database editing tool, though we took over its maintenance and extension in mid-2025. Underneath it all runs a CI/CD pipeline: GitHub Actions deploys the API to AWS Lambda and the transcription service to containers, while Bitrise handled mobile builds directly to App Store Connect. The Android build for Google Play ships from the same single Flutter codebase.
Key Features
- ✓One API contract, two applications — web and mobile from the same generated client
- ✓A dozen question types — rating, ranking, image picker, range, dropdowns, free text
- ✓Voice chimes — live transcription over WebSockets, AWS Transcribe or Deepgram, swappable
- ✓Karmah's own sentiment model — every voice answer scored, retrainable from a CSV, no redeploy
- ✓Survey templates — four kinds, each shaped for large goods, small goods or online
- ✓Survey cadence — one-off, monthly, quarterly or annually, targeted by region
- ✓More than 4,400 brands — with competitors, demographics and spend buckets
- ✓Brand logos resolved through Brandfetch — nothing sourced by hand
- ✓Surveys pre-built for effectively every brand in the catalogue
- ✓Over 300 charities — with ratings, regions and fundraising goals
- ✓Profile question bank across eleven topics — each with its own badge to earn
- ✓Self-service brand dashboard — locations, reps and managers, invite, approve and revoke
- ✓SuperAdmin tier in the same dashboard — onboarding, approvals, catalogue management
- ✓Per-location QR codes — every scan logged, answerable without an account
- ✓Koins, streaks and donations — rewards wired into completing a chime
The Results
Launch-ready engineering. The platform is complete and poised for launch — a cohesive ecosystem of three applications: a Next.js web platform, a cross-platform Flutter mobile app for iOS and Android, and a .NET 8 API. Deployment pipelines run continuously across development, staging and production, and mobile builds are signed and ready in App Store Connect, so there is no technical friction standing between Karmah and its go-live date.
A fully seeded catalogue. Karmah will not launch to an empty room. We pre-seeded the platform with thousands of brands and hundreds of charities, complete with tailored surveys for effectively every brand in the database. The first user to open the app will find brands worth chiming about and causes worth funding — not a waiting list. Because visual assets resolve automatically via Brandfetch, the catalogue can scale without anyone sourcing logos by hand.
An agile, integrated voice pivot. Rather than treating the mid-build shift to voice feedback as a costly rebuild, we absorbed it into the architecture. Voice simply became another type of chime, sharing the same reward, donation and analytics pathways as traditional surveys. We extended the foundation instead of bolting on a second product.
Vendor independence and proprietary ML. For a platform where speech is the core interaction, scaling costs matter. The transcription service sits behind a single interface that toggles between two providers on a configuration switch. And Karmah owns its sentiment model outright: rather than renting a third-party API, the model is trained on Karmah's own data and can be retrained by an administrator uploading a spreadsheet — no code required.
Self-serve brand empowerment. Brands manage their entire presence autonomously — register, add store locations, invite representatives, publish tailored surveys and generate location-specific QR codes without Karmah staff in the middle, though Karmah retains an approval step where needed. Because surveys repeat monthly, quarterly or annually, brands track long-term trends rather than a one-off snapshot.
End-to-end traceability. Every interaction is tracked: from a user scanning a printed QR code in a physical store, through their anonymous voice chime, to the financial allocation for their chosen charity, and back to the brand's dashboard as exportable analytics.
Client
NAME
Karmah
INDUSTRY
Consumer Feedback & Charitable Giving
Services
Tech Stack
Ready to Start Your Project?
Let's talk about your goals and find the best path forward together.
Get in Touch