great work! When it comes to batched computations, why not leverage intermediate state much like streaming jobs. For example, if we need to calculate past 30 day sum for a value daily - it seems like this would compute so from scratch daily. Would it not make sense to model this as a sliding window that's updated daily?
Very impressive indeed... one point to consider though - a perfectly reasonable follow up query to "somewhere warm" is a query like "somewhere warm in the usa".. this doesn't quite seem to be in place yet with the result redirecting to "somewhere warm"