DEV Hacktoberfest 2026 · Week 3 · Slow and Steady

SlowStart

  1. This is Slumbrock. He has been asleep for a very long time.
  2. Small steps wake him. Not ten thousand. Fifteen hundred, then a little more.
  3. Win a day and tomorrow's goal doubles. Miss one and it halves. Never to zero.
  4. The way the internet finds its speed. Slow start. Steady wins.
  1. Asleep
  2. Drowsy
  3. Awake
  4. Roaring

The problem

10,000 steps is someone else's goal

On real wearable data, people wearing Fitbits for two months, a fixed 10,000-step goal was met on … of days.

Missing your goal two days out of three is not motivation. It is how people quit. Slow Start gives you a goal you can actually win, then moves it with you.

Each square is one day in a hundred. Lit: the 10,000-step goal was met.

How it works

Four rules, borrowed from the internet

Your phone does not know how fast it can send data, so TCP starts slowly, speeds up while things go well, and backs off when something is lost. Slow Start does the same with your steps.

1

Start tiny

Day one asks for 1,500 steps. Anyone can win that, which is the point.

2

Win, and it doubles

Every win doubles tomorrow's goal until the first miss tells it where your level is.

3

Near your level, it climbs

After that it adds a fixed step per win, 1,500, a number chosen by testing it, not guessing. Steady, like a sloth with a plan.

4

Miss, and it halves

Never to zero, never a lost streak. A smaller goal tomorrow, and the giant is still there.

slow startcruisingmiss: halvemiss: halve
An illustration of the shape, not data. The real line is drawn by the controller below.

Try the controller

Win a few days. Miss one. Watch it adapt.

This asks the real server for each goal. The controller is one of four core functions written by hand for this project; while one of them is still being written, a plain stand-in answers and the widget says so.

Days here are pretend: every button adds one day.

Tomorrow's goal1,500
Slow start

The second limit

Some days are just slower

TCP has two limits: how fast the sender wants to go, and how much the receiver says it can take. Slow Start has two as well. The rules above are the first. The second is TabPFN, an open tabular foundation model, which reads your last weeks and predicts a level you will reach about 7 days in 10. Your goal is the lower of the two.

We tested whether that prediction beats something simple, on held-out days it never saw. On this data, it does not: it is a tie with a plain "your own 30th percentile" rule. We say so here and in the write-up.

Goal met, on days the models never saw

GoalValidationFinalAsks for

The game

Every day, a creature blocks the path

Its health is your goal. Every step you log is a hit. Catch it and it follows Slumbrock home. Parks, waterfronts, streets and gyms each have their own, and somewhere new brings a rare one.

Made for lazy people

The laziest fitness app we could build

You decide nothing

The goal arrives every morning. Weights and reps too, if you lift. You just walk.

Walking is enough

No gym, no problem. An evening walk raises Slumbrock just as well. Built with parents in mind.

Sick? Excused.

Tell Slumbrock you are unwell and the day is excused. Nothing is cut. Code decides that, not the model.

Go somewhere new

Log from a place you have never logged from and a rare creature turns up. Your location stays on your phone.

It talks back

Gemma, an open model, reads a one-line check-in and answers as the giant. It never sets a number.

Your data stays yours

No account. Everything is saved on your device. The server processes each request and keeps nothing.

Why open

Open models, on hardware we run

  • Health data never goes to a closed AI service. Your steps and check-ins reach only our own server, which keeps nothing.
  • No price per call. TabPFN v2 runs on a plain CPU; a goal costs about five seconds of it.
  • Swappable. The predictor and the language model sit behind small interfaces; changing either is one setting.
  • Checkable. The weights, the data and the evaluation script are public, so anyone can rerun the numbers above.
TabPFN v2Prior Labs · Apache 2.0 · predicts the cap
Gemma 3Google · via Ollama · reads check-ins
FastAPIPython · the controllers and the API
Capacitorthe same game as an Android app
Renderwhere the server and the model run