Scrape → summarize → notify, without double-charging OpenAI on retries
Retries after a timeout re-run the OpenAI node even when the first call actually succeeded — I was paying twice on about 7% of runs.
This version hashes the input, stores the hash before the call, and gates the OpenAI node on a lookup. The workflow JSON attaches here as soon as asset blocks ship — until then, tear the approach apart.