AnasLoading
Senior Product
Designer
0%
Anas

A habit loop that doubled trial conversion

Free-trial → membership conversion went from 11% to 22%, monthly check-ins rose 19%, and one-month retention climbed from 49% to 64%. I designed the loop behind those numbers for Letswork (a trial goal, a routine members set themselves, and a three-month journey), and read the impact straight out of the product analytics.

Role
Product Design
Product
letswork.com
Timeline
1–2 weeks
Focus
Trial churn, retention, habit formation
Collaborators
Omar AlMheiriFounder & CPO
Suhaib AhmedEngineering Lead
Three iPhones showing the Letswork app: the home screen with the weekly-progress widget, the venue leaderboard with its podium and mayor, and the twelve-week journey timeline.
Scope at a glance
3
Acts in the loop
trial → routine → journey
12
Weeks of journey
milestones + badges
4
Check-ins a week
the unit of the habit
1–2
Weeks to design it
brief to shipped loop

The short version: Letswork sells a subscription to a network of workspaces. Trial users were arriving, checking in once, and disappearing. I designed a three-act habit loop: a trial goal sized to be winnable, a productivity routine the member sets themselves, and a twelve-week journey generated from that answer. It moved trial conversion, retention and churn, and produced one result nobody designed for: people started subscribing before the trial was over.

01

Letswork is a flexible-workspace network spanning 44 countries across the Middle East, Pakistan and Europe, closer to ClassPass than to a landlord. Members hold a subscription and spend credits to check into third-party venues: cafés, coworking floors, hotel lounges, studios.

Credits are the only variable in the business. Every plan carries the same perks, you’re only choosing how many credits you get each month. Which means the whole company rests on one behaviour: does working somewhere else become a routine, or stay a novelty?

I came in as the product designer on a deliberately small team. Omar, the founder and CPO, owned the problem and the commercial constraints around it. Suhaib, the engineering lead, owned what could actually be built and how fast. I owned the loop itself, the mechanics, the flows, the interaction craft, and the working prototype the build was specced from.

The whole thing went from brief to shipped loop in one to two weeks. That pace is only available to a group this small and this senior, and it changed how I worked. I designed the screens in Figma, built them into a running prototype with Claude Code, and staged every cycle on Vercel, so reviews were arguments about a real product on a real phone, not opinions about screenshots.

A member checking in at a partner venue's reception desk, staff behind laptops, a Letswork screen on the wall.
Checking in at a partner venue, the credit spend the whole loop is built to bring back.
02

The free trial was doing its job right up until the moment it mattered. People signed up. People checked in. Once.

Then nothing. The trial would run down and quietly expire, and a user who had already had a good experience never came back for a second one.

Users would start their free trial and then go blank. They’d make a check-in and no repetition, not because they didn’t like the experience, but because the app was not nudging them properly for any action.

That distinction is the whole brief. This wasn’t a satisfaction problem or a pricing problem, and no amount of polish on the check-in flow would have touched it. It was an absence, the product had no opinion about what you should do next, so most people did nothing.

A trial is only worth what it converts. Ours was giving people one good day and then leaving the room.

Before I designed anything, I audited what was there, the home a trial user lands on, and the whole path that got them there. Neither was broken. Both were silent.

The Letswork trial home screen, annotated: 'The trial is named, never shaped' points to 'You're on a free trial'; 'Credits, with no purpose' points to the 15-credits pill; 'The only prompt is a purchase' points to the 'Buy a Day Pass' button; and 'A place to browse, not a plan' points to the search and categories.A flow audit of the whole download-to-payment journey, annotated with critique notes: too many steps before the free-trial flow starts, weak value communication and incorrect CTA copy on the start screen, a sudden four-step jump, and a 'High Friction' flag over the payment step.
03

The instinct in this situation is to reach for notifications. We didn’t. A reminder tells you to do something. It doesn’t give you a reason.

So instead of nagging people through the trial, I gave the trial a shape: a small, explicit goal you could see from the home screen, and, critically, one you could actually finish with the credits you’d been given.

Then, once that goal was met, the loop widened: a routine you set for yourself, and a three-month journey generated from it. Three acts, one repeated action.

