JavaScript (Node.js), 102 129 110110 106 bytes
s=>s[p="replace"](s/(\d+)( \w*[A-Z])/gi,f=g=(_,a,b)=>b.repeat(a))=>s[p="replace"](/(\d+)( \w*[A-Z])/gi,f)[p](/(\d+)(.)/g,fg)[p](/ +/g,(_,i)=>i?" ":"")
Thanks for @Arnauld for -4 bytes.