Instagram has no relationship ledger - your export does
Reciprocity debt, decay and the silent bookkeeping of friendships - what psychology says about keeping score, and how measured exchange over time shows up in an archive Instagram never shows you.
Psychology has studied reciprocity for a century: we track (unconsciously) who
gives and who returns, and unmatched giving registers as debt or drift. Social
platforms give you none of that view - a feed flattens every exchange into
"delivered". Your export does not: message rows carry sender and timestamp, so
the ledger - balance, reply rates, gaps, decay into staleness - can be
reconstructed per person, entirely on your device, without telling you how to
feel about any line in it.
Every long relationship keeps a ledger nobody writes down: texts sent versus
returned, calls initiated, birthdays remembered, the slow slide from daily to
weekly to "we should catch up". You do not choose to keep it - the ledger keeps
itself, and then one day you know something has changed before you can say
why.
That knowing has a research history. Anthropologists call the underlying norm
reciprocity - the near-universal expectation that giving is returned, the
foundation of social exchange theory.1 Psychologists showed the
mechanism is felt as a kind of debt: unreturned favours produce diffuse
unease, and people will pay real cost to clear an imbalance.2 And
sociologists watching friendships decay describe predictable stages - latent
ties, norms of withdrawal, drifting apart by absence rather than by
quarrel.3
Instagram shows you almost none of it. The messages exist; the ledger view
does not.
What a ledger is made of
Strip the psychology to measurable components and each one maps onto a field
in the export:
| Ledger concept | Evidence in the archive |
|---|---|
| Who gives | Sender tag on every message row |
| How much | Message counts per direction per person |
| How quickly | Reply gaps - hours between their message and yours, and back |
| When it changed | The timeline: recent rate versus prior rate |
| Whether it decayed | Last-tie date against staleness cutoffs |
| Who is still on the books | Graph lists: followers, following, close friends |
Nothing here is sentiment. "You sent 62% of the messages in this conversation"
is arithmetic over sender fields; "they hurt you" is not in the file and will
never be computed. The ledger shows the exchange, in units and windows.
How the product keeps it
- Balance and reply rhythm per person. The engagement computation derives
message balance (how close the two sides' counts are), median reply time in
each direction, and reply rates over recent versus prior windows - the raw
material of "is this reciprocal, and is it changing".4 - Decay, cut off at declared constants. Relationship staleness uses
explicit cutoffs - 180 days for stale, 365 for very stale - so "fading" is a
date comparison, not a vibe.5 The re-engagement set is simply:
mutual ties with strength greater than zero whose last exchange is past the
cutoff.6 - The directory as ledger index. One row per person: which lists they are
on, their tier, last exchange, searches - sorted by whatever column you
choose, never pre-sorted by a judgement.7 - Ask-anything as lookup. "Who did I message most in 2023" runs as
retrieval over the same rows, with the same no-meaning rule.8
Notice what the tiers refuse to be: they are names for measured states
(inner, active, fading, ghost, silent-fan, lost - or core, active, at-risk,
casual, dormant on the engagement side), not verdicts on the people in them. A
fading tie with a former best friend and a fading tie with a former colleague
receive the same label because the file cannot tell them apart - and the app
does not pretend otherwise.
Reading your ledger without weaponising it
- Windows before totals. A ten-year conversation will always show more
messages from one side. Recent-versus-prior rates say more about the
present relationship than lifetime sums. - Absence is not rejection. The decay cutoffs label time since exchange
- the sociology of drifting apart predicts exactly this pattern without any
malice on either side. Nothing in the file can attribute cause.
- the sociology of drifting apart predicts exactly this pattern without any
- Balance is not obligation. One-sided periods are normal: illness,
exams, new babies, bad years. The ledger shows the period; you supply the
context, and the app never contradicts you. - Silent-fan and ghost describe data, not people. Graph presence with no
exchange is a category of record. Whether it is comfortable, sad or
perfectly fine is not the software's call to make.
The whole exercise stays on your machine - the analysis engine makes no
network calls, so the ledger you read about your closest relationships is
computed, read and forgotten inside one browser session unless you decide
otherwise.9
Is the app keeping score of my friendships?
It keeps evidence: counts, gaps, rates and dates per person, plus the graph
lists they sit on. The tier labels are names for measured states, not grades -
and no composite ranking of people exists anywhere in the product. What you
conclude from the evidence is yours; the software's contract is only that the
evidence is accurate and local.
Someone's tier says 'fading' - should I reach out?
The tier says their last exchange with you is older than 180 days while the
tie still exists - a date comparison, nothing more. Whether to reach out
depends on things the file does not contain: your history, your context, what
happened in between. Plenty of fading ties are fine. The label exists so you
can notice if you want to, not so you get a task.
Why does 'at-risk' exist if there's no prediction?
At-risk describes a measurable drop: their recent reply rate fell below 30% of
their prior rate with over 21 days of silence. Everything about it is past
tense. The name sounds forward-looking, but the rule reads only historical
message rows - no forecast is computed anywhere in the product, and Compare's
own copy disclaims prediction.
Can you measure reciprocity in likes and comments too, not just DMs?
Message exchange is where per-person two-way measurement is strongest - sender
tags and timestamps make it exact. On the public layers (reactions, comments,
story activity) the archive carries your side richly and received events where
the platform provides them, so reciprocity there is shown as what the files
support, never padded out with inference.
Related reading
The relationships post for the complete inventory of connection files and
strength tiers; the messages post for how conversation rows are parsed and
what sender fields carry; the follow-doesn't-mean-care post for the graph layer
that sits underneath the ledger.
1: Mauss, M. - The Gift (1925) and the reciprocity tradition in
anthropology; cited as research framing for the universality of exchange
norms.
2: Gouldner, A. - "The Norm of Reciprocity" (1960), and later social-
psychological work on imbalance as felt debt; cited as framing.
3: Altman, I. and Taylor, D. - social penetration / withdrawal stages of
relationship decay; and Feld's work on socially caused forgetting - cited as
the research background for drift-by-absence.
4: packages/shared/src/analytics/engagement-intel.ts:110-168 -meToThem/themToMe reply-gap arrays, balance computed as1 - |mine - theirs| / total, medianReplyHours, recent-vs-prior rates.
5: relationship-insights.ts:10-12 - STALE_DAYS = 180,VERY_STALE_DAYS = 365.
6: relationship-insights.ts:314 - re-engagement set: mutual ties
with strength > 0 whose daysSinceLastTie >= STALE_DAYS.
7: apps/web-next/src/views/Accounts.tsx - per-person ledger index
columns, filters and sorts.
8: packages/shared/src/ama/intents.ts - conversational retrieval over
messages; ama/tone.ts - the no-inference answer contract.
9: SECURITY.md section 1 - local-first posture: analysis engine makes
zero network calls.
Footnotes
- anthro
- debt
- decay
- intel
- stale
- reengage
- accounts
- ama
- local