Grow your business. Grow your garden.

Seedful is an Android app I'm designing and building for people who work for themselves. You plan the day with an AI, and each task you finish earns seeds for an illustrated indoor garden. Skip your work and the plants wilt. Skip it for long enough and they die.

Tick a task in the Today card to earn your first seeds.

Go to the garden v1 in development · Android
Role
Product, design, all the code
Built with
React Native, Supabase, Claude
Scale
~44,000 lines of TypeScript
Monday 2 Nov

Good morning, Pippo

20
0%

0 done4 remaining

0seeds today
Today's TasksTap ✓ to finish one
    Pip, the cactus companion

    Morning! No rush. Pick one and let's see what we can grow.

    Spend seeds on plants for your room

    Adopt a plant with the seeds you earned above, then drag it from your inventory into the room. Tap a plant to open its story card, or press and hold to move it.

    Pippo's garden room: sage walls, two arched windows, white shelves, a stool and a terracotta tiled floor

    This is yours. Let's make it beautiful.

    Partly cloudy
    InventoryAdopt a plant to start
      Garden Shop20

      Tap ♡ to pin a plant as your savings goal

      Skip your work and the plants wilt

      During onboarding, Pip asks how strict you want the app to be. Pick a level below, then play through a few days. Each plant has five illustrations: healthy, three stages of decline, and dead. Rest days cost nothing, and Pip can't die.

      Three plants, all thriving. Let's keep it that way.

      Day 1

      Care tools pick one, then tap a plant

      The weather sums up your last 14 active days

      Instead of a score, the room's weather shows how your last 14 active days went. Rest days and empty weekends don't count. Tap a day to change it.

        DonePartlyMissedRest dayNothing planned

        Today's square follows the Today list at the top of the page.

        Last 14 active daysFull sun0%

        Pip turns a brain dump into a plan

        The app makes 12 different AI calls, from the morning briefing to drafting social posts. You can try two of them here: type your day in plain words to get a sorted list, or ask Pip to split a big goal into steps you can schedule.

        Let Pip plan my day

        Describe it in plain language. The AI turns it into a sorted, time-estimated list for you to confirm.

          This demo sorts with keyword rules instead of the AI model.

          Long-term challenge · 3 months

          0%

          0 of 3 steps done

            This demo picks from three prepared plans instead of calling the model.

            Screens from the real app

            I took these on my phone from the development build, the day I adopted my first aloe.

            The server keeps the score

            Seeds work like a bank statement. Every change is a new row, and the balance is all the rows added up. The phone can't give, take or edit seeds by itself. The server checks every change first. Tick a task anywhere on this page and it shows up here.

            Pippo's seedsnewest first
              Balance, every row added up20

              Try to cheat

              • Changing your mind adds a row. Un-tick a task and the seeds come back off as a new line. Nothing is ever edited or deleted.
              • A plant only dies once the server says so. A dropped connection can't kill a plant, and a reward can't pay out twice.

              44,000 lines of TypeScript · 27 server functions · 50+ database migrations · Claude for the AI

              What I've learned so far

              The calendar-week weather was accurate, and it still felt like a punishment every Monday. I switched to the 14-day window because people care more about fairness than precision. Plants can die for good only because Pip doesn't nag and rest days are free. I write each feature as a numbered spec before any code, then use AI to help write it.

              I build business systems on the same rules: the server owns the numbers that matter, and every change to a balance is a new row in a ledger. Tell me about your project →

              Badge unlocked