Building a Two-Sided Revenue Engine

How a subscription-only local services marketplace added relevance-safe sponsored placements and a second revenue stream.

The client

A leading marketplace in the German-speaking market (DACH) that connects households with vetted local professionals — electricians, plumbers, movers, cleaners, handymen, and renovation specialists. It’s the platform a homeowner opens when something breaks or a project starts, and the platform a small trade business relies on to keep its week booked.

By the numbers:

Dimension Scale
Connected professionals & trade businesses ~12,000–15,000
Bookable service offerings in the catalog 80,000+
Monthly consumer sessions ~2.5–3.5 million
Service categories × regional markets hundreds of distinct local “marketplaces”
Primary revenue model SaaS subscription + lead/booking software fees

Why the type of marketplace matters. A home-services marketplace is not an e-commerce marketplace. There’s no infinite shelf, no add-to-cart, no “buy box.” The unit of inventory is a professional’s availability in a specific postal code on a specific day. That single fact shaped every monetization decision — because you cannot promote an electrician in Munich to a homeowner in Hamburg without destroying the only thing the marketplace actually sells: local relevance.

The business challenge: a healthy business on a one-legged stool

The marketplace was thriving. Consumers trusted it, professionals depended on it, and subscription revenue was predictable. But predictable isn’t resilient — and almost all monetization flowed through a single pipe: the monthly subscription a pro paid to be listed and to use the platform’s booking and lead tools.

That created three strategic problems leadership felt but hadn’t yet quantified:

  1. Revenue per professional was capped by the subscription ceiling. A trade business taking 5 jobs a week paid the same as one taking 50. The platform was leaving enormous value on the table from its most successful partners — the ones who could most afford, and most wanted, to grow.

  2. The platform was invisible in its partners’ marketing budgets. Trade businesses were already buying Google Ads and Meta Ads to win local jobs — jobs the marketplace already had the demand for. The platform captured none of that spend.

  3. Growth was coupled to acquisition cost. More revenue meant more subscribed pros meant more consumer-acquisition spend to keep both sides balanced. The CFO’s question was blunt: “Can we grow revenue without growing our traffic bill?”

So management posed four questions:

  • Would partners actually pay for more visibility — or just say so in a survey?
  • Which advertising products would generate the most revenue per unit of engineering effort?
  • What would paid placements do to search quality, booking rates, and — most sensitively — consumer trust?
  • How do you introduce “ads” into a marketplace whose entire brand is built on neutral, trustworthy recommendations of vetted pros?

That last question is the one most monetization projects get wrong. It’s the one we built the entire engagement around.

Phase 1 — Discovery: following the money and the calendar

Who we talked to (and who we deliberately didn’t)

We ran structured working sessions with the people who actually understood where value and friction lived:

  • The executive team, to pin down the revenue mandate and the non-negotiables (“we will not become a pay-to-win directory”).
  • Product and search engineering, because in this business the ranking and matching algorithm is the product, and any monetization that touches ranking is a product-and-trust decision before it’s a sales one.
  • The sales / partner-acquisition team, who knew exactly which trade segments were hungry for growth and which were price-sensitive.
  • The category and regional managers — the people who knew why “emergency plumber in central Munich” behaves completely differently from “house painter in a rural district.”

A deliberate omission, worth calling out: we did not centre discovery on a traditional B2B “Customer Success” function. In enterprise SaaS, Customer Success owns the expansion-revenue relationship and is the natural partner for an upsell motion. But in a high-volume, long-tail SMB marketplace, that role is structurally different — partners are tens of thousands of small trade businesses, not a few hundred named accounts. The expansion relationship lives with self-serve product, partner marketing, and a high-velocity sales/support desk, not with named CS managers. Designing discovery around the org as it actually exists — rather than the org a template assumes — is the difference between recommendations that get implemented and a deck that gets admired and shelved.

The data we pulled — and the specific signals we looked for

Generic analytics produce generic strategy. We went after the signals that actually predict whether a paid-placement product can exist without breaking the marketplace. Concretely:

