Hardware should be as close to what your current process is run on as possible (if not beefier). For example; if you are automating a process that humans currently perform, you'll want a machine just as capable (either virtual or physical).
As for sizing, you can plan ahead a little, but really the formula is simple;
What is the average handle time of the bot for a single work item?
How many work items do you get per time period?
What is your time allowed for completing the work items?
You can estimate the average handle time of the bot before development by starting with the current time that the work takes if done by a human. The bot should be faster assuming it is doing the same work, but for estimation purposes early on, I'd go with a more conservative estimate.