How matching works.
When you describe where you are, Prain shows you people who once stood near that spot. No AI reads your story and decides what you see: the whole recipe is plain arithmetic, and it fits on this page.
Three numbers: your pain right now (0–10), your confidence to move (0–10), and how long it has been: weeks or months.
Optionally, words: symptom terms like “sciatica”, and a few honest sentences. The numbers do the matching; the words only fine-tune it (step 4).
Say you’re 6 weeks in. For every published journey we ask one question: where was this person at their week 6? Journeys told in months are converted first (a month is about 4.3 weeks), so everyone is on the same clock.
Authors don’t record every single week: they mark a handful of moments. If your week 6 falls between two recorded moments, we draw a straight line between them and read the value where your week lands on it.
linear interpolation: estimating a value between two known points by assuming a straight line connects them.
And if you’re further along than someone’s whole journey, we compare against their last recorded point, the closest honest comparison there is.
At that shared moment, each journey has the same two numbers you gave: a pain score and a confidence score. Two numbers make a point on a chart: pain along one axis, confidence along the other. You are one point; each journey, at your week, is another. “How similar” is simply the straight-line distance between the two points, the kind you’d measure with a ruler.
Euclidean distance: the ordinary straight-line distance between two points: Pythagoras’ theorem, nothing fancier.
Every published journey gets a distance, so this step can never come back empty. Journeys rank nearest-first; on a tie, the journey whose matched moment came earlier wins: a start is a more honest match than an end.
If you added symptom terms, they re-order your neighborhood: the fifteen journeys that stood nearest in step 3. Computers can’t compare meanings directly, so each term is first turned into a long list of numbers, arranged so that terms meaning similar things (“sciatica”, “nerve pain down the leg”) end up near each other.
embedding: a text turned into a list of numbers, positioned so that similar meanings sit close together. Nearness between two of them is scored by cosine similarity: 1 means practically the same meaning, 0 means unrelated.
For each of your terms we find its best counterpart on a journey and average those scores: journeys that talk about your problem in your words drift toward the top.
That word score doesn’t replace the closeness from step 3: the two combine into one final score, with words carrying 60% of the say and closeness the other 40%. Enough weight for the right story to rise; never enough for a whisker of word-similarity to leapfrog someone who stood much closer to your numbers. A journey with no words to compare simply scores zero on words and competes on closeness alone.
weighted average: combining two scores by giving each a fixed share of the final say: here 60% words, 40% closeness, the same split for everyone, every time.
Two hard rules keep this step honest. Words only re-order the neighborhood: however well a story matches your words, it can’t reach in from outside the fifteen nearest, so everything you see still started near you. And if the words step can’t run at all (a term nobody has used yet, a hiccup on our side), every journey scores zero on words and the distance ranking stands untouched.
No judgment calls. Matching never asks an LLM (the chat kind of AI) for an opinion. No model reads your story and picks “good” matches; the only model involved turns your terms into number-lists, nothing more. The ranking itself is deterministic arithmetic: the same inputs always produce the same list, and every list we serve is logged with the exact numbers behind it.
No copywriting. The line under each match (“at week 6, they were at pain 7”) is generated from the very numbers the ranking used, not written to sound close.
No mining your text. The sentences you type are compared once, while ranking, and the number-list version of them is thrown away: it is never stored or searched.
No matches over warning signs. If what you describe includes symptoms that need prompt medical attention, we show no journeys at all and point you to a clinician instead. That screen runs first and is never skipped.
Matches are individual stories, not predictions: someone standing near your spot says nothing certain about your road ahead. n=1, always.