From the search and booking/lead logs:

  • Query → result-set-depth distribution. What fraction of searches return 30+ eligible pros versus 3? This is the single most important number in the entire study, and we’ll explain why below.
  • Position-based click and contact decay (the “attention curve”). We measured click-through and lead-conversion rate by rank position to quantify exactly how much economic value sits in positions 1–3 versus 4–10. (Steep, as expected — but you must measure your own curve, because home-services booking behaves differently from e-commerce or travel.)
  • Geographic and temporal sparsity. A pro’s availability is perishable. We mapped where and when supply exceeds demand (e.g., weekday daytime slots for non-urgent work) versus where demand is rationed by scarcity (emergency call-outs in dense city centres). Promotable inventory lives in the former, not the latter.

From the consumer side (web analytics):

  • The lead/booking funnel by category and device, segmented by whether the session was urgent (“burst pipe, need someone now”) or considered (“planning a kitchen renovation in spring”).
  • Repeat-vs-new customer behaviour — because promoting an unfamiliar pro to a loyal repeat customer is a trust risk, while it’s a genuine service to a first-time, uncertain homeowner.

From the commercial side (CRM + finance):

  • Partner tenure, job volume, and churn risk, joined against subscription tier.
  • The crucial cross-reference: which pros were the high-volume, low-churn, growth-hungry businesses — the natural buyers of visibility.

Observing real acquisition behaviour, not just self-reported budgets

Surveys tell you what partners think they spend; their traffic tells you what they actually do. So alongside interviews, we instrumented and analysed partners’ real external acquisition behaviour — the strongest possible proxy for willingness-to-pay:

  • Inbound attribution forensics. We analysed referrer and UTM parameters on traffic arriving at partner profiles and the marketplace, isolating sessions that originated from a partner’s own paid campaigns (Meta/Google) versus organic marketplace demand. A pro paying to send traffic to their landing page — traffic that then bounces back into the marketplace to check reviews and availability — is a pro who is demonstrably willing to pay for leads.
  • Public ad-transparency mining. Using the Meta Ad Library and Google Ads Transparency Center, we observed which partners were actively running local lead-gen ads, in which regions, and with what creative/landing-page strategy — entirely from public data, no survey required.
  • Landing-page and onboarding signals. “Where did you hear about us,” self-reported channel mix at onboarding, and outbound links from partner profiles to their own booking landing pages.
  • Voluntary ad-account connections. For partners in the research cohort who opted in, we connected (read-only) Google/Meta ad accounts to ground-truth actual monthly spend, CPL, and seasonality.

The payoff: instead of a soft self-reported range, we built an observed “external-spend intensity” score per partner and per category. This did two things — (1) it validated (and in competitive urban trades, exceeded) the survey’s €400–€2,500/month figure with real behaviour, and (2) it became a direct input to who to target first and what to price, since a pro already burning budget on Meta to win local jobs is the highest-intent buyer of on-platform visibility.

Partner segmentation: where the revenue actually hides

Segmenting partners by geography, business size, trade category, job volume, and platform engagement surfaced the pattern that defines almost every mature marketplace — the power-law distribution of activity:

  • The top ~15% of pros drove roughly 55–60% of all jobs. These businesses aren’t desperate for visibility — they’re winning and want to win more. They are the buyers for premium products.
  • Pros in dense, competitive urban trades (cleaning, handyman, electrical in the big metros) were structurally visibility-constrained: dozens of comparable businesses competing for the same first page. That’s exactly where a controlled visibility product has genuine value to sell — and exactly where you must be most careful.
  • A meaningful share of partners were already spending on external acquisition — Google and Meta — to drive leads the marketplace could have captured directly.

Partner research: the willingness-to-pay reality check

Surveys lie; budgets don’t. So we paired a structured survey with one-to-one interviews and, critically, anchored every willingness-to-pay question to what partners were already spending elsewhere — cross-checked against the observed external-spend score above.

