I don't do these that often because I don't usually have that much to add.  When I do, its because I think something may really help.
I've been driven crazy recently by a couple of type-ahead names in my 8.5 client.  You see, someone I communicate for business  with all the time sent me an email from an alternate account.  Like a Gmail account only even more of a problem -- its an address at one of her clients.  Ever since, whenever I type her name the wrong one comes up and if I'm not careful I send the message out.  I've deleted the "recent contacts" entry a few times -- but it keeps coming back because that address does get used sometimes.
I wrote a really quick agent to run in my personal address book (my contacts database).  It checks each "common name" in the recent contacts view against the ($Users) view in my personal address book and the NAMES.NSF file on my current mail server.   If it finds an entry -- and that entry is from a "Person" document (so it filters out the recent contacts documents) then it deletes the recent contact on the assumption that for the same common name, I only want to use the entry that's actually in my address books.   The agent runs on new or updated documents.
Warning:  There's a reason why the client doesn't do this by default.  Its not for everyone.  Many people in different situations would find this less than desirable behavior -- especially in a corporate "internally focused" environment.   For those of us in this little community, however, I think this may be of some use.
SELECT @All;
-----------------------   This part creates a local variable "SNAME" 
-----------------------   which is the name to search for. 
-----------------------   I stole this bit of code from the sorted name 
-----------------------   column in the "Recent Contacts" view.
FN_LN := FirstName + " "  +  LastName;
LN_FN := @Trim(@Subset(LastName;1)) + ", " + @Trim(@Subset(FirstName;1));
varContactName := @If(Firstname = "" & LastName = "" & CompanyName != ""; CompanyName;
	FirstName = "" & LastName != ""; LastName;
	Lastname = "" & FirstName != ""; FirstName;
	@IsUnavailable(NameDisplayPref) & FN != ""; LN_FN;
	NameDisplayPref  = "1" | NameDisplayPref = 1; FN_LN;
	LN_FN);
SNAME := @If(@LowerCase(type) = @LowerCase("GrOuP"); ListName; @If(@Trim(AltFullNameSort)!="";AltFullNameSort;varContactName ));
-----------------------   This part does the lookup to the local names 
-----------------------   file (which is where the agent is running) and pulls the form field
-----------------------   we check for an error state on the lookup, because there 
-----------------------   will often be no match found.
N1 := @DbLookup("":"NoCache" ; "":"" ; "($Users)" ; SNAME ; "form" );
N1 := @If(@IsError(n1) ; "" ; n1) ;
-----------------------   Now do the same thing against the domino 
-----------------------   directory on the server (which I've hardcoded 
-----------------------   as Names.nsf in this agent)
N2 := @DbLookup("":"NoCache" ; @Subset(@MailDbName; 1) : "Names.nsf" ; "($Users)" ; SNAME ; "form" );
N2 := @If(@IsError(n2) ; "" ; n2) ;
-----------------------   Clean up and concatenate the two lookups, which 
-----------------------   will give us either the name of the FORM 
-----------------------   of any found documents, or an empty string if no 
-----------------------   records were found.   Then we can check
-----------------------   for any existing person documents.  If we find them, 
-----------------------   delete the "recent contact" entry. 
n1 := @Trim(@Unique(@Explode(n1; ",") : @Explode(n3; ",")));
@If( @IsMember("Person" ; n1) ; @DeleteDocument ;  "")