The trial bet, screen by screen: a 'Payment Successful, welcome to your 7-day free trial' start; a 'Most Trial Users See Better Productivity After Just 2 Check-Ins' framing over the 'Your Trial Goal, complete 2 check-ins in 7 days' card; and the dynamic states of that goal widget, 1/2 with 'Explore Spaces to Check-in', 1/2 low-on-credits with 'Activate Plan to Unlock More Credits', and 2/2 'Goal Completed' with 'Activate your Subscription'.
04

On sign-up, the interface reorganised itself around a single target: a dynamic number of check-ins, derived from the plan the user had picked for their trial.

The constraint I held hardest was that the goal had to be winnable. A goal you can’t reach on the credits you were given isn’t motivation, it’s a paywall wearing a progress bar. So the target was always sized against the trial credits.

It worked. Trial users started using the app far more inside the trial window. But the more interesting result was the one I didn’t plan.

What we designed

A trial goal small enough to finish inside the free credits, so a trial user has a reason to make a second check-in.

Trial credits grantedsized to the plan they picked15
First check-in, a 10-credit spacethe goal needs one more−10
Credits leftnot enough for that space again5
What actually happened
They subscribed before the trial ended.
To finish the goal at the space they’d already chosen, the cheapest path was to activate the plan early.

I designed the goal to drive a second visit. The early-activation pattern fell out of the credit maths on its own, and turned a retention mechanic into an acquisition one.

The trial goal, in motion
The goal on home, one check-in in, one tap from the next.
Finding the next check-in, real venues, credits and one-tap check-in.

Scroll →

Someone with 15 trial credits checks in at a 10-credit space and likes it. To finish the goal they need one more check-in, and the space they want is the one they already know. Five credits won’t cover it.

So they subscribed. During the trial. A mechanic built to fix retention turned out to pull subscription activation forward, because the goal gave people a reason to care about their credit balance while they still had something to spend it on.

05

Once the trial goal was complete, or the trial had run out, we asked one question: how many days a week do you work remotely?

Say three, and the product builds around three. That single answer generates the twelve-week journey, sets the weekly target, and defines what counts as a good week for you rather than for the average user.

It also does something quieter and more important: it makes the goal theirs. Nobody argues with a target they set themselves.

That answer then becomes the most-looked-at component on the home screen. Check in on a day you planned and it’s a productive day. Miss one and the app says so plainly, without theatrics, and, crucially, it shows you the days still ahead of you.

The routine system, end to end: an intro screen 'Let's Build Your Work Routine & Track Productivity'; the 'Set your work routine' day picker with Monday-Friday selected and a reminders toggle; the old 'Your Work Week' widget alongside user feedback that led to a redesign; and the new, annotated Week widget on the home screen showing the current badge and week, the next target, a successful checked-in day, and the credits to earn this week.

This is the piece I’d defend hardest. Almost every habit product scores the past, streaks, calendars, red marks. Showing the upcoming days turns the same component from a report card into a reminder, and it arrives while you can still do something about it.

06

With a routine in place, the loop finally had somewhere to go: a twelve-week Letswork Journey. Four check-ins a week unlocks a named badge and pays credits back into the wallet.

Credits per week230 credits · 48 check-ins
1
2
3
4
5
6
7
8
9
10
11
12

The payout curve isn’t linear. Every fourth week closes a month and pays roughly double, 20, 25, then 50 at the finish. Months are the unit a subscriber actually feels, so the reward peaks exactly where the renewal decision lands.

Paying credits rather than points is the part that makes this more than decoration. The reward for building the habit is more of the thing the habit is made of, which means the loop funds itself and every badge has a real, spendable value the member can feel.

The loop as it shipped, across four screens: a 'Week Progress, Badge Unlocked!' banner over the explore feed with a one-tap Check-in; the home screen with an 'Unlock Rewards, set routine & earn credits, badges' card and streaks, credits and rewards shortcuts; and the twelve-week 'Your Letswork Journey' timeline, Week 1 completed with 10 credits earned, Week 2 the current 'Trial Explorer' at 2/4, and later weeks (Habit Builder, Productivity Flow, Workspace Regular, Two Month Momentum) locked with their credit rewards.
07

