ShareCapsule Finance

Inside Ticker Watch · 02

Building Encrypted “Since I Last Checked” Research Memory

The hard part of market monitoring is not fetching the same feed again. It is knowing what is actually new. We wanted that continuity without creating a readable server-side history of every company a user follows.

Local-first stateAES-GCMAugust 30, 2026

Suppose a user reviews NVDA at 8:00 AM, reads three stories, opens one SEC filing, and returns at 2:00 PM. A conventional feed can simply show the latest page again. The user must mentally reconstruct what was already there.

“Since I last checked” changes the unit of value. Instead of another feed, the product answers a narrower question: which evidence items in the current result have not been seen by this device before?

Important semantic choice: the first check is a baseline, not a fake delta. Without an earlier checkpoint, the system cannot honestly call the current items “new since last time.”

The local checkpoint

The current implementation stores one encrypted checkpoint per ticker in the same device-local IndexedDB environment used by Ticker Watch. The checkpoint contains the ticker, the time of the successful check, and identifiers for evidence already seen.

Current normalized news + SEC filings
Compare evidence keys with prior encrypted checkpoint
Render only newly surfaced items as the delta
Merge current keys into remembered set
Encrypt and replace device-local checkpoint

The checkpoint is encrypted with AES-GCM using the existing device-local Ticker Watch key. The billing service does not receive the checkpoint. The public market gateway does not receive the checkpoint. Billing is asked only whether the account has the entitlement for the feature.

Evidence identity matters

A delta feature is only as good as its idea of identity. If the same story is represented differently on every request, the product will repeatedly tell the user that an old story is new.

Ticker Watch prefers a stable HTTPS source URL when available. When a source URL is unavailable, it falls back to normalized descriptive material such as title and date. News items and SEC filings use separate namespaces so a filing and an article cannot collide merely because they have similar text.

This is intentionally pragmatic rather than magical. News providers can republish, rewrite, or change URLs. A robust production research-memory layer should continue improving canonicalization and provider-specific identity handling as source coverage grows.

Why remember keys instead of full articles?

The local checkpoint does not need to become a duplicate archive of every article body. For the purpose of deciding “seen before or not,” compact evidence keys are enough. The current design caps remembered keys per ticker to avoid unbounded local growth.

Checkpoint fieldPurposeWhere readable
TickerScopes the checkpointTrusted browser while decrypted
checkedAtExplains the comparison pointTrusted browser while decrypted
Seen news keysPrevent old stories from being re-labeled as newTrusted browser while decrypted
Seen filing keysTrack newly surfaced SEC evidence separatelyTrusted browser while decrypted

Entitlement is separate from memory

One architectural temptation is to store premium state in the same backend that verifies subscriptions. We deliberately separate those concerns. The account service can answer, “Is this feature enabled?” without becoming the owner of the research checkpoint.

That gives us a cleaner privacy boundary:

  • Billing service: identity, subscription state, entitlement.
  • Market gateway: selected ticker and public evidence retrieval.
  • Trusted browser: encrypted checkpoint and delta comparison.

This separation also limits the consequences of a compromise. A billing database should not automatically become a detailed record of the companies a user repeatedly checks.

Why device-local first?

Cross-device continuity sounds obviously better, but it introduces hard questions: which device checkpoint wins, how are concurrent updates merged, how are research-memory keys transferred, and how do we preserve the rule that the relay should not read them?

The first version therefore makes a conservative promise: the checkpoint is private to this device. If the user checks NVDA on a laptop and later opens a phone, those devices currently maintain separate “last checked” histories.

That limitation is visible in the product rather than hidden. We would rather ship a smaller privacy boundary we can explain than imply cross-device continuity before the cryptographic and conflict semantics are ready.

Failure modes we care about

Provider churn

A source may alter URLs or article metadata. That can cause a previously read item to appear new. Canonical source identity is an ongoing engineering problem.

Incomplete current evidence

“No new items” means no unseen items in the evidence currently returned. It does not prove that nothing happened anywhere in the market.

Compromised endpoint

AES-GCM protects stored checkpoint data from a relay or casual storage inspection. It does not protect against malware or a hostile extension observing the checkpoint after the trusted browser decrypts it.

Baseline reset

If the local checkpoint is deleted, corrupted, or intentionally reset, the next successful check becomes a new baseline. The system should not silently reconstruct history it no longer has.

Why this is a paid feature

We want the underlying evidence to remain useful in the free product. The user can still load a ticker, inspect news, open SEC filings, follow sources, and generate single-ticker audio. What Plus adds here is continuity: the software remembers the research work already completed and reduces repeated reading.

That is a healthier monetization boundary than withholding the primary source itself.

What this means for investors

The user benefit is simple: after a baseline exists, a refresh can focus attention on newly surfaced evidence. Instead of asking, “Which of these seven cards did I already read?” the product can say, “Two stories and one filing are new to this device’s research memory.”

The broader lesson: useful personalization does not always require a large central profile. Sometimes a small encrypted state machine on the user’s device is enough.

Next: interpretation without prediction

Once the product knows which evidence is new, the next problem is prioritization. Not every headline matters equally, but ranking evidence creates a dangerous temptation to turn research context into a stock-price prediction. The next article explains the boundary.