I have a lot of folders in Outlook/Exchange.  I mean lots, and in a pretty deep hierarchy. I firmly believe in two modalities when finding stuff: navigating and searching.  Searching is taken care of by MSN desktop search, but I still need to be able to organize and categorize.  I’ve thought about using POPFile and Outclass to do Bayesian classification, but those tools are really geared much more toward spam filtering than learning for automated filing (unless someone can tell me how to easily create a whole bunch of POPFile buckets from an existing folder hierarchy).  So, I’ve resorted to an approach that automatically lists folders in order of frequency of use, much like the “Move to Folder” button that Outlook has, but with more flexibility and configurability.

The way it works: I have a folder hierarchy under my top-level Exchange mailbox that’s called “Active”.  Under Active is a flat list of folders that represent my N “most active” folders (N=25, currently).  “Most active” is determined by total count of emails filed into that folder.  In each folder is a single email – a metadata store that contains the EntryID of a real folder elsewhere in my folder hierarchy, plus a count of the number of emails I’ve filed in that folder.  A WinForms application (which should be an Outlook add-in, really) listens to ItemAdd events for all of my Outlook folders, and increments the count in the appropriate active folder metadata item.  Periodically (once a minute; the user experience sucked when I sorted after each filing), the folders are re-sorted to keep displaying the top N; I played around with actually ordering them strictly by activity, but it was way more useful to just have the top N sorted by name.

Most importantly, I can file messages in the active folders and they automatically move to the real folder (thus incrementing the count).  Also important is that the counts decay – once a day, all counts get decremented; I’ve thought about more complex approaches, but this one seems to work.