1 & 2 => you'll need to be able to rely on your customer records being clean/not contain duplicates => can most likely do these as a search, use search and scheduled script and/or map reduce depending on size to update customer records
3 => depending on the info you'll need, probably a combo of N/query and N/file, then adding the buttons via a user event script/client script
4 => 🤷