Abstract:
In the context of recruitment and sales, it is difficult to ensure that there is a consistent level of activity tracking that occurs in a Customer Relationship Management or Applicant Tracking System (CRM/ATS, tracking application, or tracking system) from one user (e.g., recruiter or sales representative) to another within a single firm. This is due in large part to the manual and time consuming mechanics of logging the activity. Example embodiments of the present invention include a mail server component that automatically logs such activity. The system determines who the email is being sent to and from, as well as whether the email contains calendar event (e.g., appointment) information. The system then searches a database to determine if the recipients of the email message are contacts in the tracking application. If a match is found, the message is automatically added to the contacts activity record as either an inbound email, outbound email, or appointment. Activity tracking is, thus, consistently maintained among all users, ensuring a higher quality of activity-based metrics.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    Customer Relationship Management (CRM) refers to processes implemented by a company to handle its interactions with its contacts (e.g., customers). Generally, information can be accessed and entered by employees of the company. An Applicant Tracking System (ATS) is a software application that enables the electronic handling of corporate recruitment needs. If hosted and accessed over the Internet, these systems may be known as Software-as-a-Service (SaaS). As used herein, the terms “CRM/ATS,” “tracking application,” and “tracking system” refer to any of these types of systems. 
         [0002]    The business value of a tracking application is to enable a firm to improve its client interactions. This is done by collecting customer data and analyzing and measuring the data to understand customer needs and improve satisfaction, which leads to increased sales/placement opportunities. As part of the data collection, users (e.g., recruiters or sales representatives) use the tracking system to track all of their interactions with a contact or other company. Example interactions that can be tracked include email messages, telephone calls, appointments, interviews, submissions, and placements. A tracking application provides a method to create activity records such as, for example, notes, email messages, and meetings, which can link to a contact and allow tracking of ongoing interactions with the contact. These activity records typically contain the date and time, title, short description, long description, ability to add an email or copy an email into the description, and the type of interaction typically defined by the user, such as, for example, phone contact, interview, email, or notes. When the activity is logged, a firm can then report on the logged data, measure each user&#39;s activity level, and analyze productivity at an individual, team, or firm level. 
       SUMMARY OF THE INVENTION 
       [0003]    One problem with tracking applications today is that existing systems or methods require the user to either (1) manually add email messages to the tracking system, or (2) use other applications to tag email messages to a specific contact that will, in turn, associate the email with that contact in the tracking application. With either of these methods, user action is required and, as a result, there is a high probability that email message activity between a contact and a user will not be tracked consistently across the entire firm. 
         [0004]    While some tracking systems have the ability to reduce the steps of fully manual cut-and-paste methods for getting email message activity into the system, many of those systems require the user to associate a message with a contact within the Mail User Agent (MUA) email client software, and at a later point in time, when there is an internet connection, the MUA synchronizes with the tracking system. Other tracking systems require the user to take many manual actions to track ongoing interactions with the contact, including adding a tracking address in the BCC line within the MUA when sending email. Using such a BCC method, the system can only track outgoing messages, and does not track email that comes into the MUA from the Internet. To track those incoming messages, the user must resend them to the tracking system manually. Further, solutions that require software to be installed into the MUA do not work when the user sends or receives email from, for example, a mobile device or a web-based MUA (such as Microsoft Web Access). 
         [0005]    Example methods and systems are disclosed herein to solve these problems. One example is a computer-implemented method of tracking correspondence between users and contacts in a customer relationship management or applicant tracking system (CRM/ATS, tracking application, or tracking system). The method involves monitoring electronic mail messages between a user and a contact, and upon detecting an electronic mail message, automatically copying the electronic mail message to the tracking system. The electronic mail message is then parsed to determine a sender and a recipient of the message. According to the example method, a database of the tracking system is searched for the sender and the recipient, and if the sender or recipient is found in the database, the electronic mail message is automatically (without user manual operation or command) added to an activity record for that contact. 
         [0006]    In some embodiments, the method may include automatically adding an indication as to whether the activity is inbound activity or outbound activity, and then automatically adding the electronic mail message to an activity record for the sender of the message if it is an inbound message, or to an activity record for the recipient of the message if it is an outbound message. The electronic mail message copy may be deleted if neither the sender nor recipient is found in the database. 
         [0007]    If the electronic mail message includes an electronic invitation for a calendar event, information about the calendar event may be automatically stored in the database, the database may be automatically searched for an invitee of the calendar event, and information about the calendar event may be automatically added to the activity record for the invitee. If the electronic invitation is a cancellation of a calendar event, information about the calendar event may be automatically deleted from the database and from the activity record for any invitee of the calendar event. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0008]    The foregoing will be apparent from the following more particular description of example embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating embodiments of the present invention. 
           [0009]      FIG. 1  is a flow chart illustrating tracking of sent and received email in embodiments of the present invention. 
           [0010]      FIG. 2  is a flow chart illustrating tracking of sent and received email, including tracking of a reply to an email from a contact in embodiments of the present invention. 
           [0011]      FIG. 3  is a flow chart illustrating tracking of an electronic invitation sent from a user (e.g., recruiter) to a contact in embodiments of the present invention. 
           [0012]      FIG. 4  is a detailed flow chart illustrating tracking of sent and received email and tracking of electronic invitations in an example tracking system embodying the present invention. 
           [0013]      FIG. 5  is a block diagram illustrating components of an example tracking system embodying the present invention and flow of information among the components. 
           [0014]      FIG. 6  is a flow diagram illustrating a sequence for receiving a mail message at a mail server and processing the message through an example tracking system. 
           [0015]      FIG. 7  is a flow diagram illustrating a sequence for creating an email in an example tracking system and tracking it against appropriate individuals. 
           [0016]      FIG. 8  is a flow diagram illustrating a sequence for preprocessing an .ics file tied to an email. 
           [0017]      FIG. 9  is a schematic view of a computer network in which the example embodiments disclosed herein may operate. 
           [0018]      FIG. 10  is a block diagram of a computer node/device in the network of  FIG. 9 . 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0019]    A description of example embodiments of the invention follows. 
         [0020]    The embodiments disclosed herein allow interactions (e.g., electronic email messages) to be received from a third party Mail Transfer Agent (MTA) and for the interactions to be automatically added (i.e., without user manual steps or interaction) to a tracking system as cataloged activity associated with a contact in the tracking system. In many embodiments, the tracking systems, in an automated fashion, can identify the recipients of the interactions, identify the sender of the interactions, and identify any email attachments, such as an appointment (e.g., attached .ics file). The tracking systems can also automatically perform a search in the system&#39;s database for each identified recipient and sender and, if found, automatically add the interaction (e.g., email message) as inbound/outbound mail activity. The tracking systems can further automatically create or update an appointment or meeting (e.g., calendar event) based on metadata contained in the appointment or meeting (e.g., .ics file attachment). 
         [0021]    The disclosed tracking systems facilitate automatic activity tracking in a tracking system when the Mail User Agent (MUA) is a thick mail client, such as, for example, Microsoft Outlook or Thunderbird, and connected to a MTA, such as, for example, Microsoft Exchange. The tracking systems also facilitate automatic activity tracking when the user&#39;s MUA is a thin web mail client, such as, for example, Microsoft Outlook Web Access, and connected to a MTA, such as Microsoft Exchange. The tracking systems further facilitate automatic activity tracking when the user&#39;s MUA is a handheld device, such as, for example, an iPhone, Android Operating System (OS), or Blackberry device, and connected to a MTA, such as Microsoft Exchange. 
         [0022]    Use of the disclosed methods or systems results in an ability to automatically link and store a copy of (1) inbound email in the sender&#39;s record in the tracking system by sending a copy of the inbound email from the user&#39;s mail server to the tracking application, (2) outbound email in the recipient&#39;s (To, CC) record in the tracking system by sending a copy of the outbound email from the user&#39;s mail server to the tracking application, and (3) calendar events in a contact&#39;s record in the tracking application by processing a copy of the calendar event email from the user&#39;s mail server in the tracking application. 
         [0023]    To enable the above features, a company, or other entity, may install a Mail Transfer Agent (electronic mail server) into its tracking application to receive emails forwarded to the company from another entity&#39;s primary MTA (such as Microsoft Exchange). When an email is received by the company&#39;s MTA from a user&#39;s primary MTA, the system processes the email to automatically add the email, along with any detailed metadata, into the tracking system. When the message arrives, the system parses the message to determine the sender and recipients of the message. The system then performs a search in the system&#39;s database for the sender and each recipient. If the sender or recipient is located, the system automatically adds the email to the message activity record for each contact found in the database. As noted above, the system may also track all email activity automatically when a user sends or receives email from a mobile device (e.g., iPhone, Blackberry, Android, or Windows Mobile device) or via a web-based MUA (e.g., Microsoft Web Access and Gmail). 
         [0024]      FIG. 1  is a flow chart illustrating an example embodiment&#39;s process  100  for tracking of sent and received email. An email may be sent ( 120 ) from a user (e.g., recruiter)  110  of a firm/company to a contact  105  (e.g., job seeker), upon which the email is both received ( 125 ) by the contact  105  and automatically inserted ( 130 ) into the firm&#39;s/company&#39;s tracking system  115 . Additionally, an email may be sent ( 140 ) from the contact  105  to the user  110 , upon which the email is both received ( 135 ) by the user  110  and automatically inserted ( 145 ) into the tracking system  115 . 
         [0025]      FIG. 2  is a flow chart illustrating an example embodiment&#39;s process  200  for tracking of sent and received email, including tracking of a reply to an email from a contact. An email may be sent ( 205 ) from a contact  105  to a user  110 , upon which the email is both received ( 210 ) by the user  110  and automatically copied ( 230 ) to the tracking system  115 . The user  110  may read the email and then either delete ( 215 ) the email or reply ( 220 ) to the email. If the user  110  replies to the email, the reply is both received ( 225 ) by the contact  105  and automatically copied ( 235 ) to the tracking system  115 . 
         [0026]      FIG. 3  is a flow chart illustrating an example embodiment&#39;s process  300  for tracking of an electronic invitation sent from a user (e.g., recruiter) to a contact. A user  110  may create, update, or delete a calendar appointment ( 305 ), and send ( 310 ) a corresponding electronic invitation to a contact  105 . When the invitation is sent, it is automatically copied ( 315 ) to an tracking system  115 , and is also received ( 320 ) by the contact  105 . The contact  105  may then reply to the invitation, upon which the user  110  receives ( 325 ) the reply and the reply is copied ( 330 ) to the tracking system  115 . It should be understood that the contact  105  could similarly send an electronic invitation to the user  110 , and process  300  would similarly handle that invitation. 
         [0027]      FIG. 4  is a detailed flow chart illustrating an example embodiment&#39;s process  400  for tracking of sent and received email and tracking of electronic invitations in an example tracking system. At the starting point of the example tracking system, a mail message is delivered to a Mail Transfer Agent (MTA) ( 420 ). The mail message comes into the MTA based on one of the following example scenarios: (1) Someone sends an email to a company user, for which the company owns a Mail eXchange (MX) record. This is an inbound mail scenario. (2) Someone sends an email to a company user, for which the company does not own an MX record, but the user&#39;s mail system is configured to forward inbound mail to the tracking system (via “journaling” for example) for tracking purposes. (3) A company user uses his own mail system (e.g., Microsoft Exchange) to send an email, where that system is configured to forward sent mail to the tracking system for tracking purposes. 
         [0028]    Using the “RCPT TO” value from the Simple Mail Transfer Protocol (SMTP) transmission, a custom Mail Transfer Agent (MTA) of the company&#39;s system attempts to validate the recipient of the mail message by accessing the tracking system to determine whether the email address is a valid company user ( 425 ). If the recipient is not deemed to be valid, then the system process  400  attempts to validate the sender of the email in the same manner, in which case this would be a sent items tracking situation ( 430 ). If the sender is determined to be valid, the message is marked as a sent items tracking situation so that the downstream logic of the system is aware that it is not an inbound mail message ( 435 ). If neither the recipient nor the sender are determined to be valid, the message is rejected at the SMTP handoff point (fast fail, no bounce back) ( 440 ) and the process  400  flow ends ( 450 ). 
         [0029]    If either the sender or recipient is determined to be valid, a check is made to determine whether the message is an inbound or outbound scenario ( 455 ). In an inbound scenario, the tracking is applied to the sender of the message; thus, the system process  400  determines whether the sender is a recognized person (e.g., candidate, contact) in the company&#39;s tracking system ( 460 ). The system process  400  may make this determination by querying a database of the tracking system. In an outbound tracking scenario, the tracking is applied to the recipients of the message; thus, the system process  400  determines whether each individual recipient (i.e., to, cc, bcc field) is a recognized person (e.g., candidate, contact) in the company&#39;s tracking system ( 465 ). Information about the email (e.g., subject, body) is then stored in the tracking system ( 470 ). If there are relevant people to track against (i.e., sender for inbound scenario, or recipients for outbound scenario) as determined above, then the saved email information is associated with those people so that it can be viewed in relation to them, for example, on an activity tracking page ( 475 ). 
         [0030]    After the mail message tracking determinations are made, a check is made to determine whether there is any “calendar” data associated with the email message ( 445 ). This check may be performed by determining whether if there is a “.ics” attachment, for example, or by determining whether there is a MIME body part with a content-type of “text/calendar.” If there is no “calendar” data, the process  400  flow ends ( 450 ). If there is calendar data, then the system process  400  determines whether the calendar data is a create/update type (e.g., method types “publish” or “request”) or a delete type (e.g., method type “cancel”) ( 480 ). 
         [0031]    If the calendar data is create/update calendar data, the system process  400  determines whether any “appointment” referenced ( 490 ) in the calendar data currently exists in the tracking system. If an appointment does not currently exist, it is created in the tracking system using information supplied in the calendar data of the email ( 492 ). If the appointment already exists, then the information is updated for that appointment in the tracking system according to the newly-supplied calendar data ( 494 ). At this point, a check ( 496 ) is made to determine whether any of the appointment invitees are recognized people (e.g., candidates, contacts) in the company&#39;s tracking system using the email addresses contained in the calendar data. If there are no recognized people, the process  400  flow ends ( 450 ). If there are recognized people, then the appointment is associated with those recognized people in the company&#39;s tracking system so that the appointment information can be viewed, for example, on an activity tracking page ( 498 ). The process  400  flow then ends ( 450 ). If, on the other hand, the calendar data is for a cancel scenario, then the referenced appointment is removed ( 485 ) from the tracking system. Any tracking references are also be removed ( 487 ) so the appointment no longer appears in any activity tracking information. The process  400  flow then ends ( 450 ). 
         [0032]      FIG. 5  is a block diagram illustrating components of an example tracking system and flow of information among the components. The example system  500  tracks correspondence between users and contacts, and includes in a subsystem or process  505  (1) a mail transfer module  525  that monitors electronic mail messages between a user and a contact, and that automatically copies the electronic mail message to the tracking system  500  upon detecting an electronic mail message  520  from a primary mail system  510 , (2) a parsing module  530  that parses the electronic mail message  520  to determine a sender and a recipient of the message  520 , and that searches a database  515  of the tracking system (e.g., send a query to the database  515 ) for information  540  about the sender and the recipient, and (3) a tracking module  535  that adds the electronic mail message  520  to an activity record  545  for the contact if the sender or recipient is found in the database  515 . 
         [0033]    As in other embodiments, the tracking module  535  may add an indication to the activity record  545  as to whether the activity is inbound activity or outbound activity. The tracking module  535  may further add the electronic mail message to an activity record  545  for the sender of the message  520  if it is an inbound message, or to an activity record  545  for the recipient of the message  520  if it is an outbound message. The tracking module  535  may, alternatively, delete the electronic mail message copy if neither the sender nor recipient is found in the database  515 . 
         [0034]    In addition, the parsing module  530  may determine whether the electronic mail message  520  includes an electronic invitation for a calendar event. If such an electronic invitation exists, the parsing module  530  may further search the database  515  for an invitee of the calendar event. The tracking module  535  then stores information about the calendar event in the database  515 , and may add information about the calendar event to the activity record  545  for the invitee, if any. In an event the electronic invitation is a cancellation of a meeting or appointment, for example, the tracking module  535  then deletes information about the calendar event from the database  515  and deletes information about the calendar event from the activity record  545  for any invitees of the calendar event. 
         [0035]      FIG. 6  is a flow diagram illustrating a sequence  600  for receiving a mail message at a mail server and processing the message through a tracking system. The example sequence  600  assumes that the recipient of the message has already been validated. In the example sequence  600 , the mail delivery chain  605  calls ( 640 ) a delivery handler  610  (a Mailet) service(Mail) method. The delivery handler  610  calls ( 645 ) a MailetUtils  615  checkForJournaledMail(MimeMessage) operation. If the message has a single embedded email attachment and the message is to a single recipient and contains journaling information in the body, then the message is determined to be a journaled message (e.g., from Exchange Journaling) and a JournaledMail  620  object is created ( 650 ) and returned containing the actual message to deliver. The delivery handler  610  calls ( 655 ) a createEmailRequest(MimeMessage) on MailetUtils  615 . In this operation, the details of the message are copied onto a new instance of CreateEmailRequest ( 660 ), which is used for an upcoming service call. The delivery handler  610  calls ( 665 ) createEmail(CreateEmailRequest) on an EmailService  625  class. The specific details of this sequence is represented in greater detail below in  FIG. 7 . Additionally, if the mail delivery chain  605  detects a .ics file attached to the message, then it invokes ( 670 ) the service(Mail) operation on a ICSPreprocessHandler  630  (a Mailet). The ICS handler  630  then calls ( 675 ) a preprocessICS(PreprocessICSRequest) on an AppointmentService  635  class. The specifics of this operation are covered in more detail below in  FIG. 8 . 
         [0036]      FIG. 7  is a flow diagram illustrating a sequence  700  for creating an email in an example tracking system and tracking it against appropriate individuals. In the example sequence  700 , the EmailService  625  class calls ( 730 ) resolvePeople(List&lt;Person&gt;) on a PersonUtils  705  class. In an inbound tracking case, the sender of the message is resolved into a person record. In an outbound tracking scenario, the recipients (To, Cc, Bcc) of the message are resolved into person records. Either way, the resolution logic may be as follows: If the email address matches an internal person, then that match wins against all other matches. If no internal match, then next is a private Client Contact owned by the context user (sender in outbound, recipient in inbound). If no private Client Contact, then next is a private Candidate owned by the context user. If no private Candidate, then next is a public Client Contact. If no public Client Contact then last is a public Candidate. After the resolution logic completes the EmailService  625  creates ( 740 ) a new EmailRecord  710  to store the information tied to the email received in the tracking system database. In an inbound tracking case, the sender is tied to the EmailRecord  710  to track against the sender. For an outbound case, each resolved recipient is tied to the EmailRecord  710  to track against the recipients. After creating the EmailRecord  710  in the database, EmailService  625  calls ( 750 ) an indexNewEmail(EmailRecord) on an IndexingService  715  to add email data to an email Lucene Index so that it is available in fast search features in the tracking system. After indexing the email, EmailService  625  calls ( 760 ) a newEmail(EmailRecord) on a MobileDeviceService  720  to make the new email available to the context users&#39; mobile device if applicable. 
         [0037]      FIG. 8  is a flow diagram illustrating a sequence  800  for preprocessing an .ics file tied to an email. The example sequence  800  addresses a case in which an appointment from the .ics file does not yet exist in the tracking system. In the example sequence  800 , the AppoinementService  635  class calls ( 830 ) parseICS(String) on a ICSParser  805 . In the parseICS  805  operation, a new Calendar  810  object is created ( 835 ) from the data contained in the .ics file (using, e.g., a iCal4j library). For tracking purposes, AppointmentService  635  calls ( 840 ) resolvePeople(List&lt;Person&gt;) on PersonUtils  705  to resolve any invitees from the .ics into people records in the tracking system (see e.g.,  FIG. 7 ). A new AppointmentRecord is created ( 850 ) and persisted to the tracking system database. At this point, any invitees that resolved into people records in the context of the owner are tied to the AppointmentRecord  815  so the appointment tracks against them. AppointmentService  635  calls ( 860 ) newAppointment(AppointmentRecord) on the MobileDeviceService  720 , which makes the new appointment available on the device of the owner. 
         [0038]      FIG. 9  is a schematic view of a computer network in which embodiments of the present invention may operate. Client devices  910  and server devices  920  provide processing, storage, and input/output devices executing application programs and the like. Client devices  910  can also be linked through a communications network  930  to other computing devices, including other client devices  910  and server devices  920 . The communications network  930  may be part of a remote access network, a global network (e.g., the Internet), a worldwide collection of computing devices, local area or wide area networks, and gateways that currently use respective protocols (TCP/IP, Bluetooth, etc.) to communicate with one another. Other electronic device/computer network architectures are also suitable. 
         [0039]      FIG. 10  is a block diagram of a computer node/device  910 ,  920  in the network of  FIG. 9 . Each device  910 ,  920  contains a system bus  1030 , where a bus is a set of hardware lines used for data transfer among the components of a device or processing system. The bus  1030  is essentially a shared conduit that connects different elements of a device (e.g., processor, disk storage, memory, input/output ports, network ports, etc.) that enables the transfer of information between the elements. Attached to the system bus  1030  is an I/O device interface  1040  for connecting various input and output devices (e.g., keyboard, mouse, displays, printers, speakers, etc.) to the device  1010 ,  1020 . A network interface  1060  allows the device to connect to various other devices attached to a network (e.g., network  930  of  FIG. 9 ). Memory  1070  provides volatile storage for computer software instructions  1080  and data  1090  used to implement an embodiment of the present invention (e.g., mail transfer module  525 , parsing module  530 , and tracking module  535  of  FIG. 5 , and supporting code for performing the functions and processes  100 ,  200 ,  300 ,  400 ,  600 ,  700 ,  800  detailed above in  FIGS. 1-4  and  6 - 8 ). Disk storage  1075  provides non-volatile storage for computer software instructions  1080  and data  1090  used to implement the methods and systems disclosed herein. Central processor unit  1050  is also attached to the system bus  1030  and provides for the execution of computer instructions. 
         [0040]    In one embodiment, the processor routines  1080  and data  1090  are a computer program product (generally referenced  1080 ), including a computer readable medium (e.g., a removable storage medium such as one or more DVD-ROM&#39;s, CD-ROM&#39;s, diskettes, tapes, or a portal server medium, etc.) that provides at least a portion of the software instructions for the invention system. Computer program product  1080  can be installed by any suitable software installation procedure, as is well known in the art. In another embodiment, at least a portion of the software instructions may also be downloaded over a cable, communication and/or wireless connection. 
         [0041]    While this invention has been particularly shown and described with references to example embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the invention encompassed by the appended claims.