Sidequest
A quest system that builds one doable action from interests, time, and place, then remembers what you actually did so the next one is not a repeat.
- Type
- Cross-Platform
- Role
- Creative Technologist
- Built
- -
- Updated
- -
- Source
- GitHub
Tech stack
- React Native
- Expo
- TypeScript
- React Native Web
- Supabase
- PostgreSQL
- AI
- Reanimated
What if an assistant didn’t tell you what to consume next, but gave you something worth doing?
One quest, sized to the time you have.
Another thing to watch
- Another video.
- Another song.
- Another post.
- Another article.
Recommendation systems are built to keep a session going. Sidequest refuses that job. The question on the screen is what to do once the phone is down.
A vague wish to make something becomes one action with a time, a place, and the materials it needs. The page stays thin so it cannot become the afternoon.
A quest is an object
A Sidequest is not an AI paragraph. It is a structured experience: an activity, a category, a difficulty, a time, the materials it needs, and a creative objective.
The quest engine decides what is valid. The model only fills variation inside that shape. An open prompt can sound like a plan. A quest can be done today.
type Quest = { activity: string category: string difficulty: 'easy' | 'medium' | 'stretch' minutes: number materials: string[] environment: string objective: string} // The engine rejects a quest before it is shown.// The model never gets to invent the shape.Memory of what you did
Memory is not a chat log and it is not a journal. It records experiences: what was tried, what was discovered, what was avoided.
That record is the only thing the next quest is allowed to learn from. Street photography can become a night walk. A long indoor task can stay off the list.
Tried Street photography Discovered Shadows and architecture Skill Manual exposure Avoided Long indoor activities Next A night photography quest
One question on screen
The loop is short: discover, accept, do, complete, remember, return. The screen asks one question. What should I do now?
Navigation stays at Today, a central New Quest, and Progress. Explore, Memory, Groups, and Profile sit behind that, not in front of it.
Discover → Accept → Do → Complete → Remember → Return
The hard part
A generated quest still has to be worth doing
The hard part was never calling a model. It was deciding whether the quest was actually worth doing: actionable, safe, varied, and fitted to the time and place a person has.
Solution
Generation, validation, personalization, and presentation stay separate. The engine sets the constraints. The model varies the quest inside them. A response is not shown until it passes.
Trade-offs
| Decision | Choice | Why |
|---|---|---|
| Content | Structured quest data | More predictable than a free-form reply. |
| Navigation | Three primary items | The action matters more than a dashboard. |
| Progress | Quests, skills, categories | Activity, not points. |
| Memory | Experiences | So this does not become a journal. |
| Interface | One build, phone and browser | The product is used while moving, and reviewed later at a desk. |
What I’d change
- Stronger sense of where the person actually is.
- Richer offline behavior, for a day with no signal.
- Better difficulty calibration.
- Deeper group quests, and chains that last more than one day.
What people assume
So this is a productivity app?
It has a next action, and that is where the resemblance ends. A quest is something to try - a night walk, a roll of film, a drawing with the materials already in the room - not a task to clear.
Does the model just invent the afternoon?
It fills a shape the engine already accepts: activity, difficulty, minutes, materials, environment, objective. An open prompt can sound like a plan. A quest can be started.
Will it ask how I feel?
It asks what you tried, what you found, and what you want to avoid next time. Mood is not a field. This is not a therapy product.
