Currently, the system makes no attempt to match new donations to existing constituent records. So let's say your annual fund drive draws 500 donations and 75% of those are from existing constituents. That means you now have 375 duplicate records in your system which will each need to be merged by hand with existing constituent records. But of course, you don't know which records are which unless you have your entire constituent database memorized, so all 500 records need to be scrutinized. This should not be tolerated in what is supposed to be a unified CRM.
All new donations, event sign-ups, etc. should be matched to existing name, telephone, email, and postal address fields. Certain combinations should be assumed to be the same constituent (e.g. same First Name, Last Name, email, and street address). Otherwise, where there are matches, results should be automatically pushed to an interface specifically designed to allow matching new records to be easily merged with existing constituent records.