Measure active attention
I count visible seconds and scroll depth because clock time overstates engagement whenever a tab sits idle.
AI-enabled RSS reader
I built Sitrep because my subscriptions described an aspirational reader, while the articles I actually finished described the reader I was.
Summarizes articles from subscribed feeds, recommends what to read, skim, or skip, and brings the most relevant coverage together in The Brief, a daily synthesis shaped by my work and interests.
The problem
My feed reader kept growing even when I was reading every day, with repeated coverage of the same story sitting beside material I had opened, skimmed, finished, or ignored as if those actions carried the same signal.
I needed the ranking to learn from observable behavior without letting an idle tab or passive scroll impersonate attention.

Production capture, 2026-08-30.
The approach
Each enriched article or feed entry gets a plain-language summary of what happened and why it matters, key points, and caveats about the source. I can understand the substance before deciding whether to open the original, while keeping the article available when I need the full context.
Alongside the summary, Sitrep recommends Read, Skim, or Skip and gives a short reason. Read points to substantive reporting, useful analysis, or material directly relevant to my work. Skim identifies useful awareness where the headline and main points carry most of the value. Skip flags repetitive, promotional, or low-substance coverage. The recommendation helps me allocate attention; I make the reading decision.
The Brief brings ranked recent coverage together into a daily synthesis with source links. It connects developments across defense, aerospace, AI, and technology, identifies possible implications for my work and personal interests, and closes with a Worth Your Time shortlist explaining which originals deserve a closer read. Each update retains a separate revision, so I can return to what the briefing said at the time.
Sitrep also learns from what I actually do. Active, tab-visible reading time and scroll depth inform behavioral labels and reading-speed estimates, while ranking combines recency, feed and topic affinity, length, and seen state. Background enrichment summarizes and tags incoming articles and removes semantically duplicate coverage.
Design decisions
I count visible seconds and scroll depth because clock time overstates engagement whenever a tab sits idle.
Every Read, Skim, or Skip recommendation includes a short rationale, with source caveats alongside the summary. I can judge whether the recommendation fits what I need from the article.
The AI recommendation records what may deserve my attention. Reading signals record what I actually read, skimmed, or ignored. Keeping those separate prevents a recommendation from counting as evidence of engagement.
I update the reading-speed estimate only from high-confidence reads, which keeps abandoned and background tabs from corrupting future estimates.
I retain each briefing revision with its source article identifiers and reader-profile metadata. Updating the current view preserves the earlier artifact, making changes inspectable.
I use embedding similarity to catch the same story across feeds even when the headlines and wording differ.

System output against fabricated inputs; no employer data.
Method: see How the evidence was made.Ranking thresholds
What remains unproven
The ranking reflects one person’s observed behavior and can reinforce existing attention patterns. Discovery still needs deliberate exploration so the feed doesn’t become an echo of what I already read. The Brief synthesizes article summaries, so a saved, source-linked briefing is not proof every inference is correct or that it improved a decision.