KITH RESEARCH / MATHEMATICAL MVP 1.1 / 22 JULY 2026

A personal trust graph for email

AI can generate a convincing email for almost anyone. Kith ignores the prose and evaluates the sender's relationship to the recipient. Direct contacts stay warm, strong introductions can reach the inbox, and everyone else remains unverified.

1. Problem

Two forces broke email at once. Spam keeps growing, and AI now writes fluent, personal messages for anyone, so nothing in the text tells you whether a human or an agent is behind it. SPF, DKIM, and DMARC authenticate the sending domain, never whether you wanted the mail.

Kith asks what a sender has earned in your own graph instead. It reads evidence from your mailbox: who you exchange mail with, which of those people also write to the sender, what you did with their messages before, and optionally a task you asked a stranger to complete. Every sender lands in one of three states.

DIRECT

You and the sender already write to each other. Nothing else has to be checked.

Goes to Inbox

SUPPORTED

Two people you write to also write to the sender, and each counts the sender as a real correspondent.

Goes to Inbox

UNVERIFIED

Nobody you write to vouches for the sender. This is not a block, and the sender can still reach you.

Goes to Requests

2. Worked example

Fix a recipient and a non-direct endpoint . Hold the message, the sender, and every edge not incident to constant, and vary only the number of recipient-direct contributors that list at grade E1. Karma and the qualification predicate move independently, which is the property section 4 formalizes.

Raw proximity is identical to twelve significant figures across all three rows by construction. The topology fixes every edge that determines , so the table isolates the support coordinate and nothing else.

SUPPORTERSRAW PROXIMITYKARMATIERQ(s)
196.367.4UNVERIFIED0
296.381.9SUPPORTED1
396.389.1SUPPORTED1

Karma is monotone in supporter count while is a step at two. A single supporter reaches karma 67.4 without qualifying, so no karma threshold reproduces the predicate. A reader who wants this argument without the formalism should read the explainer instead.

3. Graph construction

You collect the lists that reach you, check the signatures, and compute your own answer locally. Ari can say "I write to Sam." Ari cannot say "Sam writes to me," and Ari certainly cannot say anything about your relationship to Sam. That restriction is what stops a stranger from writing themselves into your graph.

  1. Compile metadataFrom, To, Cc, timestamps, thread structure, replies, and recipient actions. No subject or body.
  2. Create scoped aliasesThe same person uses a different public-key alias in every recipient graph.
  3. Publish owned rowsA participant can assert only its own outgoing relationships.
  4. Run local PageRankRestart mass stays anchored to the recipient, so every recipient gets a different ordering.
  5. Assign a tierDirect, capacity-supported, unverified, or blocked.

One score per recipient

The restart vector is pinned to you. Another recipient starts from another seed and gets another ordering. Kith never publishes one karma number for an email address.

Distributed inputs, local decision

Participants sign their own rows. No participant can write an edge on your behalf or on another participant's behalf. The final graph and score remain inside the recipient's namespace.

4. Ranking and qualification

The gap matters most in a small graph. If you have three contacts and one of them vouches for a stranger, that stranger can score high simply because there is little else in the graph to dilute them. So a high score in a sparse graph proves little, and Kith counts a warm introduction only after two independent vouches. Each equation below is one step of that calculation.

Recipient-seeded Personalized PageRank

(1)

The solver uses L1 convergence with an alpha-dependent iteration bound. It returns no ranking when the requested tolerance is not reached.

Fresh rows transmit more trust

(2)

Each row is normalized first. Freshness is applied second. Probability that a stale row no longer transmits returns to the recipient seed.

Recipient-relative karma

(3)

Karma is a bounded display and ordering coordinate. It is not a probability, a public reputation, or an absolute qualification threshold.

Finite support allocation

(4)

Each direct contact has at most one freshness-adjusted unit. Adding more subjects to the row divides that unit. Support follows the signed relationship weights.

Capacity-bounded warm introduction

(5)

A non-direct sender needs two distinct recipient-direct supporters. Each supporter must allocate at least 0.10. A positive listing below that threshold affects ranking but does not count toward SUPPORTED.

Finite qualification bound