The journey rewards checking in. It doesn’t care where. But a venue partner very much does, their side of this business is footfall they can count on, and a member who spreads four visits across four venues is worth less to all four of them than a regular is to one.

So the loop got a second axis: a leaderboard per venue, and a monthly title for whoever tops it, the mayor of that space.

Leaderboards are usually where good retention intentions go to die. A top-10 board is motivating for ten people and quietly demoralising for everyone else, and a permanent champion tells the rest of the room not to bother.

So the board never shows a top-10. It shows the handful of people directly around your rank, where the next place up is always a visit or two away, and the mayor title resets every month, so the crown is never permanently taken. It also has to work on day one, with no one on it: hence the empty state and the “you’re the first one here” moment.

Four leaderboard screens from the Figma design: the full board with a podium, a Mayor pill and 'People Around Your Rank'; an empty state 'No one's here yet!' offering Claim the Crown, Early Bird Advantage and Monthly Rewards; a 'You're the first one here' first-user state; and a 'Competition is heating up' state.

Then the half that makes it more than a vanity metric. Becoming the mayor is only worth something if the venue notices. So when the mayor checks in, the venue-manager app interrupts with it, not as a feed item, as an event.

The venue-mayor flow across three screens: the member-side Leaderboard with a Mayor crown; the venue-manager 'VIP just arrived' alert for Omar Haddad ('one of your most loyal members, an 18-day streak and 214 visits here, make sure they get the VIP treatment'); and the venue mayor profile showing visits this month, day streak, usual stay, arrival time, usual booking and total visits, with a 'Say hello to Omar' action.

The sheet leads with why it matters rather than who it is, because a manager reading it has about three seconds and a queue. It carries the streak, the visit count and their usual arrival time, enough to greet someone properly.

That closes the loop across both sides. A member returns to the same venue to defend a title. The venue is told their regular just walked in and treats them like one. The member gets a reason to come back that has nothing to do with points. The mechanic manufactures the recognition it’s pretending to measure.

08

Here’s the question the journey creates for itself. Twelve weeks in, a member has built exactly the habit we wanted, and has nothing left to climb.

That’s a real cliff. A member at week 13 has just as little to lose by cancelling as one on day one, because everything they earned has already been spent. So a later phase of the engagement added a layer designed to accrue instead of reset.

The tier economy, shipped
Letswork Rewards intro screen, 'Letswork pays you back': every booking earns value back, booking fees waived plus cashback on everything you spend.
The pitch, spend keeps paying you back, so there's always a reason to stay.
The tier ladder screen, 'You're a Member, 3% back on every booking'. Member, Plus (Current), Pro (2,220 away) and Elite (12,220 away), each earned on lifetime credits spent.
The ladder, Plus today, Pro 2,220 credits away. Tiers are earned on lifetime spend, never bought.
The perks screen, 'Perks that grow with you': no flex access fees, 3% cashback on every booking, priority venue booking, early workday booking.
What climbing buys, real perks that compound, not points that expire.

Scroll →

Tiers are earned on lifetime credits spent, so they survive a bad month, a pause, even a cancellation, which is precisely what makes them worth not losing. Where the journey was a sprint with a finish line, this is a record that only grows.

Each tier pays cashback, which raised a presentation question with a surprisingly strong answer. Members get two things back on a booking, a waived access fee and tier cashback, and showing both looks more generous. I made the opposite call and wrote it into the function that computes it, so no future screen could quietly break it.

The cashback itself lands in a Vault that unlocks on the 1st of each month rather than trickling in invisibly, a monthly beat you can look forward to, and the thing members actually open that screen to see.

09

A check-in is the single most repeated action in the product. Everything above is scaffolding around it, so it had one job: make four taps a week feel worth doing.

The rule that took longest to get right was the smallest. Early builds flipped the earned circle to 🔥 the instant you tapped, while the progress bar was still travelling toward it. It felt cheap, and I couldn’t say why until I wrote the constraint down:

Unless the bar reaches the current check-in, it should not change to the fire emoji.

The sequencing note that fixed it

