An observation is one read of an agency's or freelancer's public Upwork page by Upwork Insights, recorded with the time of reading and the figures the page showed at that moment.
Every record in the index is a series of observations rather than a single page. The first read creates the record; each later read adds a snapshot holding the handful of fields that move: total earned, Upwork's own recent-earnings figure where the directory card carries one, billed hours, jobs, the Job Success Score, the badge and the hourly rate range. At most one snapshot is kept per day, so re-reading a page twice on the same day adds nothing. An observation comes from a live read of the page or from an archived capture; the source is stored with it, and the agency page marks archived rows in its observation history.
Observations are what make growth measurable rather than guessed. The run-rate is the difference in total earned between two observations at least 14 days apart, annualised; with only one observation the page says "pending" and the Index Score falls back on recency. Each agency page shows when it was last observed, and the index summary records the earliest and latest observation across all agencies.
An observation is not a scrape of a client list or a signed-in view: it reads exactly the fields the public page renders for an anonymous visitor, from the same data the page renders from, and nothing else. If Upwork hides a figure, the observation records that it was hidden.
How Upwork Insights uses it
The 28,921 agencies indexed as of Oct 31, 2026 are re-read on a rolling schedule, claimed pages weekly, and every agency page lists its full observation history with the change in earnings between rows. What is read from each page is set out in methodology, section 1.