The free tier gets spun down to idle after five minutes of inactivity. The first request after that usually fails to connect as it takes a few seconds for it to come back up.
Neon cold starts are targeted at just a few hundred milliseconds. Anything on the order of seconds would be a regression in our minds. Obviously this depends on geographical latencies, etc. We are always looking to improve cold starts.
I'm on the free tier. In my case it looks like adding `app.config["SQLALCHEMY_ENGINE_OPTIONS"] = {"pool_pre_ping": True}` for the Flask-SQLAlchemy configuration did the trick. I hope to be a paying customer soon :)