war mode / Ruvo
Cross-border · Stablecoin Neobank · BR
growth diagnosis · first report

Ruvo's $20M goal is slope-bound — the right engine, too small to extrapolate

company
Ruvo · cross-border neobank, Brazil
stage
Early · stablecoin / Pix money movement
north star
Total Two-Way Settled Volume
data reviewed
Production ledger (Redshift) · RudderStack events · their growth model
prepared by
Warmode
status
Design-partner diagnosis · May 30, 2026
the finding

Ruvo bet on payroll, and the bet is right. Volume from remote-dev payroll is compounding at ~24%/month while the whole business sits flat near $1.92M/mo. The engine works.

But the goal you confirmed — $20M two-way per month by December, a 10× — needs ~40%/month for seven straight months. No amount of optimizing today's book gets there: the most aggressive combination of every current lever tops out at ~$11.6M (58% of goal). $20M is a step-change: it needs a new high-volume channel added on top of the engine, not just a faster version of it. (EOR = Employer of Record, e.g. Deel or Remote — the platforms foreign companies use to pay workers abroad.)

§00 the recon report

What this is

This is the recon report — the first pass of a system Warmode runs continuously. We re-rooted your growth metric on the real production ledger, audited what you can and can't measure, modeled the business as a tree, and found where the leverage is. Future passes update the same model on live data instead of restarting from scratch.

  1. Re-rooted the metric. We rebuilt the north star on the real production ledger — two-way settled volume (inflows + outflows) — so every number traces to money that actually moved.
  2. Audited tracking coverage. We mapped what's instrumented versus what's blind, so you know which findings are measured and which are inferred.
  3. Built the growth model as a tree. We decomposed the north star into its drivers, so a change anywhere shows up in the total.
  4. Diagnosed the leverage. We ranked the drivers by how much they can move the goal, and sized concrete paths to get there.
What to expect: this is production-grounded (built on real ledger data), directional (sized to prioritize, not to forecast), and built to tell you where to push first — not a promise of a number on a date.
§01 snapshot

Ruvo moves money for Brazilians — USD, BRL and stablecoin over Pix, off-ramp, crypto and card. The ledger is healthy and the core thesis holds: payroll devs are the engine, and they're growing. Most of them invoice their foreign employers through a pejota — a Brazilian sole-proprietor company (a CNPJ) that remote developers register to bill abroad.

The problem is not the engine. It's the slope a 10× goal demands, made harder by two things: an activation funnel where only 17% of signups ever transact, and volume that leans on a handful of large accounts ("whales").

north star · May 2026
$1.92M
two-way settled volume / mo · the base
goal · Dec 2026
$20M
10× two-way · requires ~+40%/mo for 7 months
reachable ceiling
$11.6M
aggressive composite of all current levers · 58% of goal
§02 north star & trajectory

Re-rooted on Two-Way Settled Volume

The north star is total two-way settled volume — every dollar that successfully moves in or out (inflows + outflows), converted to USD. We picked it because it reproduces the number Ruvo already reports and matches what Ruvo's own model targets. The reported "$2M for May" reconciles to $1.92M on this definition.

The chart below is the core of the diagnosis. The solid line is the path required to hit $20M by December (≈+40%/mo). The dashed line is the current trend (≈+2.4%/mo). The gap between them is the whole problem.

required · +40%/mo to $20Mcurrent trend · +2.4%/mo
ns
north star
two-way settled volume / mo
$1.92M
▲ ~2.4% MoM
May 2026 root
alt net revenue — parked (take-rate × volume) alt active accounts — depth
two-way settled volume · goal $20M/mo by Dec 31, 2026 (10×)
required
~40%/mo
actual (6mo)
2.4%/mo
gap
−37.6pp
Projection — at the current aggregate +2.4%/mo Ruvo reaches ≈ $2.3M by year-end: ~11% of goal. Even the provable payroll engine at +24%/mo, applied to the whole book, lands ≈ $8.7M (43%).
§03 your growth model

Volume = active accounts × volume per account

We broke the north star into a tree of 25 drivers. Each driver is tagged by funnel stage and by how well we can see it (instrumented / derivable / blind), so coverage gaps are visible instead of hidden. The spine reads simply: volume = active accounts × volume per account; active = newly-activated + retained; activation = ready-state × first value. The full interactive map is linked below.