The headline finding:

A substantial share of active partners were already spending on the order of €400–€2,500 per month on Google and Meta ads to win local jobs — jobs from customers who, in many cases, were already on the marketplace.

And the strategic insight beneath it: these partners didn’t object to advertising in principle — they objected to unmeasurable advertising. They would happily redirect a slice of that external budget into the platform on one condition: that it produced visible, attributable job outcomes — leads and bookings — not just impressions. That condition became a design requirement, not a nice-to-have.

Phase 2 — Monetization analysis: four doors, scored honestly

We evaluated four candidate revenue streams. The important discipline: score them not just on revenue, but on operational complexity and — uniquely for this business — risk to search relevance and consumer trust.

Option A — Sponsored Search Placements. Partners pay to earn an eligible, clearly-labelled boost within relevant local search results. Strong, intuitive value proposition; moderate engineering effort; and — the key constraint — only viable in result sets deep enough to absorb a promoted slot without displacing a genuinely better-matched pro. Realistic adoption: 6–10% of active partners.

Option B — Featured Profiles on Category & Regional Pages. Premium placement on high-traffic browse pages (e.g., “Movers in Berlin”). Lower engineering effort, naturally inventory-limited, and lower trust risk because browse pages carry a weaker “this is the single best match” promise than a specific search. Realistic adoption: 4–7%.

Option C — Homepage & Category Sponsorships (reserved brand inventory). Reserved, scarce, high-value brand placements — the digital equivalent of renting a billboard at the busiest intersection. Easy to build, but inventory is tiny — this is a six-figure product, not a seven-figure one, and only a few partners (and adjacent brands, e.g., tool or insurance suppliers) can buy it. (As explained in the results section, we deliberately deferred this one.)

Option D — Performance-Based Promotion (pay-per-qualified-lead). The holy grail on paper — partners pay only for outcomes, which is exactly what the research said they wanted. But it carries by far the highest operational complexity: you must define a “qualified” lead, handle cancellations and no-shows, prevent gaming, and reconcile billing against real-world job outcomes. High potential, high build cost, and a product you earn the right to launch after you have attribution data from Options A and B.

The prioritization framework

Each option was scored across five axes: implementation effort, revenue potential, operational complexity, partner demand, and impact on marketplace quality. We weighted that last axis most heavily — because a euro of revenue that costs you a point of consumer trust is a terrible trade in a business that runs on trust.

The resulting roadmap was deliberately sequenced for trust and learning, not just revenue:

  1. Sponsored Search — highest demand-to-effort ratio, and it generates the attribution data everything else depends on.
  2. Featured Profiles — fast to ship, low trust risk, immediate revenue.
  3. Premium Sponsorship Inventory — scarce and high-margin, but a brand-budget product with a different buyer and sales motion; sequenced later.
  4. Performance-Based Promotion — last, because it should be built on a year of real attribution data, not on guesses.

Phase 3 — Solution design: monetization that respects the algorithm

This is where the engagement earned its keep. The mandate — grow revenue without buying more traffic — has a sharp edge: if you’re not adding consumers, every promoted placement is shown to an existing user, in place of an organic result they’d otherwise have seen. Get it wrong and you simultaneously (a) degrade the booking experience, (b) make your paying subscribers who aren’t advertising feel demoted and cheated, and © erode the consumer trust that makes the inventory valuable in the first place. A three-way way to lose.

So we built the platform around one governing principle:

Promotion may reorder relevant results. It may never inject irrelevant ones.

Here’s how that principle became architecture.

The “promotable inventory” engine — relevance as a gate, not an afterthought

Before any ad could be served, a placement had to pass an eligibility gate derived directly from the discovery data. A sponsored pro could only appear when it was already a legitimate organic candidate for that query and location — clearing minimum thresholds for relevance, service-area coverage, rating, and (where it mattered) availability. Pay-to-play could buy a better seat in the room; it could never buy a ticket into a room it didn’t belong in. A cleaner 40 km outside the service area could not pay their way into a “near me” result, no matter the budget.

