Inspiration
Progress toward a long-term goal often feels invisible. You can work hard all week and still feel stuck. Most trackers use streaks and checklists, which can make one bad day feel like failure. We wanted something gentler. You write or talk about your day, and Sprout shows you, in your own words, that you're moving forward. It never makes up progress or squeezes you into a checkbox.
The Enchanted Grove theme fit well. Your goal becomes a grove, each area of progress becomes a tree, and each real piece of evidence becomes a leaf.
What it does
Sprout is a goal tracker built around a journal.
- Set a goal. AI suggests 4–6 Pillars, which are the main areas of your goal. You can rename, add, or delete them before you confirm. Each Pillar becomes a tree.
- Reflect on your day. Type or speak a free-form entry. You can edit dictated text before you save it, just like typed text. There are no habits, forms, or checkboxes.
- AI suggests. Sprout looks for blooms (things you did toward your goal) and friction (things you said got in the way). It also suggests one small next step, called Tomorrow's Lantern.
- Code checks. Every item comes with a quote from your entry, and our code checks that the quote really appears in it. If it doesn't, you never see the item.
- You review. You can edit what an item says, move it to another Pillar, or delete it. You can't change the quote. Nothing counts until you confirm it.
- The Grove grows. Each confirmed bloom becomes a leaf that floats to its tree. Recent friction shows up as a small knot on the tree. Click a tree to see its Evidence Trail: a dated list of what you did and the exact words that back it up.
How we built it
- App: Next.js (App Router), TypeScript, React, and Tailwind
- Grove and animation: custom SVG, with Framer Motion for the bloom-to-leaf moment
- AI: Azure OpenAI (gpt-5-mini) through the Vercel AI SDK, with Zod schemas so the output has a fixed shape
- Voice: Azure AI Speech for dictation. Our server gives the browser a short-lived token, so the API key never leaves the server. The speech library only loads when you press the mic button.
- Grounding: our checker first evens out curly quotes and extra spaces. Then it checks that each quote is an exact piece of the journal. If any quote fails, we retry once and tell the model which quotes failed. Anything that still fails is dropped. We never swap in "close enough" text.
- Database: Supabase (Postgres). We store the journal, the raw AI output, the dropped items, and both the original and final version of each item. Confirming runs as a single database function, so it either saves everything or saves nothing.
Challenges we ran into
- Making the quote check real. When an AI "quotes" you, it often rewords, fixes typos, or merges sentences. We needed a strict check that allows for different quote marks and spacing but never quietly fixes bad evidence.
- Stopping the AI from adding meaning. If you write "I kept putting off my portfolio," the model wants to add "because you felt overwhelmed." We keep it to what you actually said, and you review every item.
- Keeping data consistent. Confirming had to be safe against double-clicks, and nothing unconfirmed or deleted could show up in the Grove. One database function, plus letting the server decide each item's status, solved this.
Accomplishments that we're proud of
- A flow where AI suggests, code checks, and you confirm. Only then does it count as progress. Ask any leaf "Why does Sprout think this is progress?" and the answer is in your own words.
- The bloom-to-leaf animation, which makes confirming feel rewarding.
- Voice journaling that fits into the same flow, so spoken entries go through the same checks as typed ones.
- An app that is kind by design: no streaks, no scores, and no dying trees.
What we learned
- Grounding an AI is mostly about the checks around it. A good prompt helps, but the code is what makes the output trustworthy.
- Be careful what you claim. "Every quote is checked" is true. "No hallucinations" isn't.
- Having a person review each item makes the AI easier to trust, and their edits give us useful data.
What's next for Sprout
- Scale Sprout to work for multiple users
- Make the Grove work well for people who journal for months.
Log in or sign up for Devpost to join the conversation.