The chart shows the three real segments by monthly two-way volume. Payroll (accent line) is the one that's climbing; business and individual are flat-to-noisy. Note the Mar→Apr "business" jump — that was pejota devs miscoded as businesses, not real multi-customer companies (which are only ~2% of accounts).

payrollbusinessindividual
2,100 signups 355 ever transact 17% activation  ·  payroll ~41% + individual ~31% + business ~27% of May volume Real multi-customer businesses are ~2% of accounts; most "business" (CNPJ) accounts are pejota payroll devs. Blind / penciled nodes (awareness, channel-mix) are marked in the live map.
§04 where the leverage is

The single biggest constraint is the activation funnel: of every 2,100 signups, only 355 ever transact. Each step roughly halves the cohort, so there's no one villain — but it caps how fast any segment can grow.

signup → ready-state → wallet created → ever transacted · 17% reach the end
01Payroll is the engine — and it compounds. It's just too small to extrapolate to $20M.
activation/revenueleverage 0.26conf high
Payroll routed through EORs (Remote, Brex/Column, Justworks, Wise, Payoneer) grew from ~$100k to $296k/mo of inflows, Dec→May — about +24%/mo, close to Ruvo's own +35% model assumption. It's the largest segment we can classify. But here's the catch: even if that +24% holds for the whole book, it reaches only ~$8.7M of the $20M goal by December. The engine is right; it has to be pushed harder, and the way to do that is EOR partnerships rather than chasing one dev at a time.
data · payroll inbound Dec $100k → May $296k (+24%/mo); ~180 devs onboarded; classified by employer counterparty (100% of inflows carry a name) (measured).
02Activation: retail has a rate leak, pejota has a speed tax
activationleverage 0.21 / 0.17conf high
Only 17% of signups ever transact, and the leak splits two ways. Individuals convert at 14.5% — a rate problem; 85% never move a dollar. Pejota devs convert at 30.6% but take 23 days to first transaction versus 3 for individuals — a speed problem. That 23-day delay is a KYB (know-your-business verification) tax on the exact cohort that drives volume.
data · activation 355/2,100 = 17%; INDIVIDUAL 14.5% @ p50 3d; BUSINESS 30.6% @ p50 23d / p90 78d (measured). benchmark · neobank activation standard ~32%; <25% signals flawed onboarding — Ruvo's 17% sits below that line (industry · Prooflytics/ProductGrowth 2025).
03Volume rides on a handful of whales
revenue / riskleverage 0.17 / 0.12conf high
All-time, the top 25 accounts — just 7% of transactors — are 59% of volume; the top 10 are 43%. Inside the catch-all "other" segment, 6 high-net-worth-style accounts hold $1.2M on their own. That makes monthly volume lumpy and whale retention close to existential. It also points the path to $20M: more top-tier and enterprise accounts, not broad retail growth.
data · top5 27% · top10 43% · top25 59% of $9.35M all-time; 6 HNW accts = $1.2M (measured).
§05 visibility gaps — "measure" track
segments live in a spreadsheetno signal
GTM segments (payroll / student / business / HNW) aren't on the account — they live in a manual tracker that's already stale and miscoded (CNPJ ≠ business). Nobody can answer "payroll volume this week" from the data.
↳ account.segment + employer_id at onboarding; DB-native classifier, refreshed weekly
tracking is ~10 days oldpartial
Behavioral events went live ~May 21, 2026 — production has ~50 weeks of history, tracking ~10 days. All trend work runs on production; events only decorate the recent window.
↳ backfill key funnel events; wire campaign/UTM params (acquisition channel is fully blind)
students & HNW unmeasuredno signal
Two of the model's four segments have no signal in the data. HNW is derivable by threshold; students have no proxy at all. Silent-value (notifications) is fine — 100% notified, p50 latency 0 — so that brief-hypothesized lever is small.
↳ a segment attribute at signup; confirm student/HNW definitions with GTM
payout event linkageunverified
Offramp/payout reconciliation (anchor 2) couldn't confirm per-account event match — the ledger FK to payout rows is sparse. Volume is unaffected (taken from the ledger), but the event is unverified.
↳ confirm payout status vocab; emit a clean payout-completed event
§06 what would it take?

Three honest paths to $20M two-way

To make the goal concrete, we back-calculated it from the funnel. $20M two-way is about $10M of one-way user-chain volume to drive. We work that backward through the rates we measured and the ticket sizes we assume. Coefficients used: avg $7k/mo per payroll dev (A), $15k/mo per real business (A), 17% activation (M), install→signup 35% (A), visit→install 4% (A). The punchline on each path is the net new active accounts you'd need to add every week for 30 weeks.

