How it works
No leaderboard. No launch day.
Project Founder Story is built around one bet: that the useful part of building something is the reasoning, and almost nobody writes it down. Everything below exists to make writing it down worth the effort.
What gets published
Every submission is read by an editor before it is visible to anyone. We are not checking whether the product is good — plenty of the best stories here are about things that did not work. We are checking whether the writing is specific.
A submission that says “we are disrupting the pharmacy space with an AI-powered platform” gets sent back. One that says “the closing technician wrote three things on a sticky note and two were illegible” gets published, even if the product has four users.
Three reactions, not one upvote
A single upvote button collapses four different opinions into one number and then ranks the world by it. Here there are three reactions, each a different claim, one of each per person per project — enforced by a unique constraint in the database, not by hiding the button.
- I believe in this
- You think this maker is onto something worth continuing.
- I would use this
- You are the target audience and you would actually use it.
- Strong story
- The writing behind this project taught you something.
One backing a week
You can back exactly one project per calendar week, across the entire site. A week starts Monday at 00:00 UTC. This is the only signal here that costs you something: to back a project you have to not back five others.
That scarcity is why a backing is weighted highest in the trending score, and it is enforced by a unique index on (user_id, week_key) in Postgres, with the week key written by a database trigger from the server clock — so it cannot be worked around by replaying a request with an older week.
The trending formula
Published in full, because a ranking you cannot inspect is a ranking you cannot trust. It is computed server-side in src/lib/ranking.ts.
1. Count unique signals from the last 30 days
Anything older contributes nothing. There is no all-time score to accumulate.
- Weekly backing
- ×6
- “Would use”
- ×3
- “Believe”
- ×2
- “Strong story”
- ×1.5
- New follower
- ×1
- Published update
- ×2.5
2. Compress with a logarithm
The weighted total goes through
ln(1 + total), so a project with 400 reactions is not ten times a project with 40. Ranking follows momentum rather than the audience a maker already had before they arrived.3. Multiply by how recently they wrote
A 10-day half-life on the last published update, floored at 0.25. A project that has not said anything in a month falls, even with healthy reaction counts. Writing is the behaviour this place is trying to produce, so it is the behaviour ranking rewards.
4. A small, bounded allowance for newcomers
A project published within 14 days gets up to a 35% boost, fading linearly to zero. Enough to be seen; never enough to outrank genuine engagement.
What is not in the formula
Money. The scoring function takes no sponsorship parameter — there is no argument through which paid placement could be passed, which is why this is a property of the code and not a promise in a footer.
Three kinds of prominence, never mixed
- Editor’s pick
- Chosen by an editor for the quality of the writing. Unpaid. One at a time on the homepage, with the editor’s reason shown next to it.
- Trending
- Purely the formula above. Nobody, including us, can place a project here.
- Sponsored
- Sponsorship buys a clearly-labelled slot and nothing else. It does not change your position in Discover, it is not an input to the trending score, and it never affects how many reactions, followers or backings your project shows.
Write the first paragraph.
You do not need traction, a logo, or a launch date. You need to be able to say what problem you picked and why you picked it.
Tell your story