Back to Case Studies
Case Study•October 13, 2026•12 min read•By Zeynep Yorulmaz

How a Coworking Booking Platform Grew Paying Customers 15% on the Same Ad Budget

A coworking booking platform used AI agents to join ad spend to billing data, move budget daily within set limits, and keep the month on pace, growing paying customers 15% on the same budget.

Share:

A coworking booking platform replaced spreadsheet-driven budget reviews across Meta and Google with AI agents that join ad spend to revenue, move budget daily within set limits, and keep the month on pace.


A coworking booking platform connected Meta Ads, Google Ads, its attribution tool, and its billing database to Mindra, then asked AI agents to read all four every morning. The result: 15% more new paying customers from paid campaigns, 12% lower cost per paying customer, and about 60% less time spent on budget admin, on the same monthly budget as before.

"We were optimising toward the cheapest signup, which turned out to be our most expensive customer. The numbers were all there. They were in three different tabs, and I was always a week late to them." — Growth lead, coworking booking platform

Key takeaways

  • Cheap signups were hiding expensive customers. The campaign with the lowest cost per signup in the account, $18, produced paying members at $452 each. Brand search looked four times worse on signup cost and three times better on the only number that mattered.
  • The join was the hard part, not the analysis. Spend lived in two ad platforms, conversions in an attribution tool, and revenue in the billing database. Nobody was short of reports. They were short of one report.
  • Budget pacing and budget allocation stopped being separate jobs. The same workflow that decides where money goes also decides how fast it goes out, so a strong first week no longer starved the last.
  • Every change respects a limit the team set once. Daily budgets move at most 20% per day, no campaign goes below its floor, and anything outside the band is flagged for a human instead of actioned.
  • The 11-day lag is built in. Median time from signup to first paid invoice is 11 days, so no campaign is judged on conversions that have not had time to happen yet.

What were the three blind spots?

This platform sells desk and meeting-room bookings across a few dozen cities. Paid acquisition runs about $85,000 a month, split between Meta and Google. The team is two people. Neither of them is short of dashboards.

Three things kept going wrong anyway.

Spend and revenue never met in the same place. Meta reported its conversions. Google reported its own. The attribution tool stitched the click paths together. The billing database knew who eventually paid. Answering "which campaign brings paying customers" meant exporting from three systems and reconciling them by hand, which happened roughly once a month, which meant decisions in week two ran on week-minus-four's numbers.

Cost per signup was the wrong scoreboard. The ad platforms optimise for the conversion they can see, and the conversion they could see was a signup. A Performance Max campaign targeting day-pass searches produced signups at $18 and looked like the best thing in the account. Almost none of those people became members. Nobody had the hours to check conversion-to-paid campaign by campaign, so budget kept flowing toward the cheapest signup in the account.

Pacing was a separate, manual worry. A campaign that performed well on the 4th got more budget on the 5th. By the 20th the month was 80% spent, and the last ten days ran on fumes, including the days that historically converted best. Pacing was tracked in a spreadsheet, updated when someone remembered.

The team was not missing data. They were missing a daily read of it.

How was the setup configured?

No integration project, and no engineering ticket.

Four connections, made once:

  • Meta Ads and Google Ads, for spend, delivery and platform-side conversions
  • The attribution tool, for the click and signup path
  • The billing database, over its API, for who actually paid and how much

Then four numbers, defined once in plain language:

SettingValue
Monthly paid budget$85,000
Target cost per paying customerUnder $150
Maximum daily budget change±20% per campaign per day
Attribution window before judging a campaign14 days

That last one matters more than it looks. Median time from signup to first paid invoice is 11 days on this platform. A campaign that launched on Monday has not failed by Wednesday; it has not finished yet. The window is the agents' instruction not to act on a conclusion they cannot have reached.

What was the first request, and what came back?

One sentence:

"Join last month's ad spend to paid conversions from the billing database, and tell me what each campaign actually costs me per paying customer, not per signup."

What came back was the table nobody had had time to build:

CampaignSpendSignupsCost / signupBecame payingCost / paying customer
PMax — Day Pass$14,100782$1831$452
Meta — Lookalike 1% / Hot Desk$21,400486$44118$181
Meta — Retargeting / Meeting Rooms$11,900173$6984$142
Google Search — "coworking near me"$18,800342$55129$146
Google Search — brand$9,000148$6156$161

The campaign with the best cost per signup in the account was the worst cost per customer in the account, by a factor of three. $14,100 a month was going to day-pass searchers who booked once and never came back.

That reads as obvious in a table. It was not obvious across three tools on a Tuesday.

What did the AI agents actually build?

Four agents, each with one job, talking to each other.

1. The spend-to-revenue joiner. Every morning it pulls spend and delivery from both ad platforms, the signup path from the attribution tool, and paid invoices from the billing database, then matches them. It respects the 14-day window: campaigns younger than that are reported but not scored. Its output is one table, the one above, refreshed daily instead of monthly.

2. The allocation agent. It compares each campaign's cost per paying customer against the $150 target and the account average, then proposes moves inside the ±20% band:

Proposed for Oct 14 (within limits, no approval needed) · PMax — Day Pass: $470/day → $376/day (−20%). Cost per paying customer $452, 3× target. Fourth consecutive day above threshold. · Meta — Retargeting / Meeting Rooms: $397/day → $476/day (+20%). Cost per paying customer $142, below target, delivery not capped. · Net change: $15/day under plan. Month-end projection $84,200 of $85,000.