Payroll-only
~+44/wknet active devs, 30 weeks
~1,429 active devs needed ($10M / $7k) vs ~110 today ~+44 net active devs/week for 30 weeks at 17% activation ≈ 8,400 signups at 35% install→signup ≈ 24,000 installs at 4% visit→install ≈ 600,000 site visits.
activation 17% = measured (M) · avg-ticket & install/visit rates = assumed (A)
Business-only
~+22/wknet active businesses, 30 weeks
~667 active businesses needed ($10M / $15k) ~+22 net/week for 30 weeks at 17% ≈ 3,924 signups at 35% ≈ 11,200 installs at 4% ≈ 280,000 site visits.
same funnel rates; ticket $15k/business = assumed (A)
Blended · 60% payroll / 40% business
~+26/wkcombined net active accts
payroll carries $6M ≈ 857 devs, business carries $4M ≈ 267 businesses together ≈ 6,612 signups at 35% ≈ 18,900 installs at 4% ≈ 472,000 site visits.
sum of the two chains at the same rates · all rates/tickets assumed except activation (M)

Now the reality check. The book grows at +2.4%/mo today; the goal needs ~+40%/mo — roughly 16× the current rate, held for seven straight months. Even the proven payroll engine, growing at +24%/mo and applied to the entire book, lands only $8.7M (43%). The most aggressive composite of every current lever ceilings at $11.6M (58%). The conclusion is not that $20M is unachievable — it's that it requires a discontinuity: a new high-volume channel (enterprise treasury / EOR-at-scale deals) layered on top of the engine. These numbers show exactly how big that channel has to be.

§07 the bet

Paths to $20M, honestly sized

do-nothing · +2.4%/mo
$2.3M
11% of goal by Dec
payroll engine · +24%/mo
$8.7M
43% — engine alone, sustained
aggressive composite
$11.6M
58% — payroll 40% + 5 whales + retail→35%
projected Dec two-way volume by scenario, against the $20M target

The model says it plainly: the right engine is in place and compounding, but no combination of optimizing it reaches $20M. Push payroll via EORs, unblock it by compressing pejota KYB, protect the whales — and open an enterprise channel for the step-change. If that channel doesn't materialize, the honest call is to re-time the 10×.

§08 landscape & risk

A live regulatory threat and a real wedge

⚠ BCB Resolution 561 — stablecoin settlement banOct 1, 2026
Brazil's central bank (Resolution 561, published Apr 30, 2026) bars eFX providers from settling cross-border payments with stablecoins/crypto — settlement must run through traditional FX or non-resident BRL accounts. This targets Ruvo's stablecoin settlement rail and lands two months before the December $20M goal. A licensed-VASP exemption exists (Resolution 521). Sources: CoinDesk, Ledger Insights, The Paypers, Sumsub (May 2026).
↳ legal review before any 10× scaling; pursue a VASP license/partnership or route settlement through authorized FX institutions, keeping stablecoins to internal liquidity. This is the single biggest near-term existential risk — sequence it ahead of growth spend.

Competitive read. The "receive USD cheaply" step is a race to zero — Husky (Nomad-owned) charges ≤1% at commercial rate, Wise is mid-market, Nubank just removed FX spread on its global account, and Deel already pays Brazilian contractors via Pix at near-zero provider fee. Ruvo cannot win on conversion price. The deeper threat is EOR disintermediation: the same EORs that pay devs into Ruvo (Deel, Remote) can pay out locally and absorb the value.

The wedge. Ruvo's data points away from "move the wire" and toward "own the account + treasury" — the business/CNPJ cohort behaves like sticky, higher-margin treasury (larger, irregular balances), not one-shot salary conversion. The defensible position is the full account (Pix + USD + card + savings) for the cross-border dev/business who lives in both currencies — not the cheapest single transfer. Full analysis: findings/phase5/competitive.md (29 sources).

§09 product UX

The funding paths are where activation dies

The app's spending/holding surface is clean and on-message (named "payroll" on the US-bank add, free fast crypto-to-crypto, in-app pricing transparency). But the funding paths — the first-deposit moment — are exactly where the 17% activation and 23-day ready-state lag live. This isn't abstract: our own walk-through hit both leaks first-hand.

