PocketPanda 🐼
The AI that says no.
Every productivity tool on the market competes on the same axis: more tasks, more tracking, more dashboards, more nudges. PocketPanda is built on the opposite bet: the thing paralyzing an overwhelmed person isn't a missing feature, it's the size of the list itself. So instead of giving you more, PocketPanda's panda has a limited daily energy budget. It breaks your problem into 2-4 tiny missions, hands you the easiest one first, and then, visibly, in character, refuses to give you more once it's tired. It sends you to rest instead.
Inspiration
The idea came from a specific, familiar moment: staring at a syllabus, an inbox, or a messy room at 11pm and closing the laptop instead of starting. Every existing tool, task managers, AI planners, habit trackers, responds to that moment by handing back more structure: more subtasks, more categories, more streaks to protect. For someone already frozen, that makes the mountain feel taller, not smaller. We wanted to build the one productivity tool whose entire personality is built around doing less, on purpose, as an act of care, and to make that a real mechanic, not a marketing line. Pandas are famously low-energy animals that conserve and rest, so we gave our panda a literal energy budget tied to that trait instead of just using it as a cute mascot.
What it does
- Type whatever's overwhelming you, a syllabus, a messy room, an inbox you've been avoiding, no signup, no setup.
- A two-step AI pipeline reads how overwhelmed you actually sound, plans a mission count and "energy cost" for it, then drafts 2-4 tiny, sized missions. The first one is always the smallest possible action.
- Where it's relevant, the panda drafts the actual message for you (an email, a text, an apology), copyable or one click from opening in your real mail client.
- Every request costs the panda energy. Ask for more once it's out, and it refuses, in character, every time, verified reliable across dozens of live trials, and sends you to rest instead of erroring or endlessly complying.
- Completed missions grow a bamboo grove, the only progress mechanic in the whole app. No streaks, no guilt, no penalty for a missed day. The grove can be shared as a downloadable image.
- Energy genuinely resets once a real calendar day passes, revealed with a small animated moment: the panda visibly "waking up" recharged.
- The whole experience opens with a hand-illustrated, scroll-driven cinematic intro. The same painted panda character leads you through a bamboo forest at night, built from Higgsfield-generated art chained across shots for character consistency, dissolving directly into the working app.
How we built it
- Frontend: React 19 + Vite, hand-written CSS, no UI framework.
- The AI: a genuine two-step pipeline on Groq (Llama 3.3). A fast planning call reads the raw problem and commits to an overwhelm level, mission count, and energy cost before any mission content exists. A second call drafts the missions conditioned on that plan. Both calls use forced structured tool-calling, so a malformed response is structurally impossible, not just caught after the fact. A silent validation-and-retry guardrail sits behind both.
- The art: four Higgsfield-generated storybook plates, each chained from the same reference image so it's provably the same panda character across every shot, composited into a GSAP + Lenis scroll-driven film with Ken Burns motion, drifting mist, and wandering fireflies. Everything is GPU-composited, benchmarked at a flat ~17ms per frame.
- Backend: a single Vercel serverless function proxies the LLM calls so
the API key never reaches the client, mirrored by a Vite dev middleware so
local development never needs
vercel dev. - State: React Context + localStorage. No database, no auth. A deliberate scope decision, not a limitation we ran out of time on.
- Deployed: live on Vercel, connected to GitHub for continuous deploys.
Challenges we faced
- Getting an LLM to reliably say no. The hardest part of this build wasn't a feature, it was tone: making a model refuse convincingly, in character, without ever sounding like an error message or a guilt trip, and doing it reliably, not just on a lucky prompt. We tested the refusal path dozens of times back to back to be sure it never silently degraded.
- A scroll-driven cinematic intro that doesn't get in the way. Early versions forced every visitor through a five-screen scroll before reaching the actual product. Great the first time, actively hostile on a second look. We had to build real logic around it: an unmissable "skip the story" CTA visible from frame one, and full auto-skip for any browser that's already visited, while keeping the full film for first impressions.
- Chaining AI-generated art into one consistent character. Getting the same panda across four independently generated shots, not four different pandas that vaguely resemble each other, took careful reference-image chaining and several regenerations to catch continuity breaks. We caught and fixed a double-exposure crossfade glitch between two shots before it shipped.
- A subtle but real UX bug we almost missed: after a refusal, the app silently bounced users back to a blank input screen with zero memory that a refusal had just happened, inviting an instant, doomed retry. We caught it and fixed it with an honest low-energy reminder instead of a hard block, since a small enough ask can still succeed.
What we learned
That the hard engineering problem in an "AI wellness" product isn't the model call, it's restraint. Anyone can prompt an LLM to generate more. Getting it to consistently stop, in a voice that feels caring rather than broken, and proving that reliability instead of just claiming it, was the real work. We also learned that a beautiful first impression is a liability if it isn't paired with an equally considered way to get past it. The scroll film taught us that delight and friction are the same mechanism pointed in different directions.
Accomplishments we're proud of
- A refusal mechanic that's genuinely reliable, not just demoable once.
- The same illustrated character, consistent from a hand-drawn submission card through a four-shot cinematic film to a live in-app avatar. Nothing reused as a generic stock mascot.
- Zero known bugs at submission time, verified through live testing on the actual deployed URL, not just localhost.
- A real architectural upgrade (single call to two-step reasoning pipeline) made because early feedback said it wasn't sophisticated enough, not because a rubric demanded it.
What's next for PocketPanda
Panda "moods" that shift gently based on how often someone returns (never punitive), calendar-aware missions so the panda can be time-aware without the user typing everything out by hand, and native mobile share sheets for the grove card instead of a plain download.

Log in or sign up for Devpost to join the conversation.