Equally important, we used the result-set-depth analysis from Phase 1 to decide where promotion was even allowed to exist. In thin result sets — a rural category with only three nearby pros — there’s simply no room to promote one without unfairly burying the others, so the engine suppressed sponsored slots entirely. Promotion switched on only where result depth and a measured, healthy supply-demand balance meant a boosted listing displaced ordinal position, not opportunity. We were, in effect, selling visibility only out of the surplus the marketplace could spare — never out of its core relevance.

We were also careful with intent: in clearly urgent sessions (emergency repairs), we constrained or disabled promotion further, because a homeowner with a flooding kitchen needs the fastest available pro, not the highest-bidding one. Promotion belongs in considered journeys with room to compare — not in emergencies where relevance is survival.

Transparent labelling and capped density

Every promoted result was clearly labelled as sponsored, and we capped promotion density (a strict ceiling on sponsored slots per result page, never the top-N wholesale). Two reasons: consumer-trust research is unambiguous that undisclosed advertising erodes trust — disclosed, relevant promotion does not — and a density cap structurally protects the non-advertising subscriber from feeling buried.

The intelligence layer: ranking that learns what actually converts

The centrepiece of the build was an AI/ML decisioning layer that made monetization self-optimizing — and, crucially, made “good for the advertiser,” “good for the consumer,” and “good for the marketplace” point in the same direction.

1. Value-per-impression auction (the core idea). Naïve sponsored search sells the top slot to the highest bidder. That’s bad for everyone: it surfaces pros who pay a lot but convert poorly, wasting the consumer’s attention and the marketplace’s most valuable real estate. Instead, we rank promoted candidates by expected value per impression:

eValue = bid × P(conversion | this pro, this query, this location, this intent, this slot)

A conversion-prediction model estimates the probability that a given promoted listing will produce a real outcome (lead/booking) for this specific search context, learning from features like the pro’s historical conversion rate by category and region, rating and review velocity, response time, availability, query–service match, device, and session intent (urgent vs. considered). The result: a high-converting pro can win a slot over a higher bidder who would have wasted it. This is exactly the “monitor performance of promoted listings and prioritize those who convert better” mechanism — formalised into the auction itself, with a continuous feedback loop (impressions → clicks → leads/bookings → model update).

Why this is the whole game: it aligns incentives. Advertisers get more leads per euro (so they spend more and churn less), consumers see promoted results that are also genuinely good matches (so trust holds), and the marketplace earns more per impression without adding a single visitor.

2. The relevance-eligibility gate, as a model. The hard guardrail from the design principle — promotion may reorder relevant results, never inject irrelevant ones — was implemented as a learned relevance/eligibility classifier sitting in front of the auction. A listing only enters the auction if it clears a minimum predicted organic-relevance threshold for that query, location, service-area, and availability. Bidding can move you up among relevant results; it can never move you into a result set you don’t belong in. (And in urgent sessions, the gate tightens automatically — the model favours fastest-available over highest-bidding.)

3. Smart budget pacing. A pacing model spreads each campaign’s spend across the day/week to match predicted demand, preventing a budget from burning out by 9 a.m. and keeping promoted supply available when consumers are actually searching — maximising both partner outcomes and inventory utilisation.

4. Anomaly & click-fraud detection. An unsupervised anomaly-detection model monitors for invalid clicks, bots, and competitor click-spam, protecting partner budgets (and the platform’s credibility on attribution). Trustworthy attribution is the entire basis on which partners agreed to redirect spend from Meta/Google — so defending it is a first-class feature.

5. Targeting & yield intelligence (closing the loop with Phase 1). The observed external-spend score and a willingness-to-pay / churn-propensity model feed an internal recommendation engine that tells the sales desk which pros to approach, in which categories, with which product — and feeds dynamic floor-price / yield guidance per category-region so scarce premium inventory is priced to demand, not guesswork.