activation crypto funding
Assumes crypto expertise. The add-via-crypto screen requires the user to already know "USDT on Polygon" — a sophisticated test user did it wrong; a wrong-network send can lose funds. No explainer, no guardrail, no "new to crypto?" path on the single most important activation step.
↳ network/asset explainer + wrong-network detection; default the common path; "start small" first-deposit nudge.
activation US-bank (receive USD)
Setup is slow and opaque. Standing up the US banking details took weeks in our walk-through — the lived version of the 23-day ready-state tax. A dev who joined to get paid this month stalls here.
↳ set time expectations up front; show progress/status during the wait; proactive comms; the KYB-parallelization experiment (§10).
acquisition marketing site
Diffuse headline + hidden pricing. ruvo.com leads with "You live between worlds" rather than the proven "get paid in USD" job; and unlike the app, the site hides pricing. Lead with the job-to-be-done; surface a rate example; wire UTM (channel is blind).
↳ a "first-run checklist" in-app (verify → add money → first send) would pull users through the 17% gate. Full walk-throughs: findings/phase5/mobile_ux.md + site_ux.md.
§10 action items

What to do, grouped by track

Three checklists — fix what you can't see, grow the engine, and the next experiments to run — followed by a dated two-week plan to start.

instrumentation & visibility
cross-cutAdd account.segment + employer_id at onboarding — end the spreadsheet guesswork.
activationEmit funnel events — KYC, wallet created, first-deposit, payout-completed.
acquisitionWire campaign / UTM params — acquisition channel is fully blind today.
awarenessStand up web + social analytics — no view of the top of the funnel.
cross-cutBackfill the segment classifier over production history.
growth
activationCompress pejota/CNPJ KYB time-to-first-transaction (23d → <7d).
acquisitionEOR partnerships (Remote / Brex / Justworks) to scale payroll intake.
retentionWhale retention program — top 25 accounts = 59% of volume.
revenueOpen an enterprise / treasury channel — the step-change to $20M.
next 3 experiments
activationParallelized KYB onboarding (CNPJ). Hypothesis: most of the 23d lag is queue, not regulation. Design: parallelize KYB steps for one cohort. Δ: CNPJ p50 23d→<7d, ~$150–200k/mo pulled forward. Readout: 2 weeks.
acquisitionEOR referral integration (one partner). Hypothesis: payroll grows via employers, not devs. Design: referral/integration with one EOR. Δ: payroll +24%→+35%/mo. Readout: 30 days.
activationInstrumented first-value moment. Hypothesis: a clear first-deposit moment lifts activation. Design: instrument + nudge the notification/first-value step. Δ: +activation off the 17% base. Readout: 3 weeks.

The 2-week plan

week 1 · ship + measure
cross-cutShip account.segment + employer_id capture at onboarding.
activationInstrument first-deposit + payout events.
activationMap the KYB step latencies — find what's parallelizable.
week 2 · test + open
activationLaunch the KYB parallelization test on a CNPJ cohort.
acquisitionOpen EOR partner conversations (start with Remote / Brex).
cross-cutStand up the weekly segment monitor — actual-vs-glide.
§11 assumptions & method

This diagnosis is built on the production ledger as source of truth; RudderStack events are a cross-check (only ~10 days deep). Segment classification is DB-native (by employer counterparty), validated against Ruvo's hand-labels. Numbers are directional, sized to prioritize — every figure is tagged measured / derived / assumed in the working files.

method · data: Redshift production (cacao) · RudderStack events · Ruvo's onboarding tracker & growth model. grain: two-way SUCCESS throughput, USD via daily BRL→USD; weekly & calendar-month series. window: ~50 weeks production history; tracking from May 21, 2026. assumed: scenario coefficients (activation uplift, whale adds, EOR acceleration) are conservative and stated in the scenario model. open: $20M goal confirmed two-way; student/HNW segment definitions pending GTM.
the shape of the problem
Ruvo has a slope problem, not an engine problem.
Payroll is the right engine and it's compounding ~24%/mo — but a 10× to $20M needs ~40%/mo, and nothing in the current mix gets there. Push payroll through EORs, compress the pejota KYB tax, protect the whales, and open an enterprise channel for the step-change — while standing up a segment monitor so this runs continuously instead of in a spreadsheet. That's the shift from one-shot audit to a model that compounds.
war mode · warmode.app · confidential · prepared for Ruvo · May 30, 2026