Sometimes it's really helpful to create a smaller version of a real table to understand really long-running queries. We're lucky that our primary table activity_stream doesn't use external foreign keys, so we can make a smaller copy of it to try things out. Though with any performance work, always be sure any changes scale up to the 'real' version as expected.
CREATE TABLE narrator.activity_stream_debug (LIKE narrator.activity_stream INCLUDING INDEXES);
INSERT INTO narrator.activity_stream_debug
SELECT
*
FROM
narrator.activity_stream
WHERE
ts > '2021/05/01'::date;