These five components run on a shared event pipeline (impression → click → lead/booking → billing), which is also what powers the outcome-attributed dashboards partners see — because the same conversion signal that trains the model is the proof of ROI we show the advertiser.

The platform, in three surfaces

1. The Sponsored Search & Placement Engine — the relevance-gated, ML-ranked boost logic, campaign targeting (by trade category, region, service-area radius), budget pacing, and full impression/click/lead instrumentation.

2. The Partner Advertising Console — self-serve campaign creation, spend controls, and, crucially, outcome-attributed performance dashboards that report leads and bookings driven, not impressions — closing the loop on the exact objection that would otherwise kill adoption.

3. The Internal Monetization Console — for the platform’s own team: inventory and yield management, pricing configuration, campaign approvals, relevance-guardrail controls, and revenue analytics. The cockpit that lets the business sell surplus visibility deliberately rather than accidentally.

Phase 4 — Implementation: iterative, instrumented, reversible

We shipped in deliberately small, measurable increments — every release behind experiment flags so any relevance or conversion regression could be caught and rolled back before it reached the whole user base.

Release 1 — Sponsored Search MVP. The relevance-gated placement engine, campaign management, outcome-attributed reporting, and billing integration. Launched in a subset of categories and regions first, precisely so we could measure the effect on organic lead/booking rates before scaling.

Release 2 — Featured Placement Products. Regional and category featured profiles — the lower-risk browse-page inventory.

Release 3 — Monetization Optimization & Learning. Activated the value-per-impression auction and conversion-prediction model, the A/B-testing framework, budget-pacing, anomaly/fraud detection, and the campaign-recommendation engine.

A note on how we shipped ML safely: the conversion model launched in shadow mode first (scoring live traffic, affecting nothing) so we could compare its predictions against reality before it touched a single ranking. We then rolled it out behind experiment flags, region by region, watching the trust budget the entire way. The model that decides what consumers see was earned into production, never dropped in.

The guardrail that made it safe: a “trust budget”

Throughout, we held the program to an explicit constraint we treated as sacred: organic lead/booking conversion in any promoted surface was not allowed to degrade beyond a tight, pre-agreed threshold. If sponsored density started to cost the marketplace conversions, that was a signal to reduce the load, not push harder. Revenue was optimized subject to a trust constraint — never the other way around. The marketplace’s relevance had a budget, and monetization was only ever allowed to spend the surplus.

Results: only what we actually shipped

A word on figures, because credibility beats a big number. The table below counts revenue only from products that were actually implemented and live (Releases 1–3): Sponsored Search and Featured Profiles. Two products were deliberately not built in this engagement and are shown separately as future upside — not banked into the headline.

Implemented & live (in scope)

Initiative (delivered) Annual revenue potential (steady state)
Sponsored Search (relevance-gated, ML-optimised) €250K–€450K
Featured Profiles €120K–€220K
Delivered run-rate opportunity ≈ €370K–€670K ARR

Roadmap (not built in this engagement — future upside)

Initiative (deferred) Indicative potential Why deferred
Premium Sponsorship Inventory (reserved homepage/category brand placements) €80K–€150K Different buyer (brand budgets) and a direct, human ad-sales motion rather than self-serve; tiny, hand-sold inventory. Best launched once the self-serve products have proven the channel and freed up the commercial team.
Performance-Based Promotion (pay-per-qualified-lead) €150K–€350K Highest operational complexity (defining a “qualified” lead, handling no-shows, anti-gaming). Should be priced from the real attribution data the implemented system is now generating — exactly what Release 3 was designed to create.

How the ARR was calculated

The headline isn’t a guess — it’s a bottom-up build from the marketplace’s own data. The logic for each product:

General formula (per product):

Annual revenue ≈ (eligible partners) × (adoption rate) × (average monthly spend per advertiser) × 12

Then range-bounded by a low/high adoption scenario and sanity-checked against the observed external-spend that partners are already proving they’ll pay (the Meta/Google budgets from Phase 1).

