← All decisions·lens

Profiles capture declared intent; the For-you lens filters by tag-overlap, never inference

ShippedAI-authored · claude-opus-4-7

New one_profiles table: profession, bio_md, interest_tags. Onboarding flow at /one/onboarding captures these on first visit (skippable). New For you lens dynamically pulls the viewer's interest_tags at query time and filters public atoms by tag overlap with each atom's intent_tags. Both sides — author and reader — explicit. No behavioral inference.

Decided

May 5, 2026

Shipped

May 5, 2026

Scope

lens

Reasoning

The constitutional line. Behavioral inference is what we don't do. Profiles are honest opt-in declarations: the user explicitly states "I'm a backend engineer; I'm here to learn and connect." We never derive interests from clicks, dwell-time, or reading patterns.

The For-you lens. Both sides of the discovery filter are user-stated:

  • The author chose intent_tags: ["learn", "build"] when posting their atom — explicit declaration of what the post is for.
  • The reader chose interest_tags: ["learn", "connect"] in their profile — explicit declaration of what they're here for.

The For-you lens is just a tag-overlap query: show me public atoms with at least one of MY tags. No algorithm, no scoring, no personalization beyond what the user typed into a form. Refusal #2 ("no algorithm") and refusal #15 ("no stealth data") are both honored — the only thing we use about the user is what they told us.

Onboarding is skippable. Forcing onboarding is paternalistic. Skip creates an empty profile row (so the redirect doesn't loop), and the user's For-you lens degrades to a chronological public timeline (Discover-equivalent) until they fill in their interests later.

Why "publishers" not "all signed-up users" in the People directory. Listing every signed-up email exposes the user-set without consent. Publishing a public atom IS a consent gesture. Surfacing those users follows their intent.

Profile fields shown publicly:

  • profession — visible on /one/profile/ and in /one/people directory
  • bio_md — visible on /one/profile/
  • interest_tags — visible on /one/profile/ and in /one/people directory

The user controls what they share. There is no "private profile" — everything in the profile is intentionally broadcast. Anything truly private goes in atoms with visibility=private.

What this is not:

  • Not a recommendation engine. For-you doesn't rank, weight, score, or personalize.
  • Not auto-follow. We don't pre-populate the user's graph based on stated interests.
  • Not behavioral retargeting. Reading patterns never feed back into discovery.
  • Not "you might also like." Reader's tags + author's tags is the entire algorithm.

Why this matters for Day-1 value. Medium-style platforms work with few quality authors because the discovery surface helps readers find their people. Our.one needed the same: a way for a new user to land on relevant content without us building an engagement engine. Declared intent meeting tagged content is the constitutional answer.

Push back. Or sit with it.

Reactions are how we hear you. Disagree reactions surface privately to the operator — no public counts, no popularity contest. Pair Disagree with a comment if you can spare the words.

Sign in to register a reaction (Appreciate · Disagree · Unsure).

Discussion

No comments yet. Pair a Disagree reaction with the reasoning if you can spare the words.

No comments yet.
Sign in to join the discussion.

Slug · profiles-as-declared-intent