Build → a pushup challenge with a friend
Send a Friend Challenge from inside Lockin. Both phones verify pushups via on-device pose detection. Each person's stake clears or forfeits on their own daily reps. The friend ping is the cue. The phone is the umpire. Neither of you can fudge the count.
Suggested starting contract
$5/day against missing your daily target of 100 pushups per person, per day.
Both you and your friend need Lockin installed (free on the App Store and Google Play) and need to be connected as friends inside the app. Account creation takes under a minute via email or Apple/Google sign-in. Workout-pose challenges are a Premium feature after your first free contract.
From the challenge picker, select Workout Pose, then pick Pushups. Configure your sets — anywhere from one to ten sets — and reps per set from the fixed list {5, 8, 10, 12, 15, 20, 25, 30}. Ten sets of ten is the canonical 100-a-day grease-the-groove configuration. Your friend will run the same configuration once they accept.
Default daily target is 100 pushups. Default stake is $5 per day, enough to register as a real cost when the last set is sitting between you and bedtime. Default deadline is 23:59 in your local timezone; tap Set deadline to pick an earlier cutoff on a 24-hour picker — 9:00pm is a strong default. Tighter deadlines unlock higher Locks and XP rewards. The deadline is locked in at contract creation and cannot be edited mid-contract.
Lockin's Friend Challenge supports two payment modes. In sender_pays (gift) mode, you pre-pay your friend's stake — they take the challenge for free, but your money is on the line for their reps as well as yours. In recipient_pays mode, the default, your friend funds their own stake when they accept; each person stakes separately for themselves. Mutual mode is the equal-skin-in-the-game version. Gift mode is the right pick when you want to fund a friend's commitment as a present.
The Friend Challenge accepts a list of recipients, so you can fan the same challenge out to one friend or to several friends in a single send. Each recipient receives an individual push notification and decides on their own whether to accept, reject, or let the invite expire. A challenge that goes to three friends generates three independent acceptance decisions and three independent stake settlements.
Pick a charity from Lockin's vetted list across categories including climate, mental health, animal welfare, and digital literacy. If you miss your daily target, the bulk of your stake funds that cause; Lockin charges a small platform fee to cover payment processing and operations. Each person picks their own charity for their own stake — your friend's forfeits don't fund yours, and vice versa. Confirm to send; your stake is held by Stripe in a pending state until your friend accepts.
From Lockin's data
In the Lockin beta, workout-pose contracts run as Friend Challenges showed meaningfully stronger week-two and week-three completion rates than solo workout-pose contracts at the same daily target and stake. The pattern was strongest when both participants were actively logging reps in the morning or early afternoon — the friend who completed their first set early acted as a behavioral cue for the other, consistent with Christakis and Fowler's social-network contagion findings in 'Connected' (2009). Gift-mode (sender_pays) challenges produced a smaller but consistent additional lift in recipient completion compared to mutual-stake versions.
"We both kept dropping the 100-pushup thing solo. Sending it as a Friend Challenge changed it inside a week. Seeing his segments fill in on my dashboard at 7am meant I could not pretend the day had not started yet, and the $5 was real enough that we both showed up. Neither of us had to text the other to check — the app just showed us. Forty days in, both of our streaks are intact."
— Anonymous beta-user pair, mutual pushup Friend Challenge, 6 weeks active
Two payment models, picked at challenge creation. In sender_pays mode, you pre-pay your friend's stake when you send the challenge — your friend takes the challenge for free, but your money is on the line for their daily reps as well as your own. It's the gift framing: you're funding their commitment. In recipient_pays mode, the default, your friend funds their own stake when they accept; each person has their own money on the line for their own daily reps. Mutual mode is the equal-skin version that most accountability pairs settle into. Gift mode is the right pick when you want to give a friend or family member a frictionless start to a habit and you're willing to put your money behind their follow-through.
No. Lockin's Friend Challenge is not zero-sum. Each person's stake settles independently against their own daily verified count. If you both hit your daily target, both stakes clear and return to each person. If you both miss, both stakes forfeit to each person's chosen charity. If one of you hits the target and the other misses, only the misser's stake forfeits — the hitter's stake clears normally. Nobody takes anybody else's money. The social pressure is the value-add, not a transfer of funds between friends. We made this design choice deliberately because the research on accountability partners — Cialdini, Matthews 2015, Duhigg — is about witnessing and consistency, not about competition. A friend watching your verified segments fill in is what shifts your behavior, not the prospect of taking their cash.
Yes. The Friend Challenge accepts a list of recipients, so a single challenge can fan out to multiple friends in one send. Each recipient receives their own push notification and decides individually whether to accept, reject, or let the invite expire. Each acceptance creates an independent contract — your friends don't have to all accept together, and one friend rejecting doesn't cancel the challenge for the others. If three friends accept, you'll see three sets of daily verified segments fill in alongside yours, and each person's stake settles independently against their own daily count. This is useful for small training groups, family pushup pacts, or fanning a 100-a-day challenge across a Slack-friend cohort.
If your friend rejects the challenge, the invite moves to a rejected state and you receive a push notification. If they don't accept before the challenge expires, it moves to expired. In either case, no contract starts on their side. If you sent in sender_pays (gift) mode, the stake you pre-paid for them is refunded to you in full — Stripe never released the gifted amount because the contract never went active. In recipient_pays mode, your friend never funded a stake in the first place, so there's nothing to refund. Your own stake remains in pending until at least one recipient accepts; if you've fanned the challenge to multiple friends and at least one accepts, your contract becomes active against your own daily target.
Forfeited stakes go to a registered charity from Lockin's vetted list. You choose your charity from categories including climate, mental health, animal welfare, and digital literacy when you set up your side of the contract; your friend chooses theirs independently. Forfeits are routed per person, per stake — if you miss a day, the bulk of your stake funds the cause you chose; if your friend misses a day, the bulk of their stake funds the cause they chose. In gift mode, the gifter's stake (which is funding the recipient's contract) routes to the gifter's chosen charity on a recipient miss. Lockin charges a small platform fee to cover payment processing and operations.
Each person's deadline runs in their own local timezone. The default is end-of-day — 23:59 — so each of you has until your own midnight to log your verified reps. During contract setup you can pick an earlier cutoff on a 24-hour picker; 9:00pm is a strong default because it forces the final set out of the pre-bed window where most missed pushup days actually die. Tighter deadlines unlock higher Locks and XP rewards. The deadline is locked in at contract creation and cannot be edited mid-contract — that immutability is what makes it function as a precommitment rather than a movable goalpost. If you and your friend live in different timezones, your deadlines fire at different absolute moments, but each person's contract clears or forfeits against their own local-time cutoff.
You see each other's daily progress as colored pass/fail segments on a shared instance_statuses array — green for a completed day, the appropriate state color for a missed or in-progress day. Updates arrive live via a Supabase Realtime subscription, so when your friend hits their 100 in the morning, your dashboard reflects it within a second. Push notifications also fire on each daily completion event. You don't see raw video or your friend's camera feed — pose detection runs on-device and no video is uploaded — but you see verified pass/fail status in real time, which is the social-accountability variable that matters.
Free to download. You set the target, the stake, and the charity.