What Weirling collects, and why

Weirling ranks articles by how you actually read. That means it records what you open, how far you read, and what you rate. Here is every field, in plain language. Nothing is sold, shared with advertisers, or sent to analytics companies.

Your controls

On a self-hosted instance, the person who runs it holds this data, on their own server.

What you did with each article

One row per article you opened, saved, rated or skipped.

How long: Kept while your account exists. After 90 days (TELEMETRY_RAW_RETENTION_DAYS) the two finest-grained fields, scroll depth and active reading time, are cleared; completion, ratings and saves stay because your interest map is built from them.

What you did with each article: fields
FieldWhat it isWhy
idA random record number.Database bookkeeping.
user_idYour account.Links the record to you and to the article.
content_item_idThe article.Links the record to you and to the article.
prs_scoreThe score the article had for you when it was shown.To check later whether the ranking was right.
was_suggestedWhether it was a discovery pick from outside your sources.To learn which discoveries you like.
surfaced_in_digestWhether your digest showed it.To tell digest reading from browsing.
opened_atWhen you first opened it.Reading habits, such as the best time to send your digest.
read_completion_pctHow much of it you read (0 to 100%).The main signal: finished articles teach the ranking most.
time_on_page_secondsSeconds the reader page was open.A rough reading-time signal for older clients.
scroll_depth_pctHow far down you scrolled.Part of the completion estimate. Cleared after 90 days.
active_time_secondsSeconds you were actively reading (not idle, tab visible).Part of the completion estimate. Cleared after 90 days.
reached_endWhether you reached the end.A strong sign you finished it.
re_read_countHow often you came back to it in a later session.Re-reading is a strong sign of value.
explicit_ratingYour thumbs up or down.Your direct feedback to the ranking.
explicit_rating_reasonThe reason you picked (e.g. too basic, off-topic).Adjusts the ranking in the way you asked.
savedWhether you saved it.Saves are a strong positive signal and fill your saved list.
saved_atWhen you saved it.Ordering your saved list.
saved_read_atWhen you finished a saved article.Learning whether saving leads to reading.
sharedWhether you shared it.A positive signal.
skippedWhether you skipped it.A negative signal.
graph_signal_appliedHow much of this record has already updated your interest map.So the same read is never counted twice.
tagsTags you gave a saved article, or that came with an import.Organising your saved list.
created_atWhen the record was created.Database bookkeeping.
updated_atWhen it last changed.Database bookkeeping and the 90-day clean-up.

What your digest showed you

One row per article placed in a digest, with the numbers behind its position.

How long: Deleted after 90 days (TELEMETRY_RAW_RETENTION_DAYS). Before deletion they are folded into daily counts per digest section that contain no user at all.

What your digest showed you: fields
FieldWhat it isWhy
idA random record number.Database bookkeeping.
user_idYour account.Links the record to you and to the article.
content_item_idThe article.Links the record to you and to the article.
digest_idWhich digest it was in.Grouping by digest.
sectionThe digest section (top reads, discover…).Measuring each section.
positionIts place in the digest.Correcting for 'people read the top item more'.
scoreIts ranking score.Learning how to rank better for you.
features_jsonThe signal values behind the score (topic match, source trust…).Learning which signals matter to you.
weights_versionWhich version of the ranking model scored it.Comparing model versions fairly.
explorationWhether it was a deliberate 'try something new' pick.So exploration doesn't bias the learning.
propensityHow likely that pick was.Correcting for exploration when learning.
viewedWhether you opened the digest it was in.An item in a digest you never opened isn't counted as ignored.
teamWhich ranking chose it, in a head-to-head test digest.Measuring whether Weirling's ranking beats newest-first.
shown_atWhen it was shown.Timing and the 90-day clean-up.

Your digests

One row per digest built for you.

How long: Kept while your account exists, so you can look back at past digests.

Your digests: fields
FieldWhat it isWhy
idA random record number.Database bookkeeping.
user_idYour account.Links the digest to you.
generated_atWhen it was built.Showing the right digest and your history.
delivered_atWhen it was emailed, if it was.Not emailing the same digest twice.
delivery_methodIn the app or by email.Delivery bookkeeping.
section_countsHow many items each section had.Showing the digest layout.
openedWhether you opened it.Learning your digest length and send time; pausing nudges.
total_itemsHow many items it had.Skipping near-empty emails.
created_atWhen the record was created.Database bookkeeping.
updated_atWhen it last changed.Database bookkeeping.

Product events (hosted service only)

On the hosted service, one row for each of these moments: signing up, finishing onboarding, adding sources, a digest being sent or opened, opening or finishing an article, rating, saving, answering 'how many of the top 5 did you want?', subscribing and cancelling. Self-hosted instances record none by default (PRODUCT_METRICS), and nothing is sent to any third party.

How long: Kept while your account exists and deleted with it. Daily totals with no account attached are kept for trends.

Product events (hosted service only): fields
FieldWhat it isWhy
idA random record number.Database bookkeeping.
user_idYour account.Counting readers rather than clicks, and deleting your events with your account.
eventWhich moment it was, e.g. digest opened.Measuring whether the product works: weekly satisfied readers, retention, time to a first good digest.
propsA small detail: the plan, a count, or your top-5 answer. Never article titles or text.Telling those measurements apart.
created_atWhen it happened.Weekly and daily totals.

Everything else

Cookies and browser storage

Weirling uses only what it needs to sign you in, keep your account safe and remember your settings. There are no analytics, advertising or tracking cookies, and nothing from other companies, so there is nothing to consent to and no banner.

Cookies and browser storage
NameTypeWhyHow long
rp_accessCookieKeeps you signed in. httpOnly, so page scripts cannot read it.Minutes; renewed while you use the app.
rp_refreshCookieRenews your session without a new sign-in. httpOnly, sent only to the sign-in endpoints.Until it expires (days) or you sign out.
rp_csrfCookieProtects your account against forged requests from other sites. httpOnly.Same as the session.
rp-session-seenLocal storageRemembers that this device was signed in, so the app opens offline.Removed when you sign out.
reader-font-stepLocal storageYour reader text size.Until you clear site data.
reader-themeLocal storageYour reader colour theme.Until you clear site data.
install-prompt-dismissedLocal storageStops the 'install the app' hint coming back.Until you clear site data.
readprism-v2Offline cacheApp pages and articles you opened, so they work offline.Replaced on each app update.