Anyone building scheduled agent reports should be made to read one sentence of this before starting: "The collector also distinguishes a real zero from an unavailable source, missing configuration and a failed request." Collapsing those four states into 0 is how a dead API key reads as a traffic collapse for a week. From running a similar pipeline against one of your own sources: Search Console deserves a fifth state, "available but not final," because GSC serves fresh dates with partial data that back-fills over the following two to three days, so yesterday's number is real, non-zero, and still wrong. A collector that marks the last few days provisional stops the model layer from narrating a dip that will have healed itself by Friday. Your deterministic-collection, bounded-judgment split is exactly where I landed too, and the Raycast quicklink point is underrated; a report only pays off if opening it costs nothing.
Anyone building scheduled agent reports should be made to read one sentence of this before starting: "The collector also distinguishes a real zero from an unavailable source, missing configuration and a failed request." Collapsing those four states into 0 is how a dead API key reads as a traffic collapse for a week. From running a similar pipeline against one of your own sources: Search Console deserves a fifth state, "available but not final," because GSC serves fresh dates with partial data that back-fills over the following two to three days, so yesterday's number is real, non-zero, and still wrong. A collector that marks the last few days provisional stops the model layer from narrating a dip that will have healed itself by Friday. Your deterministic-collection, bounded-judgment split is exactly where I landed too, and the Raycast quicklink point is underrated; a report only pays off if opening it costs nothing.