
I made a habit tracker that pays out in gems, not streaks
Sweet Streaks started as a joke when I told my gf I would give her 15 points if she made it to bed by midnight. The promise of points for undisclosed future rewards seemed to have click something in our brains. And it started us down the rabbit hole of figuring out how to stick to our healthy habits.
At the core this is a social accountability problem. We wanted to be able to see each other's habits so we can support one another as those habits eventually became harder to get done. And it was clear we needed a game mechanic so we earn points and eventually redeem them for rewards. Our brains worked best with some novelty and fun where we could collect something and show it off to one another. With those basic parameters I set off to figure out if something existed but eventually just decided to make something for us.
The rabbit hole
Before I started building anything I tried looking at different apps or pen & paper methods we could use to create an accountability tracker. The spectrum of these apps were either too data focused (Habitify, Habitbox, Streaks etc) or were gamified & uninteresting to our brains (Finch, Habitica). Two issues arose: most of these apps were not well built for couples (no direct visibility into the goals) and the game aspect didn't feel cozy or interesting long term.
Habitify
Completion rate, weekly rhythm, focus zones. A dashboard for a person.
Streaks
Best streak, all-time percentage, total completions. The numbers are the reward.
Finch
A pet that grows as you go. Gamified, and built for friends rather than a couple.
Habitica
Hundreds of collectible pets, wrapped around a task list.
I took a closer look at User 1 (my gf) and the different apps she kept using every day. The one thing that became clear is she loves cozy games like Tiny Tower and Pocket Frogs. In Tiny Tower you are a landlord that manages a massive skyscraper with different levels, themes, and characters. The goal is to build as many floors as you want. With Pocket Frogs you can collect and breed frogs and collecting them is the main idea. You can also gift frogs to a friend - a key feature we both used. If you don't know, cozy games are simply games that are adventure filled in a low stress way and where the stakes are as high as you want them to be. So think low stimulation and good vibes.
Out of every app I looked at, Pocket Frogs was a core inspiration for Sweet Streaks. We both needed a habit tracker that went beyond a simple streak and more into the idea of 'collecting' something as a way of unlocking small bursts of dopamine. Most habit trackers emphasize too deeply on a streak which can feel a bit like it's built to eventually punish the user. A streak exists to be broken, and the moment it breaks many of these app have nothing left to offer you but shame and guilt. A good example of this is Duolingo's passive aggressive pulls to bring a user back after they've broken a streak.
The collection
Habitats filling up, seven frogs at a time. Nothing here can go down.
A habitat
One frog in its own habitat. Level 53, and still just a pond to look at.
The shop
What the currency is for: flowers, habitats, things to arrange.
Accountability layer
It was important that we both got to see the habits we are working mostly because we both need a level of support to get things done. It's also a way to keep each other honest and because there are points and rewards tied to our habits we wanted to make sure that neither of us was trying to game anything (not that we would lol). For us accountability mechanism was not about nagging each other or streak shaming but more about encouraging each other to get a workout in earlier so that we could make it to bed on time.
My favorite feature is generating in progress cards where you can share a postcard that shows your character and how you're trending with your habits that day. Easily generate it by clicking on the name points box on the Today tab.
The Today tab
Three of eight done and the mine still shut. The partner card sits alongside, showing they are three of five in.
A perfect day
Eight of eight, and the mine opens. Finishing the day buys a trip in rather than a longer number.
Your partner
Their stats, a Cheer button, their collection, and the head-to-head card with both sets of habits.
A cheer arriving
Pika, Marcus and one other are rooting for you.
The game mechanics
Sweet Streaks has two main mechanics: each habit you accomplish gives you points that you can redeem on rewards. You can collect gems by achieving a perfect habit day which gives you access to the mines where you could go in and collect different gemstones. Completing gem sets unlocks different accessories that you can use in the mine to collect better gemstones.
There are 6 caves (4 are still under development) that you can access after a perfect habit day. Each cave has a diff % probability breakdown of the quality of gem you can get. There are 5 rarity bands for gems: common, uncommon, rare, epic, legendary. There are eighty-eight stones to find in the 6 caves with ten gems having different 'cuts'. Completing a gem set can help you earn gear that makes the next dig better.
Six caves, three independent axes
No cave beats another on all three at once — each is the best in the game at something.
- Common
- Uncommon
- Rare
- Epic
- Legendary
Pebble hollow
20 pockets
- Common
- 81.3%
- Uncommon
- 16.6%
- Rare
- 1.9%
- Epic
- 0.2%
- Legendary
- 0.01%
Amber grotto
16 pockets
- Common
- 61.4%
- Uncommon
- 28.9%
- Rare
- 7.4%
- Epic
- 2.1%
- Legendary
- 0.2%
Crystal deep
14 pockets
- Common
- 51.7%
- Uncommon
- 32.5%
- Rare
- 11.2%
- Epic
- 4.1%
- Legendary
- 0.6%
Obsidian vault
10 pockets
- Common
- 51.7%
- Uncommon
- 32.5%
- Rare
- 11.2%
- Epic
- 4.1%
- Legendary
- 0.6%
Ember forge
16 pockets
- Common
- 42.1%
- Uncommon
- 34.2%
- Rare
- 15.2%
- Epic
- 7.2%
- Legendary
- 1.3%
Starlit apex
12 pockets
- Common
- 32.2%
- Uncommon
- 33.8%
- Rare
- 19.4%
- Epic
- 11.9%
- Legendary
- 2.7%
A legendary stone turns up once every 514 trips in the first cave — and once every 3 in the last.
The cave map
Two caves open, four behind point totals. The gates hold back cave games that are not finished — they are not the intended ramp.
Inside a cave
Twenty-one seconds on the clock and a field of rocks. You swing at what you can reach before the time runs out.
The carry-out
You surface with more than the bag holds, so something gets left. NEW and FILLS A CUT are the badges that make it a decision.
A stone under the loupe
Rarity, how many you hold, and the full five-cut suite at 5/5.
The case
Geodes waiting to be cracked, rarity shelves, counts, and ??? for anything not yet dug.
Character design
I've been a big fan of early internet aesthetic and love pixel art. Artwork from Stardew Valley, PacMan, Mario Bros, The Simpsons Arcade game are all examples that came to mind as I started work. I wanted the artwork to be cute animals in the style of Chibi but make it pixel art. I generated a base set of bodies and accessories using Nano Banano and built a sprite fixer tool so I could layer how each accessory should fall for each character. Then ran a python script to mass generate the different accessory combinations for each. The reason why this ended up being 'old school' is these LLM models are not good at consistency ...yet. Every mass render created some visual nuance that disrupted the look of the character and no amount of prompt maxxing was helping my base. This was the one time my previous NFT skills came to good use.
In the game you can choose your base character (a dog, a raccoon, an armadillo, a gopher, a badger) and accessories that stack on to it: hard hats, headlamps, a gold pickaxe, a diamond one, an explorer pack, a gem pouch, a lucky clover, a crown. Some of these accessories are gated by the gem sets you've achieved.
The customizer
Pick an animal, then kit it out. Accessories are earned by completing collection sets, which is the ladder.
The same screen as the pika
The roster is real, not one animal reskinned.
In place
The framed avatar on the profile.
The rewards
The best part is creating a rewards list that you both agree and work toward. When you've got enough points you can redeem one, and your partner gets notified that they now owe you. Redemptions track whether they've actually been fulfilled, and how many times you've had to remind them. Redeemed rewards take the form of a coupon voucher and you can even text your habit partner the coupon via text to remind them.
The rewards list
What each one costs, and Claim.
What you are holding
Three of yours and two of Lisa’s, each with its serial, the day it was issued, and how many times it has been chased up. Both sides of the ledger on one screen.
Past
Spent ones, stamped and dated. A fancy dinner in July, breakfast in bed before that.
A held coupon
Serial, cost, who is holding it, and the three things you can do with it: text it, set a reminder, mark it used.
Friendship circle
We added the ability to add others are friends - where you can see how long they've held their streak and the gems they have. You can't see your friend's habit list, and they can see yours. You only see high level info in a leaderboard but you can definitely send them a 'Cheers' to encourage them to hit their goals.
The leaderboard
Streak, points and gems per friend. No habits anywhere, which is the point of it.
A friend
Streak, points and gems, and a button to cheer them on. Still no habits — that stays between partners.
The postcard is the distribution
A habit app has a hard growth problem: the thing it does happens in private. Nobody sees you go to bed on time. There's nothing to show anyone, so there's nothing to share, so the only way anyone hears about the app is if you tell them about the app — which is a much bigger ask than sending someone a picture.
The postcard exists to give the private thing an artifact. Your digger standing in a world, your name, the date, how many habits you closed and what your streak is. It's a picture worth texting rather than a text blob, and it goes out the way things actually spread — one person sending it to one other person, because it's about them and not about the product.
Two decisions made it work. The card picks a world you don't choose, walking a deck in order rather than at random, because five cards rolled doubles often enough that random read as "the same postcard again." And the app's name is set in pixel type across the top with a hard drop shadow, so it survives being screenshotted and re-shared out of context.
The part that took the longest was the least glamorous. The digger has to stand on the ground in every world, and there is no ground in general — there's a trail, a bridge deck, a snow shelf at the top of a waterfall, a carved ledge you have to shrink him on so he reads as far away instead of pasted onto the wall. One hardcoded offset only ever matched the first landscape. So I built a tuner: pick a world, drag the digger until he's standing in it, and copy the numbers out.



Indiana Bones
Friday, Sep 5
World
Placement
Drag the digger on the card, or use the sliders.
World(asset: "share_card_bg",
avatarTrailing: 133, avatarBottom: 64, avatarScale: 0.9)Building for an audience of one
I've lived my career focused on building tools for millions of people, many of whom I never get to meet. Sure with user research you can go as deep as a 45 min session would allow and even then you don't really get to understand all layers of psychology that people have when they're using a product you're building. Building for scale is not the point of Sweet Streaks. I was building something for my gf exclusively and making niche adjustments so that it can fit her life better. It's been a great learning experience and I crave making more unscalable tools just to make her life easier.