Sponsored Search → €250K–€450K

  • Eligible partners: the marketplace has ~12,000–15,000 pros, but Sponsored Search only makes sense for those in deep-enough, competitive result sets (urban/competitive trades) — roughly the addressable pool, call it ~8,000–10,000 pros.
  • Adoption: 6–10% (from Phase 2), i.e., ≈ 600 (low) to ≈ 900–1,000 (high) advertisers.
  • Average spend: anchored to observed external budgets but intentionally conservative for an on-platform channel still earning trust — ≈ €60–€80/month low, up to ≈ €90–€120/month high (a fraction of the €400–€2,500 partners already spend off-platform).
  • Build-up: ~600 × ~€70 × 12 ≈ €0.30M (low); ~950 × ~€100 × 12 ≈ €0.45M+ (high)€250K–€450K.

Featured Profiles → €120K–€220K

  • Adoption: 4–7% of active pros, applied to a similar addressable base → ≈ 350–650 advertisers.
  • Pricing model: this is a flat-fee placement (per category/region slot), not an auction — typically ≈ €30–€50/month, with premium metros higher.
  • Build-up: ~400 × ~€30 × 12 ≈ €0.14M (low); ~600 × ~€45 × 12 ≈ €0.22M+ (high)€120K–€220K.

Delivered total → ≈ €370K–€670K ARR (simple sum of the two implemented products’ low and high bounds).

Three deliberately conservative choices (so the number is defensible, not optimistic):

  1. On-platform spend is set well below observed off-platform spend. Partners already spend €400–€2,500/mo on Meta/Google; we modelled a small fraction of that moving on-platform, because trust in a new channel builds gradually.
  2. Adoption is a steady-state range, not Year-1. Year-1 realized revenue lands at the lower-to-middle of the band as adoption ramps; the upper bound is the mature run-rate once partners renew on proven ROI.
  3. The ML auction is treated as upside, not baked in. The value-per-impression model raises advertiser ROI over time (more leads per euro → more spend, less churn), which we expect to lift realized revenue within the range — but we didn’t inflate the headline to assume it.

The two figures that mattered most to the CFO:

This entire revenue stream is incremental to a fixed traffic base. It monetizes existing demand more intelligently. The marginal consumer-acquisition cost of these products is ≈ €0 — we’re selling better, self-optimising positions within traffic the marketplace already pays for, out of the relevance surplus it can spare.

And the deferred products (Sponsorship Inventory + Performance Promotion, a further €230K–€500K) are a credible, data-backed second wave — not vapourware — because the implemented system is already generating the attribution data they need.


What Forma Pro brought to the table

This wasn’t a feature build; it was a monetization strategy de-risked through engineering. We delivered:

  • Monetization discovery grounded in search-log and availability-level analysis, plus observed external-acquisition behaviour (UTM forensics, Meta Ad Library / Google Ads Transparency Center, opt-in ad-account data) — not generic web stats.
  • Partner segmentation and budget-anchored willingness-to-pay research.
  • A defensible business case with honest, bottom-up, ramped revenue modelling.
  • A relevance-gated, ML-optimised platform architecture that sells surplus visibility without injecting irrelevance.
  • An AI/ML decisioning layer — value-per-impression auction, learned relevance gate, budget pacing, fraud detection, and WTP/churn-driven targeting — shipped under a shadow-mode → flagged-rollout discipline.
  • An experimentation and trust-budget framework that made the whole program reversible and safe.
  • A sequenced roadmap that earns the right to each next, more complex product.

The outcome: a marketplace that had spent years earning consumer trust learned how to monetize that trust without spending it — capturing a share of partner marketing budgets that had been flowing to Google and Meta, and turning a one-legged subscription stool into a stable, two-sided revenue platform.

Let's Talk

Tell us what you're building

Share what you're building, changing, or trying to fix. We'll review it and get back to you within one business day.

Send us a message

A few details are enough to get started.

We reply within one business day. Your details stay with the team reviewing your request.