One line, and it gates four things at once, the emoji flip, the counter tick, the subtitle change, and the confirm haptic, so the reward and the feeling land together instead of a beat apart.

The check-in reward animation: a 'Week Progress' banner drops in, a gradient bar fills between the check-in circles, and the count ticks up as the fire lights.
The real thing, the bar reaching the circle before it lights, captured from the running prototype.
10

The clearest evidence that this worked didn’t arrive in a dashboard. It arrived in a support chat.

Unprompted, a member, to support
A Letswork member messages support: 'I have a question if I pause my membership starting from tomorrow', attaching a screenshot of their own 12-week journey progress, then asks 'This journey of earning credits will get affected and I will stop earning coins if I pause my membership?'
proud mother moment here 🤣🤣

Nobody asked them this. They opened a support chat, screenshotted their own progress, and checked what pausing would cost, three weeks into a twelve-week journey, one check-in into the month. That is a switching cost, in a member’s own words.

Three weeks earlier this person would have paused without a second thought, there was nothing to think about. Now pausing had a price, and they wanted to know what it was before they paid it.

That is the churn mechanism made visible. We didn’t reduce cancellations by making it harder to leave. We reduced them by giving people something they’d built and didn’t want to abandon.

It also retroactively justifies the fairness rules in the sections above. Once members care about their journey this much, quietly resetting it for a missed week stops being a nudge and starts being a betrayal. The switching cost is only defensible because the guard rails are real.

And it exposed a gap I’d missed: they had to ask. The consequences of pausing lived in a support conversation instead of in the product. The later pause flow answers it directly on screen. Your credits are held, not forfeited, and your tier is saved. But that question should never have needed a human.

On the quantitative side, the two numbers that mattered most both moved, and the first one moved further than I expected.

MetricBeforeAfterChange
Free-trial → subscription conversion11%22%
Check-ins per active member, monthly3.64.2+19%
Member retention, one month on49%64%+15%

Trial conversion doubled. Before the loop, roughly one in nine people who took a free trial went on to buy a membership. After, it was closer to one in five. That is the trial goal doing exactly what it was designed to do: giving someone a reason to come back a second time, while they still had credits to spend.

And the habit got denser. Members who were already active checked in about 19% more often, roughly four and a quarter visits a month against three and a half before. That second number is the routine and the journey working on people who’d already subscribed.

They also stuck around longer. Of members who checked in one month, the share who came back the next rose from 49% to 64%, and the lift held across the following months too. That’s the number I care about most, because retention is the engine of lifetime value: a member who keeps showing up keeps their subscription, and every extra month of habit is an extra month of revenue. I’m quoting the retention directly rather than a dressed-up LTV figure, the return rate is mine to measure, but turning it into a dirham LTV needs the revenue and churn definitions that are the client’s to set.

The result I keep coming back to isn’t on that table though. Early activation, trial users subscribing before their trial ended, wasn’t a goal, a metric, or a line in any brief. It emerged from the credit arithmetic of a mechanic built for something else entirely, and it’s the clearest evidence I have that the loop was tuned to how the business actually works.

11

The lesson I keep is that the nudge has to arrive before the miss. Everything that worked here, the trial goal, the upcoming days on the work-week strip, the freeze that buys time instead of taking it away, is the same idea in three costumes: reach people while they can still act, not after they’ve failed.

The data came first. The analytics already showed trial users going quiet after a single check-in, we saw it, we wanted to fix it, and the loop was the answer to that. What I’d do differently is lean on that same data harder while designing: I sized the trial goal against the plan and shipped it, where I’d rather have tested a couple of goal sizes against each other and let the drop-off curve pick the winner, instead of reading whether it worked only afterwards.

Where I’d take it next: the journey is still a solo activity. The strongest pull to show up somewhere isn’t a badge, it’s knowing who else will be there. The version I want to build is one where your routine is visible to the people you actually want to work near, and a productive day is something you have with someone.

Thanks for reading.

If you made it this far, we’d probably enjoy building something together.

Contact

Let’s
Anastalk

The best read on how I think is a conversation. If you’re building a product where design owns more than the screens, I’d like to hear about it.