Every qualified subject consumes at least 0.20 total allocation across two supporters. Two fully fresh supporters can jointly qualify at most ten equal-weight non-direct subjects at one time.

Executable decision

RANK_FOR_RECIPIENT(r):
  verify each participant-owned row
  normalize E1 and capped E0 transition shares
  apply row freshness and return missing mass to r
  solve recipient-seeded PageRank to L1 tolerance
  compute recipient-relative karma
  allocate finite support from direct contacts

  if sender is direct:
      return DIRECT
  if at least two allocations are each >= 0.10:
      return SUPPORTED
  return UNVERIFIED

5. Results

These are deterministic constructed graphs. They show what the implementation does under a specific attack, which is not the same as showing what it would do to real mail. No number here is a claim about inbox accuracy.

Support flood regression

LISTED BY EACH SUPPORTERALLOCATION EACHMAX KARMAQUALIFIED SUBJECTS
11.00074.71
100.10020.010
110.09118.70
2000.0051.40

In the 200-subject flood, each supporter allocates 0.005 to each stranger. The graph still ranks them at low karma, but zero become warm introductions.

Solver convergence

alpha 0.05
553 / 561 iterations
alpha 0.15
175 / 183 iterations
alpha 0.30
80 / 88 iterations

Every residual is at or below 1e-12.

Freshness trajectory

day 0
karma 59.5
day 7
karma 28.7
day 14
karma 9.3
day 21
karma 2.4
day 29
karma 0.5

Stale rows lose transmission continuously before expiry.

Boundary-path simulation

A second constructed experiment contains 20 primary-region aliases and 100 secondary-cluster aliases. Internal density creates no recipient-seeded mass without a boundary path.

BOUNDARY SUPPORTERSREGION MASSMAX KARMAQUALIFIED
00.0000000.00
10.06608117.80
20.13132235.41

6. Proof-of-Value

Passing the task does not add anyone to your graph and does not raise anyone's karma. It creates a separate, narrower reason to open one message.

RECIPIENT REQUIREMENTVERIFIEREVIDENCE CREATED
Improve a public repositoryTests plus signed commitA working artifact
Find a viable parcelPublic records and recipient rulesA reproducible match
Leave a public commentAuthenticated platform eventAction completion, usually low value
Post a refundable attention bondPayment receiptMoney placed at risk

Cheap tasks are easy for agents to mass-produce. The requirement must consume something scarce or create something the recipient actually wants. Proof-of-Value is an extension, not a substitute for the trusted graph.

7. Limitations

It does

  • Compute a different sender ordering for every recipient.
  • Separate direct, capacity-supported, unverified, and blocked relationships.
  • Use headers and recipient actions without message content.
  • Conserve PageRank mass and refuse non-converged output.
  • Bound the number of categorical introductions created by finite support.

It does not

  • Detect whether a human or an agent wrote the email.
  • Prove that every endpoint belongs to one unique human.
  • Prevent two genuinely trusted accounts from coordinating.
  • Bind graph aliases to Gmail or Outlook accounts yet.
  • Provide live snapshot discovery or transport yet.

READS

From, To, Cc, timestamps, thread identifiers, reply structure, and recipient actions.

NEVER READS

Subject lines, message bodies, attachments, or content-derived AI scores.

8. Further work

  1. Mailbox bindingBind a recipient-scoped alias to control of an email account without giving the graph engine message content.
  2. Snapshot transportLet contacts exchange signed relationship rows inside one recipient namespace.
  3. Connected pilotRun the system with a consenting group that actually emails one another.
  4. Parameter calibrationMeasure whether 0.10 support, two paths, and seven-day row freshness match real recipient judgments.
  5. Proof-of-Value verifierTest one narrow challenge type for legitimate strangers with no graph path.

Research basis

  • Page et al. PageRank, recipient-seeded here as Personalized PageRank.
  • Haveliwala. Topic-Sensitive PageRank.
  • Garriss et al. Re: Reliable Email, signed friend-of-friend email attestations.
  • Mislove et al. Ostra, trust-link credits for unwanted communication.
  • Nasrulin, Ishmaev, and Pouwelse. MeritRank.
  • Kukkala and Iyengar; Sangers et al. Distributed and multiparty private graph analysis.