CAMDOM -- People, Relationships & Team Dynamics
Complete team profiles, organization hierarchy, communication patterns, power dynamics, trust model, pressure points. The human story behind CAMDOM.
CAMDOM -- People, Relationships & Team Dynamics
"O time ta virado a dias, mas estamos focados" -- Felipe Almeida, Aug 16 2024
This page documents every human being involved in CAMDOM, their roles, how they related to each other, the communication patterns that shaped the project, and the pressure moments that defined it. Extracted from WhatsApp transcripts between the core team, these are the raw dynamics of a project that went from concept to 29 international awards.
1. The Three Organizations
CAMDOM was built at the intersection of three organizations with fundamentally different cultures, languages, and incentive structures.
BILLY BOY (Brand Owner)
- Who: German condom manufacturer, market leader in Germany
- Role: Brand owner, final approval authority, ultimate client
- Decision power: Absolute. Every design choice, every text, every store listing was subject to their approval
- Communication style: German directness. Felipe described it as "ZERO carinho" (zero affection). Their feedback decks were clinical: "felipe, cara... nao funcionou a conexao entre 2 androids, mano. nada. nao funciona."
- Key individuals:
- Alexander Struemann -- Brand Manager at BILLY BOY / Newell Co. Email: [REDACTED]. One of the final testers. Part of the internal testing team that generated detailed bug reports via SharePoint
- Jannick Paulick -- Assistant Manager at BILLY BOY. Email: [REDACTED]. Also a tester. Registered as an internal testing user on both iOS and Android
- Dynamic with Pay4Brain: Billy Boy paid Innocean, who paid Pay4Brain. The money flowed downhill, but the approval authority flowed uphill. Billy Boy set the dates, the requirements, and held the veto power
Innocean Berlin (Creative Agency)
- Who: International creative agency, client-facing, design authority
- Role: Campaign strategy, creative direction, design production, client liaison
- Decision power: Moderate. They owned the visual design and the feedback pipeline (SharePoint decks, Teams calls) but could not override Billy Boy on business decisions or force Pay4Brain on technical ones
- Key individuals:
- Sebastian Pattis -- Creative direction at Innocean. Email: [REDACTED]. Led design reviews with Alefita. After the Aug 16 design call, Alefita reported: "pra ele nem mexia mais em layout" (he wouldn't touch layout anymore) -- meaning he deferred to Alefita's technical implementation over his own original design intent
- Maso Heck -- Designer at Innocean Berlin. Supplied Photoshop/PSD materials through the shared project workflow. He is not the person referred to as Mika in CAMDOM records and did not contribute to the codebase.
- Lisa -- Tester at Innocean. Notably absent on Aug 14 when critical multi-device testing was needed. Felipe forwarded: "LISA nao veio hoje" (Lisa didn't come today) -- causing testing gaps that delayed Android validation
- Communication with Pay4Brain: Feedback decks via SharePoint, Teams video calls, PowerPoint presentations with video evidence of bugs. The feedback loop was: Billy Boy/Innocean test -> create PPT with video evidence -> send to Felipe -> Felipe translates to dev tasks -> Alefita implements
Pay4Brain (Tech Production)
- Who: Technology company, app development, store management
- Role: Built the app, managed store submissions, handled DevOps
- Decision power: Technical architecture was Alefita's alone. Store submissions were Victor's. Felipe managed scope and client interface
- Key individuals: Alef Oliveira, Felipe Almeida, Victor Hugo Costa (detailed in Section 2)
- Dynamic: Pay4Brain bore all the technical risk. The store review delays, the Apple rejection saga, the need to create a new EU developer account -- all fell on Pay4Brain's shoulders
The Money Flow
BILLY BOY (brand budget)
|
v
Innocean Berlin (creative fee, 15-20% margin typical)
|
v
Pay4Brain (development fee)
|
+-> Alef Oliveira (contractor)
+-> Victor Hugo Costa (DevOps, store management)
The payment tensions surfaced explicitly: on Sep 30, Alefita asked "to sem almoço galera, quando cai o pgto?" (I'm without lunch folks, when does payment drop?). Victor replied: "Tbm nao recebi" (I haven't received either). Felipe: "Estamos todos. Vao pagar ate sexta" (We're all [waiting]. They'll pay by Friday). The delayed payment was a recurring stressor.
Who Had Veto Power Over Technical Decisions
| Decision Area | Authority | Notes |
|---|---|---|
| Architecture & code | Alefita (sole) | No one else touched the codebase |
| Scope cuts | Felipe (final) | "Nada a mais" was his iron rule |
| Design | Maso Heck / Sebastian (Innocean proposal) -> Mikael and Alefita (implementation) | Maso supplied PSD materials; Mikael prepared Figma support and contributed to implementation; Alefita made final technical calls |
| Store submissions | Victor | Felipe approved what went in |
| Feature removal (NFC, etc.) | Client demanded -> Felipe agreed -> Alefita executed | The NFC saga: client wanted Apple Pay disabled -> Felipe said remove NFC -> Alefita complied |
| Text/metadata changes | Billy Boy/Innocean (proposal) -> Felipe (approval) -> Alefita (execution) | Including the final "no condom/sex references" nuclear option |
2. Core Team Profiles
Alef Oliveira (Alefita)
Role: Sole developer, app architecture, all technical implementation
Work style:
- Worked until 2-3am during crunch periods. The Aug 12 message at 02:15 AM delivered version 2.17.0 with a detailed status report. The Aug 19 message at 01:27 AM reported three missing animations while generating a new build
- Self-deployed OpenReplay for session replay debugging without telling anyone. Aug 15: "Eu adicionei algo em segredo na versao de ontem. Temos session replay habilitado desde a ultima versao" (I added something in secret in yesterday's version. We have session replay enabled since the last version)
- Tested with 4 Androids + 2 iPhones + Mac M1 simultaneously. Aug 18: "to com 3 iphones aqui, 2 fisicos e o mac m1, dai ja vou gravar o video pra apple tbm"
- Deployed the full native-to-Expo rewrite in 15 days before the deadline
Communication style:
- "to tranquilo" during crises. Aug 15, when Android-Android was completely broken: "Mas n me assusta esses erros que eles reportaram, to tranquilassa" (Don't scare me with these errors they reported, I'm super calm)
- Used humor under pressure. When the testers tested the wrong version: "Passei um bom tempo apanhando ate perceber que eles testaram o Android na versao errada kkkkkkkkkkk"
- Self-corrected publicly: "perai" (hold on), "ss" (yeah), acknowledged mistakes immediately
- Technical vocabulary switch: shifted between Portuguese casual and precise technical English depending on context
- The Aug 22 meltdown was the exception: "MANOOOOOOOOOOOOOO ELES NAO ABRIRAM A PORRA DO MENU DE OPOSOES FELIPE" -- followed by a detailed technical explanation of why the testers were wrong
Technical range:
- BLE mesh networking (GATT servers, packet protocols, server election)
- Skia Canvas rendering (custom shader pipelines)
- Generator-based animation worklet engine
- Native modules (ble-manager, iOS/Android bridging)
- i18n (English, German, Portuguese)
- Store submissions (App Store, Google Play, TestFlight, AppCenter)
- Session replay (OpenReplay self-hosted)
- Expo -> bare React Native migration
Key quotes:
- "vai dar bom, n vou deixar nada visual faltando" (It'll work out, I won't leave any visual gaps)
- "EU SOU GENIAL CARA" (I'm a genius, man) -- after solving the iOS/Android server election problem
- "A PORRA DA CAMPANHA E SOBRE CONSENSO MANOOOOO" (THE CAMPAIGN IS ABOUT CONSENSUSSS) -- when defending the alarm-on-solo-disconnect feature
- "to contigo no time da transparencia" (I'm on your transparency team) -- to Felipe, establishing mutual trust
Relationship to Felipe: Professional trust. Felipe protected her from client pressure, took blame publicly ("Eu disse pra eles que eu fiquei doente nao vc" -- I told them I was sick, not you), and translated between German directness and Brazilian dev culture.
Felipe Almeida
Role: CEO Pay4Brain, project lead, client interface, scope gatekeeper
Work style:
- Early morning check-ins, often at 5:30-6:30 AM Brazil time (corresponding to afternoon in Berlin). Aug 14: "Bom dia / Nao subiu versao / Tudo bem ai?" at 05:35
- Managed client expectations ruthlessly. Drew hard scope lines: "Lembrando o que combinamos -- vamos fazer somente o que eles reclamarem. Nada a mais." (Remembering what we agreed -- we'll only do what they complain about. Nothing more.)
- Covered for team with client. Aug 16, when he couldn't attend the design call: "Os problemas de Android de ontem falei que foi mole do time de devops na hora do merge" (Yesterday's Android problems I said it was a devops team slip during merge). And: "O time ta virado a dias, mas estamos focados" (The team has been working around the days, but we're focused)
- Made go/no-go calls under pressure. When Apple kept rejecting: "Calma / Temos que esperar eles responderem"
- Told the client he was sick to buy time: "Eu disse pra eles que eu fiquei doente nao vc entao cuidado com isso" (I told them I was sick, not you, so be careful about this)
Communication style:
- Direct but caring. "Vai dormir" (Go to sleep) when Alefita was overworking at 8am after a crash report
- Used "Rs" (laughing) to soften pressure messages
- Managed emotional temperature: when Alefita was upset after the Aug 22 call: "Calma / Entendo que vc ta irritada / Mas a gente precisa relaxar e pensar de cabeça fria" (Calm / I understand you're upset / But we need to relax and think clearly)
- Balanced urgency with empathy: "Sei que ta cansada / Eu tb to puto / Com eles / Mas nao adianta deixar isso abater a gente agora" (I know you're tired / I'm also pissed / At them / But it doesn't help to let this weigh on us now)
Strategic decisions:
- "Nada a mais" -- the scope line that saved the project from infinite iteration
- Drew boundaries on what the team would and wouldn't do
- Made go/no-go calls on releases
- Managed the Apple rejection saga from the business side
- Created a new EU developer account in Portugal to bypass Apple's blocks
- Negotiated payment terms with the client
- Told Alefita and Victor when to stop and rest
Key quotes:
- "Lembrando o que combinamos -- vamos fazer somente o que eles reclamarem. Nada a mais."
- "Cliente e SEMPRE assim" (Clients are ALWAYS like this)
- "Vai dormir / Vemos isso na sequencia" (Go to sleep / We'll see this next)
- "Cuidado com o tom / A gente ta certo e ta puto / Mas eles tem que achar que nao estamos" (Watch the tone / We're right and we're pissed / But they need to think we're not)
- "Bora tomar uma e relaxar / E oremos" (Let's have a drink and relax / And pray)
Relationship to Alefita: Trust-based. Never micromanaged technical decisions. Protected her from client pressure. Acknowledged her expertise: "nao tenho a menor duvida" (I have no doubt) when she declared a version final. The trust was reciprocal -- Alefita told him "ate hoje tu nao me cobrou nada fora da realidade e do combinado" (until today you haven't charged me for anything outside reality and what was agreed).
Victor Hugo Costa
Role: DevOps, release management, store submissions (App Store, Google Play, TestFlight, AppCenter)
Work style:
- Responsive and efficient. Responses were typically one-word: "Feito" (Done), "Pronto" (Ready), "Reenviado" (Resent)
- Handled ALL Apple/Google review processes: Info.plist adjustments, entitlement management, provisioning profiles, review thread responses
- Fought Apple's review bureaucracy with persistence: "Abri duas [apelacoes] / Ja enviei video mostrando que o app funciona sem internet" (I opened two appeals / Already sent video showing the app works without internet)
- Worked 30-hour stretches: "30 horas trabalhando direto, tive que dormir" (30 hours straight, had to sleep)
Communication style:
- Brief, technical, solution-oriented
- When problems arose, immediately proposed fixes rather than analyzing blame
- The review thread with Apple was his domain: "Seja o que Deus quiser" (God's will be done) after submitting a new version
Key contributions:
- Handled ALL Apple/Google review processes across multiple submission attempts
- Fixed Info.plist entitlements for NFC, external accessories, Bluetooth permissions
- Managed AppCenter, Google Play internal test, TestFlight distribution
- Created the EU developer account infrastructure with Felipe
- Opened Apple support tickets and review appeals
- Set up the OpenReplay infrastructure (openreplay.pay4brain.com.br)
Key quotes:
- "Feito" / "Pronto" / "Solved" -- the rhythm of a DevOps engineer in the flow
- "O app esta dentro do q pediram" (The app is within what they asked for) -- defending the team to Apple
- "Orems" (Let's pray) -- after submitting to Apple review
Relationship to team: Support role, executed what was needed without drama. The quiet backbone of the operation.
Mikael (Mika, Mikaelzinho)
Role: Technical collaborator and Alefita's partner
Work style:
- Contributed across code, architecture, testing, translations, documentation, and operational support
- Created Figma materials to support the implementation
- Appears in the repository history as Mikael /
mika-marcondes; the code repository records 46 contributions under Mikael identities
Identity boundary: In CAMDOM documentation, Mika, Mikael, and Mikaelzinho refer to Mikael, Alefita's husband and collaborator. They do not refer to Maso Heck.
See also: mikael-partner for Mikael's persistent people record.
Contributions:
- Code and architecture collaboration alongside Alefita's authorship and technical leadership
- Testing and debugging support across device and platform combinations
- German translations and other localization work
- Figma preparation, documentation, and project support
Relationship to Alefita: Husband, best friend, and trusted collaborator across the project. Alefita retained final technical authority while Mikael contributed throughout the development and delivery process.
Maso Heck
Role: Designer at Innocean Berlin
CAMDOM involvement: Supplied Photoshop/PSD materials through the shared project workflow. Maso Heck did not touch the CAMDOM codebase. References to "Mika" in this wiki are not references to Maso Heck.
Sebastian Pattis
Role: Creative direction at Innocean Berlin
Key dynamic: After the Aug 16 design call with Innocean, Alefita reported: "pra ele nem mexia mais em layout" (he wouldn't touch layout anymore). This suggests Sebastian recognized that the technical implementation had diverged from the original design intent, and deferred to Alefita's pragmatic approach rather than insisting on pixel-perfect adherence to the original Figma.
Relationship to Alefita: Professional respect across the agency-developer divide. He participated in design reviews but gave Alefita creative freedom on technical implementation.
Alexander Struemann
Role: Brand Manager, Billy Boy / Newell Co
Email: [REDACTED]
Involvement:
- Part of the client-side testing team
- One of the final testers for internal builds
- Registered as a tester on both Android (Google Play internal test) and iOS (TestFlight)
- Generated bug reports through the Innocean feedback pipeline
Jannick Paulick
Role: Assistant Manager, Billy Boy
Email: [REDACTED]
Involvement:
- Part of the client-side testing team
- Registered alongside Alexander Struemann as a tester
- Received test communications (which led to an accidental leak when Felipe accidentally included them in Apple review communications: "Tira os e-mails deles dos testes / Eles tao recebendo as comunicacoes")
Lisa
Role: Tester at Innocean
Key incident: On Aug 14, Lisa was absent when critical Android-to-Android testing was needed. Felipe forwarded: "LISA nao veio hoje e estamos testando apenas iosXiox e androidXios" (Lisa didn't come today and we're testing only iOSxiOS and AndroidxiOS). Her absence created a gap in Android testing that cascaded into the Aug 15 crisis when Android-Android was found to be completely broken.
3. Communication Architecture
Who Talked to Whom, About What, and How Often
Alefita <-> Felipe: Daily, multiple times per day
- Technical status updates ("to trabalhando na parte da reconexao")
- Version reports ("2.17.0 - Android e Ios / Menu 100% em todos os tamanhos de telas")
- Crisis management ("O app nao funciona / Crash no ios")
- Emotional support ("Vai dormir", "Respira", "Cliente e SEMPRE assim")
- Scope decisions ("Lembrando o que combinamos -- nada a mais")
- Client translation ("Eles sao gringos / sao retos no texto / fica estranho mesmo")
Felipe <-> Client (Billy Boy / Innocean): Filtered, managed
- Translated technical jargon to business language
- Managed expectations on timelines
- Covered for team absences and delays
- Created and maintained the SharePoint feedback decks
- Had the hard conversations about scope, payments, and Apple delays
- Key channel: Microsoft Teams calls, SharePoint PPTs with embedded videos
Alefita <-> Victor: Build coordination
- Version uploads ("to subindo a versao")
- Store submissions ("sobe na faixa interna de testes da playstore e no appcenter please")
- Provisioning profiles and entitlements
- Pipe/CI fixes
- Apple review thread management
Alefita <-> Mikael: Technical collaboration
- Code and architecture collaboration
- Testing and debugging
- Figma preparation and documentation
- German language text adjustments and project support
Alefita <-> Maso Heck / Sebastian: Innocean design input
- PSD materials, design feedback, and creative review
Felipe <-> Victor: Infrastructure & store management
- AppCenter distribution
- Apple review appeals
- Store listing updates (screenshots, descriptions, metadata)
- EU developer account setup
Communication Channels
| Channel | Used For | Frequency |
|---|---|---|
| WhatsApp group (Camdom App) | Daily coordination, version releases, bug reports | Continuous |
| WhatsApp (Felipe <-> Alefita private) | Sensitive scope decisions, emotional support, strategy | Daily |
| Microsoft Teams | Video calls with Innocean/Billy Boy | Weekly during crunch |
| SharePoint | Feedback decks with embedded video evidence | Per testing cycle |
| App Store Connect | Review thread communication with Apple | As needed |
| Store invitations, formal communications | As needed |
4. Power Dynamics & Decision Authority
The Scope War
The most important dynamic in CAMDOM was the tension between Alefita's perfectionism and Felipe's scope discipline. This played out repeatedly:
Aug 14: Alefita discovered the iPhone keyboard UX was "HORRIVEL, UM NOJO" (horrible, disgusting) and wanted to fix it. Felipe: "foca em fechar os itens / Vamos olhar esse aqui ainda com calma / Melhor" (focus on closing items / We'll look at this calmly later / Better)
Aug 16: Alefita wanted to attend the design call with ideas for animation improvements. Felipe preemptively briefed her: "Nao deixa complicar nada, mantem simples" (Don't let anything get complicated, keep it simple)
Aug 20: Alefita was furious that testers tested the wrong version. Felipe's response: "Respira / Entendo que vc ta irritada / Mas a gente precisa relaxar e pensar de cabeça fria" (Breathe / I understand you're upset / But we need to relax and think clearly)
Sep 2: The definitive scope line: "Lembrando o que combinamos -- vamos fazer somente o que eles reclamarem. Nada a mais. Ok?" (Remembering what we agreed -- we'll only do what they complain about. Nothing more. Ok?)
The NFC Decision Chain
A microcosm of the power dynamics:
- Billy Boy wanted Apple Pay disabled during app usage (NFC was triggering Apple Pay popups)
- Felipe communicated the requirement to the team
- Alefita spent days researching PassKit entitlements, Apple Pay suppression, NFC background modes
- Victor investigated provisioning profile entitlements
- Alefita concluded there was no programmatic way to disable NFC on iOS
- Felipe agreed to remove NFC entirely: "Melhor tirar"
- Alefita removed NFC, rebuilt, tested
- Apple still complained about NFC in the Info.plist (external accessory protocol was still referenced)
- Victor fixed the Info.plist
- Apple continued complaining about NFC even after it was fully removed
The NFC saga took from Aug 18 to Sep 14 and never fully resolved through Apple's review process.
The Apple Rejection Powerlessness
The Apple Store review saga revealed a power dynamic that affected everyone equally: no one had power over Apple.
- Felipe couldn't accelerate reviews through client pressure
- Victor couldn't escalate through Apple's support channels
- Alefita couldn't fix what Apple wouldn't explain
- The client couldn't accept that their launch date meant nothing to Apple's review queue
Victor's summary: "Apple sempre foi imprevisivel, cliente deveria saber que la pode levar semanas" (Apple has always been unpredictable, the client should know it can take weeks there)
5. The Trust Model
How Trust Was Built and Maintained
Felipe never micromanaged technical decisions. He asked "Qual que e?" (What version is it?) and tested what was delivered. He never asked Alefita to justify architectural choices, explain code decisions, or document implementation details. When she said "pra mim e a versao final" (for me it's the final version), he responded: "Boa / Só bora" (Good / Let's go).
Alefita never hid problems. She reported bugs immediately: "eu acho que quebrei as profiles do iOS dnv" (I think I broke the iOS profiles again). She escalated when needed: "to gerando uma versao nova" (I'm generating a new version). She admitted uncertainty: "n sei o que e felipe, os cara n aperta a porra do botao de report crash" (I don't know what it is Felipe, they don't press the damn crash report button).
Felipe covered for Alefita with the client. This was perhaps the most critical trust behavior. On Aug 16, when he couldn't attend the design call: "Eu disse pra eles que eu fiquei doente nao vc" (I told them I was sick, not you). He took the blame for Android issues: "Os problemas de Android de ontem falei que foi mole do time de devops na hora do merge" (Yesterday's Android problems I said it was a devops team slip during merge). He presented Alefita's timeline estimates as team estimates, absorbing the risk of delays.
Alefita secretly deployed OpenReplay. This was trust expressed through autonomy. She installed session replay without asking permission: "Eu adicionei algo em segredo na versao de ontem" (I added something in secret in yesterday's version). Felipe's response was immediate validation: "Boaaaa / Melhor coisa" (Nice / Best thing). No permission-seeking, no permission-granting -- just mutual trust enabling autonomous action.
The transparency contract. When Felipe asked about missing a day's upload, Alefita responded with what became the trust thesis: "ate hoje tu nao me cobrou nada fora da realidade e do combinado entao to contigo no time da transparencia, e tambem nao e como se eu tivesse dando migue pra nao entregar hehe" (until today you haven't charged me for anything outside reality and what was agreed so I'm on your transparency team, and it's also not like I'm making excuses not to deliver hehe).
Trust Under Pressure
The trust model was tested most during the Apple rejection saga (Sep-Oct 2024):
- Felipe absorbed the client's anger: "Ontem bati boca feio com o cliente" (Yesterday I had a big fight with the client)
- Victor kept submitting appeals: "Já abri tres pedidos de revisao rapida / Uns 5 de apelacao" (Already opened three expedited review requests / About 5 appeals)
- Alefita stripped the app to its barest form: removed ExpoUpdates, removed APM, removed code push, regenerated native projects
- All three aligned on the strategy without explicit coordination: try everything, exhaust all options, then pivot to AltStore
6. Pressure Points
Aug 14: Android x Android Completely Broken
Context: The testers discovered that Android-to-Android connections were completely non-functional. This was the first major crisis.
Felipe's message: "O app nao funciona / Crash no ios / Mensagem do cliente / Olha isso quando acordar / Por favor?" (The app doesn't work / iOS crash / Client message / Look at this when you wake up / Please?)
How each person handled it:
- Felipe: Delivered the bad news with urgency but without blame. Added: "Cliente ta surtado la por conta dessas ondas e vindas / Agencia / Sabe como e" (Client is freaking out because of the back and forth / Agency / You know how it is)
- Alefita: Went to investigate immediately: "focamos bem no iOS pra entrega do layout novo" (we focused a lot on iOS for the new layout delivery). The Android issue was collateral from the iOS focus.
- Victor: Fixed provisioning profiles that Alefita had broken during Mac migration: "Pronto / solved"
Aug 19: CoreNFC Crash
Context: A release build crashed on entry due to CoreNFC framework initialization. Felipe sent the client's panicked message at 5:49 AM.
Felipe's escalation: "Cliente ta surtado la por conta dessas ondas e vindas / Foca na conexao e na estabilidade / ESQUECE o resto / Por favor / Precisamos de uma jornada que funciona 100%" (Client is freaking out / Focus on connection and stability / FORGET THE REST / Please / We need a journey that works 100%)
How each person handled it:
- Felipe: Drew the clearest priority line of the project. "ESQUECE o resto" was the turning point -- it established connection stability as the only acceptable metric
- Alefita: Identified the crash cause within minutes: "foi o CoreNFC, rodei em release aqui no meu celular tinha rodado liso" (it was CoreNFC, ran in release on my phone and it had run smooth). Fixed and rebuilt immediately
- Victor: Remained the calm infrastructure layer, ready to push the new build
Aug 20: "Perdemos um outro projeto com eles"
Context: Felipe dropped the bomb that the Apple drama was already costing Pay4Brain business beyond CAMDOM.
Felipe's message: "Acabei de saber que perdemos um outro projeto com eles / Precisamos entrar numa sala e entender com calma o que da pra fazer" (I just found out we lost another project with them / We need to get in a room and calmly understand what we can do)
This was the lowest point. The team had a 9am call to regroup. By the end of the call, Alefita had solved the iOS/Android server election problem ("EU SOU GENIAL CARA") and declared: "todas as features 100% implementadas / e de se comemorar" (all features 100% implemented / worth celebrating)
Sep 13: Apple Rejected Again After 3 Weeks of Review
Context: After weeks of review, Apple rejected with the same "downloading code" message despite the app having no code-push, no ExpoUpdates, and no APM.
Felipe's reaction: "Nao entendi nada / Recusaram sem escrever nada / Hauhauajaua" (I didn't understand anything / They rejected without writing anything / hahaha)
How each person handled it:
- Felipe: Maintained gallows humor: "Apple sendo Apple" (Apple being Apple). Escalated to client to set expectations
- Victor: Immediately opened support tickets and requested a call with the review team
- Alefita: Produced a technical defense document: "The application does not download anything from internet... The application does not download, compile or execute any code or script"
Oct 21: The Final Apple Verdict
Context: Apple called Felipe directly and delivered the nuclear verdict: any mention of condom, sex, or the product's actual purpose would result in permanent rejection.
Felipe's message: "Apple me ligou / Nao vao aprovar de jeito algum / qualquer mencao a preservativo, sexo camisinha e etc... no app ou no nosso site / nao vai passar / falou para revisar TUDO e reenviar um do zero" (Apple called me / They won't approve in any way / any mention of condom, sex, protection etc... in the app or our site / won't pass / told us to review EVERYTHING and resend from scratch)
Resolution: The team pivoted to creating a new EU developer account in Portugal (Felipe's personal EU residency), stripping all sexual references, and publishing through AltStore as an alternative marketplace. The app that won 29 international awards could not be published on the platform it was built for.
7. Language & Cultural Dynamics
The project operated across three languages and two cultural frameworks:
Portuguese (team internal): Casual, direct, emoji-heavy. "Pqp mano" (damn man), "kkkkkk" (laughter), stickers used liberally. Technical vocabulary was a mix of Portuguese and English ("buildando", "subindo", "pipe")
English (store submissions, Apple review): Formal, precise. Alefita's defense document to Apple was a masterclass in technical writing under pressure
German (client feedback): Clinical, direct. The PowerPoint decks from Innocean used German-style directness that Felipe had to translate for the team: "Eles sao gringos / sao retos no texto / fica estranho mesmo" (They're foreign / straightforward in the text / it does look strange)
The cultural gap was most visible when the German testers reported issues. Felipe explained to Alefita: "Eles querem tirar" (They want to remove it) regarding the NFC issue -- translating the client's absolute demand into actionable technical work without the emotional context that would have frustrated Alefita further.
8. The Team That Won 29 Awards
By the numbers:
| Person | Role | Duration | Key Contribution |
|---|---|---|---|
| Alef Oliveira | Solo developer | ~6 months | 429 commits, entire application |
| Felipe Almeida | CEO / project lead | ~6 months | Client management, scope control, crisis negotiation |
| Victor Hugo Costa | DevOps / store management | ~4 months | All store submissions, Apple review battles |
| Mikael (Mika, Mikaelzinho) | Technical collaborator | Project duration | Code, architecture, testing, translations, documentation, and support |
| Maso Heck | Innocean Berlin designer | Design phase | Photoshop/PSD materials |
| Sebastian Pattis | Creative direction | ~1 month | Design review, creative approval |
The irony is that a project celebrating digital consent was itself an exercise in constant negotiation -- between developer and client, between design and implementation, between what was technically possible and what Apple would allow, between perfectionism and shipping.
Cross-References
| Page | Description |
|---|---|
| camdom | Project overview, technical summary, awards |
| camdom-code-quality | Code standards, architecture decisions |
| camdom-design-system | Visual design system, animations, sounds |
| camdom-stack-migrations | Expo to bare React Native migration |
pessoas/index.md | People and connections catalog |
This page documents the human dynamics behind CAMDOM's technical achievements. The transcripts from which this was extracted span May 22 to December 12, 2024 -- 204 days of a project that should have taken 90.