How it works
Say it. Sit with it. Carry it forward.
Upstream is one loop, run as many times as you need it. Nothing here is complicated — the work is in the asking, not in the software.
Step 01Say the thing out loud
There’s no intake form and no mood slider. You open a conversation and describe what you’re wrestling with — a decision, a relationship, a pattern you keep repeating — in whatever order it comes out.
Upstream listens for the part you steered around. Then it asks about that part, once, and waits.
ScreenshotA conversation in progresspublic/shots/chat-midconversation.pngThree questions recur, because they work: what are you not wanting to look at · what would you tell a close friend in this exact situation · what small action could you take in the next 24 hours.
Step 02Wrap up while it’s still clear
When you’re done, Upstream writes back what you named: the thread you were pulling, a small step or two if there’s one worth taking, and the pattern underneath.
If there honestly isn’t a pattern, it leaves that empty. It is specifically instructed not to invent one to fill the space — a made-up insight is worse than none.
ScreenshotThe wrap-up note at the end of a conversationpublic/shots/wrapup-card.pngSteps are written as invitations, never as assignments. “If you want to take a small step”, not “your action items”.
Step 03Come back to it later
What you named waits for you on the dashboard. Open steps come back as a question — How did it go? — with Done and Let it go sitting right beside it.
That’s the whole loop. The first two steps are common. The third one is the reason they’re worth doing.
ScreenshotThe dashboard, carrying forward an open steppublic/shots/carry-forward.pngEvery commitment has an exit. Nothing is held over you and nothing accumulates into a list you start avoiding.
The one setting that matters
How hard it’s allowed to push is yours to set.
Gentle
DefaultMostly reflects and listens. Tentative language — “I wonder if…”. At most one soft open question. It will not push, confront or steer. Subtlety is the goal.
Balanced
Warm and lightly probing. One gentle challenge when it genuinely helps, not as a matter of routine.
Direct
You asked to be challenged, so it names the avoidance and the hard truths plainly. Still kind. Never harsh, never preachy.
The default is the most restrained option on purpose. It’s easier to ask for more directness once you trust something than to un-hear a challenge you weren’t ready for.
An optional technique
Tracing a pattern back to where it started.
Some patterns were installed a long time ago — often before you were twelve. If it fits, and only if it fits, Upstream may ask where a pattern came from: who modelled it, what moment taught it, what it was protecting you from at the time.
It’s offered as an invitation, never as a diagnosis, one question at a time. The instruction it runs on says explicitly that it’s fine to never bring this up in a given conversation — and for younger users it’s softer still, and doesn’t reach further back than makes sense for someone that age.

What carries forward
A hypothesis, not a dossier.
Between conversations, Upstream keeps three things: patterns it has noticed, insights you landed on, and steps you left open. That’s what gets carried into the next conversation — not a transcript, and not a profile of you.
It’s instructed not to recite any of it back at you, and to treat all of it as provisional. When it has you wrong, saying so is enough.
public/shots/memory-patterns.pngOne thing it will not do
On a hard message, it stops.
Every message is checked before it goes anywhere. If it matches a crisis pattern — suicidality, self-harm, overdose — the model is never called at all. You get a fixed block of real resources instead, and the message is flagged permanently as what it was.
That’s deliberate and it isn’t going to change. An AI improvising its way through someone’s worst night is not a feature. The resources it hands back are here, and they don’t require an account.