3. The pacing agent. It tracks spend to date against the remaining days and recent delivery, and projects month-end. When the month is running hot it trims daily budgets across the board rather than letting the strongest campaign eat the back half of the month. When it is running cold with a week to go, it says so, in Slack, while there is still time to spend the money well:

⚠️ Pacing · Day 21 of 31 Spent: $51,300 of $85,000 (60%). Expected by now: $57,600 (68%). Projected month-end at current delivery: $78,400, about $6,600 under plan. Suggest +12% daily on the two campaigns under target CPA. Within limits.

4. The review agent. Three days after any change, it checks what happened to that campaign's cost per paying customer, attributed revenue and actual spend, and reports whether the move helped. Increases that did not hold up get walked back on the next cycle. This is the part that keeps the first agent honest: every allocation decision gets graded.

Anything outside the agreed limits — a change over 20%, a new campaign, a budget increase that would break the monthly ceiling — is not executed. It arrives in Slack as a recommendation with its reasoning, and waits for a person.

Before vs after: what changed?

BeforeAfter
Spend-to-revenue viewManual export from 3 tools, roughly monthlyJoined every morning, automatically
Campaign scoreboardCost per signup, from the ad platformCost per paying customer, from billing
Budget movesWeekly, by hand, when someone had timeDaily, inside preset limits
PacingA spreadsheet, updated when rememberedProjected daily, trimmed or lifted before month-end
Time on budget adminAbout 8 hours a weekAbout 3 hours a week
Cost per new paying customer$142$125

Four months in, on the same monthly budget: 15% more new paying customers from paid, 15% higher return on ad spend, 12% lower cost per paying customer, and about 60% less time spent monitoring and adjusting. Compared with the equivalent period before Mindra.

Why did this work when the dashboards didn't?

They already had dashboards in both ad platforms, plus the attribution tool. All three were accurate. None of them changed a decision.

The join is the product. Each tool was honest about its own slice and silent about everyone else's. Meta cannot see the billing database. The attribution tool cannot see margin. The one number the team needed did not live in any of them, and building it by hand cost a day they did not have every month.

Consistency beats brilliance here. The analysis is not clever. It is a join, a comparison against a threshold, and a percentage change. The reason it never happened was that it needed doing every single morning, including the mornings with a product launch and a sick kid. An agent does it on those mornings too.

Limits make autonomy safe. The team was never going to hand budget authority to software with no ceiling. They did hand over a band: ±20% a day, a hard monthly cap, floors under each campaign, and a human for anything outside it. Inside the band the agents are fast; at the edge of it they stop and ask. That is why this runs unattended.

Frequently asked questions

How do AI agents decide which campaigns get more budget? They compare each campaign's cost per paying customer, taken from the billing database rather than the ad platform, against a target the team sets once. Campaigns under target with uncapped delivery can receive more; campaigns over target receive less. Every move stays inside the daily change limit and the monthly budget ceiling, and campaigns younger than the attribution window are not scored at all.

What stops an agent from spending the whole month's budget in week one? The pacing agent projects month-end spend daily from spend to date, remaining days and recent delivery. If the projection runs over plan, daily budgets come down across campaigns before the ceiling is hit, not after. If it runs under, the agent flags the gap while there are still days left to use it.

How does this handle the delay between signup and payment? With an explicit attribution window, 14 days on this platform, set against a median 11-day signup-to-payment lag. Campaigns inside the window appear in reporting but are not judged or adjusted on incomplete conversion data. Without this, every new campaign looks like a failure for its first week and gets cut before it can prove itself.

Will agents change budgets without anyone approving? Only inside limits the team sets. Moves within ±20% a day, under the monthly cap and above each campaign's floor, execute and are logged. Anything beyond that, including new campaigns and anything that would breach the monthly budget, is a Slack recommendation with reasoning attached, waiting for a person. Everything is in the audit trail either way, with RBAC and SSO controlling who can change the limits.

What if the agents get a call wrong? The review agent re-checks every change after three days against cost per paying customer, attributed revenue and actual spend, and walks back moves that did not hold. Because the step size is capped at 20% a day, a wrong call costs a fraction of a daily budget, not a month.

Do I need engineers to set this up? No. Mindra supports 3,000+ integrations, including Meta Ads, Google Ads, attribution tools and internal databases over API. You connect the tools, state your budget, target and limits once in plain language, and ask for what you want in a sentence. This platform's first working agent came from one request: "Tell me what each campaign actually costs me per paying customer, not per signup."

Where Mindra fits

If your paid acquisition decisions depend on a number that lives in four systems at once, Mindra is the analyst who assembles it every morning and acts on it inside the limits you set. Hire a whole department of AI agents with a single sentence. They connect to your tools, read your data, run on schedules, keep a memory of your rules, and either act within your limits or bring you the decision. It's model-agnostic (Claude, Gemini, GLM, Qwen, DeepSeek), SOC 2 Type II and GDPR compliant, with Zero Data Retention available, full audit trail, RBAC, and SSO. No engineers required.

See more results across industries on our case studies page, or read two related stories: how a performance marketing agency diagnoses 40 client accounts every morning, and how a demand gen agency lifted paid conversion 15% by testing the page, not the average.

Ready to put an analyst that never sleeps on your ad spend and your billing data at the same time? Book a demo.

Zeynep Yorulmaz

Zeynep Yorulmaz

CEO of Mindra

Zeynep Yorulmaz is the Co-Founder & CEO of Mindra, building the platform that lets any team hire a whole department of AI agents with a single prompt.

Stay Updated

Get the latest articles on AI orchestration, multi-agent systems, and automation delivered to your inbox.

Mindra field guide

Read next

Related Case Studies