All case studies
CTO as a Service SaaS Security

FaceUp: 1.3 million users in 70+ countries. And a dev team that has to keep up.

FaceUp is a global whistleblowing platform from Brno. When the product started growing faster than engineering, we stepped in as CTO as a Service, unified development, and after roughly a year handed a healthy team over to an internal CTO.

1.3M users · 70+ countries — Platform scale
CTO as a Service — Our role
Unified codebase — The hackathon that sped up development
~13 months — Until handover to an internal CTO
FaceUp - anonymous reporting and the codebase unification after the hackathon
Industry
SaaS / Whistleblowing & Compliance
Partnership
~13 months of CTO as a Service (2025-2026)
Services
CTO as a Service Software Development DevOps & Cloud
Technologies
8  tools

FaceUp started as a student project called Nenech To Být ("Don't Let It Go"), an app for anonymously reporting bullying at schools. Today it's a global whistleblowing and compliance platform trusted by 1.3 million users in more than 70 countries. As the product and sales accelerated, engineering was struggling to keep pace. We came in as CTO as a Service to bring order to development and prepare it for further growth.

“Together with Cookielab we unified our development and set up the processes our internal team builds on today. Exactly the help we needed at that stage.”
Jan Slama
CEO & Co-founder, FaceUp
Taking over technical leadership as CTO as a Service
Straightening out engineering delivery (Scrum to Kanban transition, planning, velocity tracking)
Unifying a fragmented codebase into one consistent style
Kicking off the move to a modular architecture for faster feature development
Bringing AI-assisted coding into the team's everyday work
Handing a healthy, working engineering org over to the incoming internal CTO

The story

FaceUp was growing at rocket speed. Expansion to every continent, Series A funding, clients like Mercedes-Benz, Heineken and KFC. But that kind of pace puts pressure on the team building the product. Development was fragmenting, planning didn't match reality, and part of the energy was being burned in places the product didn't need.

We stepped in as CTO as a Service. Not to add hands, but to take over technical leadership. First we worked out where things were grinding: how the team plans, how it measures velocity, where time gets lost. Then we started straightening out the process, prioritisation and architecture.

The turning point was a hackathon where we unified the codebase. FaceUp had three different generations of code living side by side in one codebase. We merged them into a single standard and rewrote the old code to match it. Development got faster and simpler for the whole team.

From day one we assumed our goal was not to stay forever. When FaceUp matured to the point of hiring its own internal CTO, we handed over a tidy engineering org he could keep building on.

The challenges

The hardest part wasn't the technology - it was people and processes. Straightening out delivery in a team used to its own way of working, without stopping development that has to keep running for global clients. The team had to be won over, not commanded from above.

What's next

FaceUp continues under the leadership of its own internal CTO, on foundations we built together. That's exactly what CTO as a Service should look like. We come in when it makes sense, and we leave once the client is stronger than before.

Technically, this was a mature SaaS in hypergrowth. GraphQL, TypeScript, React, running on AWS across multiple regions including the Middle East. The frontend had been rewritten several times over the years; the backend carried the bigger technical debt. The task: speed up delivery without stopping product development for global clients.

What we delivered

Codebase unification (three generations of code into one standard) at a hackathon
Migration towards a modular architecture
Shared form business logic across use-cases (the "Abstract Forms" project)
Feature flags and a separate staging environment in its own AWS account
AI-assisted coding adoption (Cursor → Claude Code)
Engineering process setup (Scrum → Kanban, atomic commits, review flow)
“FaceUp is exactly the kind of project we love. A healthily growing product, real-world impact, and a technical challenge in the form of a codebase that needed unifying. We didn't go for a big rewrite - step by step we cleaned up the foundations their own team now builds on.”
Patrik Votoček
Technical Owner / CTO as a Service, Cookielab

Technologies

TypeScript GraphQL React AWS (multi-region) Sequelize Feature flags Sentry PostHog

The story

FaceUp uses GraphQL on the frontend the way it's meant to be used. The backend, however, wasn't built for it, which created a performance ceiling. While the frontend had been rewritten several times, debt kept piling up on the backend. We didn't go for a "big bang" rewrite. Instead, we started introducing abstractions that unblock development and kept pushing towards a modular architecture.

The most visible step was unifying the codebase at a hackathon. Three generations of code coexisted in a single codebase. We introduced one standard, rewrote the old code to match it, and moved the frontend to Suspense queries. The result is a codebase that new and existing developers alike can find their way around much faster.

In parallel, we worked on operational maturity. Feature flags for safe releases, a separate staging environment in its own AWS account, cleaner Git workflows. And because this is a whistleblowing platform, everything within end-to-end encryption and with zero compromises on security. The final layer was adopting AI-assisted coding, moving to Claude Code as part of the everyday workflow.

What's next

Completing the modular architecture and "Abstract Forms" is now in the hands of the internal CTO. The foundation - a unified codebase, feature flags, multi-region AWS and an AI-assisted workflow - is ready to keep scaling.

or

...your career

Open positions