Another caffeinate workflow (uses the built-in "caffeinate" tool, *not* the third-party "Caffeine" app). Unlike the ones I found already, this one uses the result feedback mechanism extensively.
You can create jobs with custom times. Any custom jobs you create are remembered and presented in the order of frequency of use. For instance, if you create a custom caffeinate job of 45 minutes once, it will show up in your list from the next run. And depending on how often you re-use that, it will bubble up or settle down in the list of available choices.
And, of course, you can cancel existing jobs or reschedule them.
This is how you configure the workflow if, for instance, you want display sleep to blocked too.
This is the config file you'll need to edit to configure the caffeinate flags:
Download it here: https://github.com/venkytv/alfred-caffeinate/raw/master/Alfred-Coffee.alfredworkflow
Source: https://github.com/venkytv/alfred-caffeinate
Written in perl and has no external dependencies. Will use the Time::Duration module, if available.