A non-transitory machine-readable medium having instructions, which when executed by a processor, cause the processor to perform a method of determining activities associated with tasks, the method comprising:
- automatically and periodically,
- accessing, via a first application programming interface (API), a task database system to obtain task data of a plurality of tasks associated with a plurality of entities, the task data including attributes describing the corresponding tasks, and
- storing the task data of the plurality of tasks in a local data store, wherein the task data includes one or more contacts associated with each of the plurality of tasks;
- receiving, from a client device over a network, a request for determining activities of a first task associated with a first entity, wherein the request includes information that identifies the first task of the first entity;
- in response to the request, obtaining a first list of one or more task contacts associated with the first task from the task data stored in the local data store, wherein the one or more task contacts of the first list include information identifying one or more users associated with the first entity;
- for each of the task contacts in the first list, determining a domain name associated with the task contact based on a set of email identification rules, wherein determining a domain name associated with the task contact based on a set of email identification rules comprises:
- identifying an email address from the task contact, and extracting the domain name from the email address of the task contact;
- determining a set of target email addresses based on the domain name and the first list of task contacts, wherein the set of target email addresses is associated with the first entity;
- identifying, from the task data stored in the local data store, a second list of one or more task contacts associated with the first task, wherein the second list of one or more task contacts is associated with a second entity that is different than the first entity, wherein the second entity provides services to the first entity, and wherein the first task is being performed between the first list of one or more task contacts and the second list of one or more task contacts;
- determining a set of source email addresses associated with the second list of task contacts;
- determining an email server based on the domain name;
- accessing, via a second API, the email server associated with the domain name to retrieve activity data, the activity data including one or more of an email message or a calendar event, wherein the activity data includes information describing activities between the set of target email addresses and the set of source email addresses, wherein retrieving the activity data from the email server includes:
- identifying one or more email messages exchanged between any of the target email addresses and any of the source email addresses, and
- identifying one or more calendar events scheduled or participated between any of the target email addresses and any of the source email addresses;
- and
- transmitting an activity summary describing the activity data to the client device over the network, wherein the activity summary includes a first value representing a number of the identified email messages and a second value representing a number of the identified calendar events occurred at different points in time between any of the source email addresses and any of the target email addresses.