© 2026 Carmen Hernandez

AboutCarmenOS
Carmen HernandezI made a habit tracker that pays out in gems, not streaks
  1. Home
  2. Writings
  3. I made a habit tracker that pays out in gems, not streaks
August 11, 2026

I made a habit tracker that pays out in gems, not streaks

DesignGame DesigniOSSide Quest

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.

Loading the builder…

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.

Sweet Streaks

Indiana Bones

Friday, Sep 5

4/6habits
+45points
8day streak

World

Placement

Trailing133pt
Lift64pt
Scale0.90

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.

Indiana Bones and Pika Ravenwood, in a fedora and a hard hat

Editing · gem pouch 2