Task-Based Virtual Calendar Scheduling Assertion

Task-based user schedule changes are asserted within a virtual calendar of a software user. User-specific calendar rules for automated assertion against the virtual calendar of the software user are generated by modeling trend and priority data for meetings and tasks associated with the software user. A set of pending tasks of the software user are obtained. A determination is then made, by asserting the user-specific calendar rules against the virtual calendar, that a priority level of a current task of the set of pending tasks is higher than a priority level of a current meeting scheduled on the virtual calendar. Based on such determination, an adjustment is caused to the virtual calendar to remove the current meeting and add a new event corresponding to the current task. The virtual calendar may in some cases be facilitated by an email client.

FIELD

This disclosure generally relates to virtual calendars, and, more specifically, to the assertion of task-based user schedule changes within a virtual calendar.

DETAILED DESCRIPTION

In today's connected world, many workers are frequently inundated with round-the-clock meetings that tie up valuable work time from their schedules. These workers may have large and growing task lists to action through, but struggle to action many of the items thereon given their busy calendars, which are often filled with meetings. When a worker is not in an active meeting, they may in some cases be faced with the challenge of deciding which task to action at a given time. One approach to resolving this may be to implement a set of rules for helping workers to focus on their tasks, such as by scheduling dedicated focus periods within their calendars; however, every worker has different assignments, schedules, teams, and the like, and their day-to-day operations may fluctuate. As such, there is no one-size-fits-all approach to scheduling dedicated focus periods that equitably accommodates all workers.

Furthermore, given the variance in the tasks themselves, such rigid focus period scheduling approaches, to the extent they even contemplate tasks, may fail to recognize that different tasks have different priority levels. As used herein, a priority level may refer to a measure of importance for attending to a task. For example, a conventional scheduling system that attempts to fill an empty time block within a worker's calendar according to an oldest task on the worker's task list may fail to recognize that another task on the task list has a higher priority, such as due to a more immediate deadline, a deliverable being due to an executive-level team member, or another team depending upon the worker's output to progress in a large project. In another example, such a conventional scheduling system may fail to recognize priorities based on attributes related to the worker's work day, such as where they will be present in a company office for the day and require use of equipment only available at the office to perform one of the many tasks on their task list.

Implementations of this disclosure address problems such as these using task-based virtual calendar scheduling assertion, in which task-based user schedule changes are asserted within a virtual calendar of a software user. User-specific calendar rules for automated assertion against the virtual calendar of the software user are generated by modeling trend and priority data for meetings and tasks associated with the software user. At some point after the user-specific calendar rules are generated, or contemporaneous therewith, a set of pending tasks of the software user are obtained from one or more sources. Priority levels of the tasks of the set of pending tasks are determined. Thereafter, by asserting the user-specific calendar rules against the virtual calendar, a determination is made that a priority level of a current task of the set of pending tasks is higher than a priority level of a current meeting scheduled on the virtual calendar. Based on such determination, an adjustment is caused to the virtual calendar to remove the current meeting and add a new event corresponding to the current task. For example, the adjustment may be caused by an automated update to the virtual calendar using software that facilitates the virtual calendar, such as an email client. The virtual calendar may, for example, be implemented using software services of a software platform (e.g., a unified communications as a service (UCaaS) platform), in which at least some tasks of the set of pending tasks may be derived based on records associated with one or more software services of the software platform.

According to the implementations of this disclosure, a software user, such as a user of a UCaaS or other software platform, can receive recommendations for adjusting their virtual calendar, or simply have their virtual calendar automatically adjusted, to ensure that their time is being efficiently utilized between scheduled meetings that are actually important to the user and tasks that the user must action. To produce such recommendations, meeting and task priorities are modeled by evaluating scheduling trends (e.g., which meetings are actually accepted by the user and placed on their schedule), event trends (e.g., which meetings are actually attended and/or participated in by the user, or which tasks or categories of tasks are most frequently performed by the user), work trends (e.g., which days the user tends to have most of their meetings on, or which days the user arrives late to work on), and the like. When a high priority task is awaiting actioning by the software user or when the user is in need of a focus period, the virtual calendar of the software user can be evaluated to determine a block of time to clear for the software user to action the task (e.g., based on an expected amount of time required to action the task) or to schedule the focus period.

To describe some implementations in greater detail, reference is first made to examples of hardware and software structures used to implement a system for task-based virtual calendar scheduling assertion.FIG.1is a block diagram of an example of an electronic computing and communications system100, which can be or include a distributed computing system (e.g., a client-server computing system), a cloud computing system, a clustered computing system, or the like.

The system100includes one or more customers, such as customers102A through102B, which may each be a public entity, private entity, or another corporate entity or individual that purchases or otherwise uses software services, such as of a UCaaS platform provider. Each customer can include one or more clients. For example, as shown and without limitation, the customer102A can include clients104A through104B, and the customer102B can include clients104C through104D. A customer can include a customer network or domain. For example, and without limitation, the clients104A through104B can be associated or communicate with a customer network or domain for the customer102A and the clients104C through104D can be associated or communicate with a customer network or domain for the customer102B.

A client, such as one of the clients104A through104D, may be or otherwise refer to one or both of a client device or a client application. Where a client is or refers to a client device, the client can comprise a computing system, which can include one or more computing devices, such as a mobile phone, a tablet computer, a laptop computer, a notebook computer, a desktop computer, or another suitable computing device or combination of computing devices. Where a client instead is or refers to a client application, the client can be an instance of software running on a customer device (e.g., a client device or another device). In some implementations, a client can be implemented as a single physical unit or as a combination of physical units. In some implementations, a single physical unit can include multiple clients.

The system100can include a number of customers and/or clients or can have a configuration of customers or clients different from that generally illustrated inFIG.1. For example, and without limitation, the system100can include hundreds or thousands of customers, and at least some of the customers can include or be associated with a number of clients.

The system100includes a datacenter106, which may include one or more servers. The datacenter106can represent a geographic location, which can include a facility, where the one or more servers are located. The system100can include a number of datacenters and servers or can include a configuration of datacenters and servers different from that generally illustrated inFIG.1. For example, and without limitation, the system100can include tens of datacenters, and at least some of the datacenters can include hundreds or another suitable number of servers. In some implementations, the datacenter106can be associated or communicate with one or more datacenter networks or domains, which can include domains other than the customer domains for the customers102A through102B.

The datacenter106includes servers used for implementing software services of a UCaaS platform. The datacenter106as generally illustrated includes an application server108, a database server110, and a telephony server112. The servers108through112can each be a computing system, which can include one or more computing devices, such as a desktop computer, a server computer, or another computer capable of operating as a server, or a combination thereof. A suitable number of each of the servers108through112can be implemented at the datacenter106. The UCaaS platform uses a multi-tenant architecture in which installations or instantiations of the servers108through112is shared amongst the customers102A through102B.

In some implementations, one or more of the servers108through112can be a non-hardware server implemented on a physical device, such as a hardware server. In some implementations, a combination of two or more of the application server108, the database server110, and the telephony server112can be implemented as a single hardware server or as a single non-hardware server implemented on a single hardware server. In some implementations, the datacenter106can include servers other than or in addition to the servers108through112, for example, a media server, a proxy server, or a web server.

The application server108runs web-based software services deliverable to a client, such as one of the clients104A through104D. As described above, the software services may be of a UCaaS platform. For example, the application server108can implement all or a portion of a UCaaS platform, including conferencing software, messaging software, and/or other intra-party or inter-party communications software. The application server108may, for example, be or include a unitary Java Virtual Machine (JVM).

In some implementations, the application server108can include an application node, which can be a process executed on the application server108. For example, and without limitation, the application node can be executed in order to deliver software services to a client, such as one of the clients104A through104D, as part of a software application. The application node can be implemented using processing threads, virtual machine instantiations, or other computing features of the application server108. In some such implementations, the application server108can include a suitable number of application nodes, depending upon a system load or other characteristics associated with the application server108. For example, and without limitation, the application server108can include two or more nodes forming a node cluster. In some such implementations, the application nodes implemented on a single application server108can run on different hardware servers.

The database server110stores, manages, or otherwise provides data for delivering software services of the application server108to a client, such as one of the clients104A through104D. In particular, the database server110may implement one or more databases, tables, or other information sources suitable for use with a software application implemented using the application server108. The database server110may include a data storage unit accessible by software executed on the application server108. A database implemented by the database server110may be a relational database management system (RDBMS), an object database, an XML database, a configuration management database (CMDB), a management information base (MIB), one or more flat files, other suitable non-transient storage mechanisms, or a combination thereof. The system100can include one or more database servers, in which each database server can include one, two, three, or another suitable number of databases configured as or comprising a suitable database type or combination thereof.

In some implementations, one or more databases, tables, other suitable information sources, or portions or combinations thereof may be stored, managed, or otherwise provided by one or more of the elements of the system100other than the database server110, for example, the client104or the application server108.

The telephony server112enables network-based telephony and web communications from and to clients of a customer, such as the clients104A through104B for the customer102A or the clients104C through104D for the customer102B. Some or all of the clients104A through104D may be voice over internet protocol (VOIP)-enabled devices configured to send and receive calls over a network114. In particular, the telephony server112includes a session initiation protocol (SIP) zone and a web zone. The SIP zone enables a client of a customer, such as the customer102A or102B, to send and receive calls over the network114using SIP requests and responses. The web zone integrates telephony data with the application server108to enable telephony-based traffic access to software services run by the application server108. Given the combined functionality of the SIP zone and the web zone, the telephony server112may be or include a cloud-based private branch exchange (PBX) system.

The SIP zone receives telephony traffic from a client of a customer and directs same to a destination device. The SIP zone may include one or more call switches for routing the telephony traffic. For example, to route a VOIP call from a first VOIP-enabled client of a customer to a second VOIP-enabled client of the same customer, the telephony server112may initiate a SIP transaction between a first client and the second client using a PBX for the customer. However, in another example, to route a VOIP call from a VOIP-enabled client of a customer to a client or non-client device (e.g., a desktop phone which is not configured for VOIP communication) which is not VOIP-enabled, the telephony server112may initiate a SIP transaction via a VOIP gateway that transmits the SIP signal to a public switched telephone network (PSTN) system for outbound communication to the non-VOIP-enabled client or non-client phone. Hence, the telephony server112may include a PSTN system and may in some cases access an external PSTN system.

The telephony server112includes one or more session border controllers (SBCs) for interfacing the SIP zone with one or more aspects external to the telephony server112. In particular, an SBC can act as an intermediary to transmit and receive SIP requests and responses between clients or non-client devices of a given customer with clients or non-client devices external to that customer. When incoming telephony traffic for delivery to a client of a customer, such as one of the clients104A through104D, originating from outside the telephony server112is received, a SBC receives the traffic and forwards it to a call switch for routing to the client.

In some implementations, the telephony server112, via the SIP zone, may enable one or more forms of peering to a carrier or customer premise. For example, Internet peering to a customer premise may be enabled to ease the migration of the customer from a legacy provider to a service provider operating the telephony server112. In another example, private peering to a customer premise may be enabled to leverage a private connection terminating at one end at the telephony server112and at the other end at a computing aspect of the customer environment. In yet another example, carrier peering may be enabled to leverage a connection of a peered carrier to the telephony server112.

In some such implementations, a SBC or telephony gateway within the customer environment may operate as an intermediary between the SBC of the telephony server112and a PSTN for a peered carrier. When an external SBC is first registered with the telephony server112, a call from a client can be routed through the SBC to a load balancer of the SIP zone, which directs the traffic to a call switch of the telephony server112. Thereafter, the SBC may be configured to communicate directly with the call switch.

The web zone receives telephony traffic from a client of a customer, via the SIP zone, and directs same to the application server108via one or more Domain Name System (DNS) resolutions. For example, a first DNS within the web zone may process a request received via the SIP zone and then deliver the processed request to a web service which connects to a second DNS at or otherwise associated with the application server108. Once the second DNS resolves the request, it is delivered to the destination service at the application server108. The web zone may also include a database for authenticating access to a software application for telephony traffic processed within the SIP zone, for example, a softphone.

The clients104A through104D communicate with the servers108through112of the datacenter106via the network114. The network114can be or include, for example, the Internet, a local area network (LAN), a wide area network (WAN), a virtual private network (VPN), or another public or private means of electronic computer communication capable of transferring data between a client and one or more servers. In some implementations, a client can connect to the network114via a communal connection point, link, or path, or using a distinct connection point, link, or path. For example, a connection point, link, or path can be wired, wireless, use other communications technologies, or a combination thereof.

The network114, the datacenter106, or another element, or combination of elements, of the system100can include network hardware such as routers, switches, other network devices, or combinations thereof. For example, the datacenter106can include a load balancer116for routing traffic from the network114to various servers associated with the datacenter106. The load balancer116can route, or direct, computing communications traffic, such as signals or messages, to respective elements of the datacenter106.

For example, the load balancer116can operate as a proxy, or reverse proxy, for a service, such as a service provided to one or more remote clients, such as one or more of the clients104A through104D, by the application server108, the telephony server112, and/or another server. Routing functions of the load balancer116can be configured directly or via a DNS. The load balancer116can coordinate requests from remote clients and can simplify client access by masking the internal configuration of the datacenter106from the remote clients.

In some implementations, the load balancer116can operate as a firewall, allowing or preventing communications based on configuration settings. Although the load balancer116is depicted inFIG.1as being within the datacenter106, in some implementations, the load balancer116can instead be located outside of the datacenter106, for example, when providing global routing for multiple datacenters. In some implementations, load balancers can be included both within and outside of the datacenter106. In some implementations, the load balancer116can be omitted.

FIG.2is a block diagram of an example internal configuration of a computing device200of an electronic computing and communications system. In one configuration, the computing device200may implement one or more of the client104, the application server108, the database server110, or the telephony server112of the system100shown inFIG.1.

The computing device200includes components or units, such as a processor202, a memory204, a bus206, a power source208, peripherals210, a user interface212, a network interface214, other suitable components, or a combination thereof. One or more of the memory204, the power source208, the peripherals210, the user interface212, or the network interface214can communicate with the processor202via the bus206.

The processor202is a central processing unit, such as a microprocessor, and can include single or multiple processors having single or multiple processing cores. Alternatively, the processor202can include another type of device, or multiple devices, configured for manipulating or processing information. For example, the processor202can include multiple processors interconnected in one or more manners, including hardwired or networked. The operations of the processor202can be distributed across multiple devices or units that can be coupled directly or across a local area or other suitable type of network. The processor202can include a cache, or cache memory, for local storage of operating data or instructions.

The memory204includes one or more memory components, which may each be volatile memory or non-volatile memory. For example, the volatile memory can be random access memory (RAM) (e.g., a DRAM module, such as DDR SDRAM). In another example, the non-volatile memory of the memory204can be a disk drive, a solid state drive, flash memory, or phase-change memory. In some implementations, the memory204can be distributed across multiple devices. For example, the memory204can include network-based memory or memory in multiple clients or servers performing the operations of those multiple devices.

The memory204can include data for immediate access by the processor202. For example, the memory204can include executable instructions216, application data218, and an operating system220. The executable instructions216can include one or more application programs, which can be loaded or copied, in whole or in part, from non-volatile memory to volatile memory to be executed by the processor202. For example, the executable instructions216can include instructions for performing some or all of the techniques of this disclosure. The application data218can include user data, database data (e.g., database catalogs or dictionaries), or the like. In some implementations, the application data218can include functional programs, such as a web browser, a web server, a database server, another program, or a combination thereof. The operating system220can be, for example, Microsoft Windows®, Mac OS X®, or Linux®; an operating system for a mobile device, such as a smartphone or tablet device; or an operating system for a non-mobile device, such as a mainframe computer.

The power source208provides power to the computing device200. For example, the power source208can be an interface to an external power distribution system. In another example, the power source208can be a battery, such as where the computing device200is a mobile device or is otherwise configured to operate independently of an external power distribution system. In some implementations, the computing device200may include or otherwise use multiple power sources. In some such implementations, the power source208can be a backup battery.

The peripherals210includes one or more sensors, detectors, or other devices configured for monitoring the computing device200or the environment around the computing device200. For example, the peripherals210can include a geolocation component, such as a global positioning system location unit. In another example, the peripherals can include a temperature sensor for measuring temperatures of components of the computing device200, such as the processor202. In some implementations, the computing device200can omit the peripherals210.

The network interface214provides a connection or link to a network (e.g., the network114shown inFIG.1). The network interface214can be a wired network interface or a wireless network interface. The computing device200can communicate with other devices via the network interface214using one or more network protocols, such as using Ethernet, transmission control protocol (TCP), internet protocol (IP), power line communication, an IEEE 802.X protocol (e.g., Wi-Fi, Bluetooth, or ZigBee), infrared, visible light, general packet radio service (GPRS), global system for mobile communications (GSM), code-division multiple access (CDMA), Z-Wave, another protocol, or a combination thereof.

FIG.3is a block diagram of an example of a software platform300implemented by an electronic computing and communications system, for example, the system100shown inFIG.1. The software platform300is a UCaaS platform accessible by clients of a customer of a UCaaS platform provider, for example, the clients104A through104B of the customer102A or the clients104C through104D of the customer102B shown inFIG.1. The software platform300may be a multi-tenant platform instantiated using one or more servers at one or more datacenters including, for example, the application server108, the database server110, and the telephony server112of the datacenter106shown inFIG.1.

The software platform300includes software services accessible using one or more clients. For example, a customer302as shown includes four clients—a desk phone304, a computer306, a mobile device308, and a shared device310. The desk phone304is a desktop unit configured to at least send and receive calls and includes an input device for receiving a telephone number or extension to dial to and an output device for outputting audio and/or video for a call in progress. The computer306is a desktop, laptop, or tablet computer including an input device for receiving some form of user input and an output device for outputting information in an audio and/or visual format. The mobile device308is a smartphone, wearable device, or other mobile computing aspect including an input device for receiving some form of user input and an output device for outputting information in an audio and/or visual format. The desk phone304, the computer306, and the mobile device308may generally be considered personal devices configured for use by a single user. The shared device310is a desk phone, a computer, a mobile device, or a different device which may instead be configured for use by multiple specified or unspecified users.

Each of the clients304through310includes or runs on a computing device configured to access at least a portion of the software platform300. In some implementations, the customer302may include additional clients not shown. For example, the customer302may include multiple clients of one or more client types (e.g., multiple desk phones or multiple computers) and/or one or more clients of a client type not shown inFIG.3(e.g., wearable devices or televisions other than as shared devices). For example, the customer302may have tens or hundreds of desk phones, computers, mobile devices, and/or shared devices.

The software services of the software platform300generally relate to communications tools, but are in no way limited in scope. As shown, the software services of the software platform300include telephony software312, conferencing software314, messaging software316, and other software318. Some or all of the software312through318uses customer configurations320specific to the customer302. The customer configurations320may, for example, be data stored within a database or other data store at a database server, such as the database server110shown inFIG.1.

The telephony software312enables telephony traffic between ones of the clients304through310and other telephony-enabled devices, which may be other ones of the clients304through310, other VOIP-enabled clients of the customer302, non-VOIP-enabled devices of the customer302, VOIP-enabled clients of another customer, non-VOIP-enabled devices of another customer, or other VOIP-enabled clients or non-VOIP-enabled devices. Calls sent or received using the telephony software312may, for example, be sent or received using the desk phone304, a softphone running on the computer306, a mobile application running on the mobile device308, or using the shared device310that includes telephony features.

The telephony software312further enables phones that do not include a client application to connect to other software services of the software platform300. For example, the telephony software312may receive and process calls from phones not associated with the customer302to route that telephony traffic to one or more of the conferencing software314, the messaging software316, or the other software318.

The conferencing software314enables audio, video, and/or other forms of conferences between multiple participants, such as to facilitate a conference between those participants. In some cases, the participants may all be physically present within a single location, for example, a conference room, in which the conferencing software314may facilitate a conference between only those participants and using one or more clients within the conference room. In some cases, one or more participants may be physically present within a single location and one or more other participants may be remote, in which the conferencing software314may facilitate a conference between all of those participants using one or more clients within the conference room and one or more remote clients. In some cases, the participants may all be remote, in which the conferencing software314may facilitate a conference between the participants using different clients for the participants. The conferencing software314can include functionality for hosting, presenting scheduling, joining, or otherwise participating in a conference. The conferencing software314may further include functionality for recording some or all of a conference and/or documenting a transcript for the conference.

The messaging software316enables instant messaging, unified messaging, and other types of messaging communications between multiple devices, such as to facilitate a chat or other virtual conversation between users of those devices. The unified messaging functionality of the messaging software316may, for example, refer to email messaging which includes a voicemail transcription service delivered in email format.

The other software318enables other functionality of the software platform300. Examples of the other software318include, but are not limited to, device management software, resource provisioning and deployment software, administrative software, third party integration software, and the like. In one particular example, the other software318can include software for task-based virtual calendar scheduling assertion.

The software312through318may be implemented using one or more servers, for example, of a datacenter such as the datacenter106shown inFIG.1. For example, one or more of the software312through318may be implemented using an application server, a database server, and/or a telephony server, such as the servers108through112shown inFIG.1. In another example, one or more of the software312through318may be implemented using servers not shown inFIG.1, for example, a meeting server, a web server, or another server. In yet another example, one or more of the software312through318may be implemented using one or more of the servers108through112and one or more other servers. The software312through318may be implemented by different servers or by the same server.

Features of the software services of the software platform300may be integrated with one another to provide a unified experience for users. For example, the messaging software316may include a user interface element configured to initiate a call with another user of the customer302. In another example, the telephony software312may include functionality for elevating a telephone call to a conference. In yet another example, the conferencing software314may include functionality for sending and receiving instant messages between participants and/or other users of the customer302. In yet another example, the conferencing software314may include functionality for file sharing between participants and/or other users of the customer302. In some implementations, some or all of the software312through318may be combined into a single software application run on clients of the customer, such as one or more of the clients304through310.

FIG.4is a block diagram of an example of a system400for task-based virtual calendar scheduling assertion. The system400includes a user device402used by a software user of a software platform, for example, the software platform300shown inFIG.3, and a server device404used to implement one or more software services of that software platform. The user device402may referred to as a client device, and may accordingly be, for example, one of the clients304through310shown inFIG.3. The server device404may, for example, be a server at a datacenter, such as the application server108shown inFIG.1.

The user device402runs a client application406, which is a desktop, mobile, or web-based application for enabling the user device402to access and use functionality (e.g., software services and related data) of the software platform. In particular, the client application406includes client-side communication software408, which may correspond to one or more of one or more of an email service, chat service, conferencing (e.g., audio and/or video conferencing) service, and/or telephony service of the software platform. The client application406, via the client-side communication software410, accesses and thus enables the software user to use server-side communication software416implemented at the server device404. The server-side communication software416implements communications over one or more modalities between the software user and other users of the software platform. The server-side communication software416may, for example, be one or more of the software312through318shown inFIG.3. For example, the server-side communication software416may correspond to one or more of one or more of an email service, chat service, conferencing (e.g., audio and/or video conferencing) service, and/or telephony service of the software platform. The client application406further includes a virtual calendar410, task-based virtual calendar scheduling assertion software412, and user-specific calendar rules data414.

The virtual calendar410is a digital representation of a calendar for the software user. The virtual calendar410depicts meetings and other appointments (e.g., periods set for actioning one or more tasks) for which the software user is scheduled to attend and to which the software user has been invited to attend, as well as times during which the software user is available for other things (e.g., actioning tasks from their task list). For example, events and appointments may be depicted using visual objects (e.g., blocks) placed on the virtual calendar410at dates and times corresponding to those events and appointments, whereas available times (i.e., times during which there are no events or appointments for the software user) may be depicted by the omission of such visual objects. In some cases, the virtual calendar410may present a limited number of days and/or times for viewing by the software user (e.g., only business hours and/or only the business days of the current week). In other cases, the days and/or times for viewing by the software user within the virtual calendar410may be unlimited or practically unlimited (e.g., ranging for more than a year from a current day). Events and appointments within the virtual calendar410may include meeting-related information, such as physical and/or virtual locations at which subject meetings will be held. For example, a virtual location may be represented using a hyperlink (e.g., to a conference instance facilitated using software of the software platform, such as the conferencing software314shown inFIG.3). The client application406may implement the virtual calendar410. Alternatively, the client application406may access the virtual calendar410from an external source, such as software external to the software platform.

The task-based virtual calendar scheduling assertion software412generates user-specific calendar rules associated with the software user and asserts same against the virtual calendar410. A user-specific calendar rule is a rule specific to the software user for adjusting, setting, or otherwise using a virtual calendar of the software user based on meetings and/or tasks of the software user. In particular, a user-specific calendar rule indicates a determined importance of certain meetings or tasks or of certain types of meetings or tasks to the software user. In some cases, a user-specific calendar rule may also or instead indicate a scheduling preference, such as a preference to or not to schedule a meeting or other appointment at one or more certain times independent of or related to one or more existing meetings or other appointments.

Referring toFIG.5, a block diagram of example functionality of the task-based virtual calendar scheduling assertion software412is shown. The task-based virtual calendar scheduling assertion software412includes tools, such as programs, subprograms, functions, routines, subroutines, operations, and/or the like, for task-based virtual calendar scheduling assertion. As shown, the task-based virtual calendar scheduling assertion software412includes a calendar rule generation tool500, a task collection tool502, a priority level processing tool504, a virtual calendar adjustment tool506, and a machine learning model training tool508.

The calendar rule generation tool500generates user-specific calendar rules for the software user by modeling trend and priority data for meetings and tasks associated with the software user. The user-specific calendar rules are rules indicating how and when to prioritize certain events (e.g., for meetings or tasks) against others based on the trend and priority data, which are modeled to determine behaviors specific to the software user related to meetings and tasks as well as prioritizations of certain of such meetings and tasks.

Trend data as may be modeled by the task-based virtual calendar scheduling assertion software412generally refers to determined trends in behaviors of the software user relative to certain meetings or other appointments or to certain types of meetings or other appointments. Priority data as may be modeled by the task-based virtual calendar scheduling assertion software412generally refers to the determined importance of certain meetings or other appointments or to certain types of meetings or other appointments, in which such determined importance is represented using priority levels. A priority level may be expressed in terms of a category (e.g., low, medium, and high) or in terms of a rating (e.g., 1-10). The user-specific calendar rules data414represents data indicative of user-specific calendar rules generated for the software user by the task-based virtual calendar scheduling assertion software412. For example, the user-specific calendar rules data414may represent the output of the calendar rule generation tool500. The user-specific calendar rules data414may be stored in a data store accessible to the client application406. For example, the data store used to store the user-specific calendar rules data414may be local to the user device402and/or remote, such as on the server device404or another server.

The calendar rule generation tool500generates the user-specific calendar rules based on information obtained from the server device404. In particular, referring back toFIG.4, user records data418stored at the server device may be accessed and used by the task-based virtual calendar scheduling assertion software412and used by the calendar rule generation tool500to generate one or more user-specific calendar rules for the software user. The user records data418is data indicative or otherwise representative of historical meeting attendance, historical task performance, historical availability, and/or historical unavailability. The calendar rule generation tool500processes the user records data418to infer patterns in availability and behavior of the software user. For example, the user records data418may correspond to communications facilitated using the server-side communication software416in which the software user was involved. As such, the user records data418may indicate, include, represent, or otherwise correspond to the content of one or more communications involving the software user over one or more modalities. For example, where data of the user records data418corresponds to a one-time or recurring meeting (e.g., an audio or video conference implemented via conferencing software as the server-side communication software416), the data may indicate whether the software user spoke or remained silent at the one-time or recurring meeting and/or the actual content of the speech from the software user at the one-time or recurring meeting (where the software user spoke at same). Similarly, where the meeting is a video conference, the data may indicate whether the software user enables video from the user device402or disables video for the meeting. In another example, where data of the user records data418corresponds to an email chain on which the software user is included (i.e., in the “to” field or the “cc” field), the data may indicate whether the software user participated in the email chain or was merely a recipient of the email messages thereof. The user records data418may be produced or otherwise output by the server-side communication software416in real-time or after a completion of the subject communication (e.g., during a video conference or after a video conference ends).

In some cases, participation or non-participation in a meeting may be inferred based on contents of the user records data418unrelated to the meeting. For example, where a recurring meeting is labeled as a hiking expedition on which the software user has been invited, but the software user has expressed in a chat message or email message that they dislike hiking, non-participation may be inferred based on the expression by the software user. In some such cases, a user-specific calendar rule may indicate to automatically decline events the software user is invited to but for which non-participation is inferred and priority data indicates a low priority.

While the user records data418are shown and described as being at the server device404, in some implementations, some or all of the user records data418may be at the user device402. For example, emails accessible via the client-side communication software408may be stored locally at the user device402and used by the calendar rule generation tool500as described herein to generate one or more user-specific calendar rules.

A user-specific calendar rule may be generated based on information other than that of inferred participation behaviors, such as in addition to or instead of such behavioral information. In particular, a user-specific calendar rule may be determined based on calendar-related information, such as relative to a specific day of the week (e.g., Tuesdays) or date (the first day of the month or the third Thursday of the month). For example, the trend and priority data may indicate that the software user typically has half as many meetings on Tuesdays than on other days, and the calendar rule generation tool500may accordingly generate a user-specific calendar rule indicating to prioritize task-related event scheduling on Tuesdays. In another example, the trend and priority data may indicate that the software user typically does not work past 3 PM local time on Fridays, and the calendar rule generation tool500may accordingly generate a user-specific calendar rule indicating not to schedule events on the virtual calendar410after 3 PM local time on Fridays.

The user-specific calendar rules are generated based on both of the trend data and the priority data. As such, participation or non-participation by the software user in certain meetings or types of meetings may be weighed against priority data for those meetings to determine user-specific calendar rules corresponding to those meetings or types of meetings. For example, the trend data may indicate that the software user does not participate in a recurring meeting, but the priority data corresponding to that recurring meeting may indicate a high priority level based on the subject matter or one or more interested parties hosting or otherwise attending the meeting. In another example, the trend data may indicate that the meeting has a high priority based on the presence of at least one participant external to an organization of the software user. For example, a participant may be determined to be external to the organization of the software user where the participant has an email address (e.g., known based on registration with the software platform) corresponding to a domain other than a domain used by the organization.

The task collection tool502obtains a set of pending tasks for the software user. As will be described below, the task-based virtual calendar scheduling assertion software412asserts the user-specific calendar rules against the virtual calendar410based on a set of pending tasks of the software user. The set of pending tasks indicates all tasks remaining open for actioning by the software user. A task as may be included in the set of pending tasks generally refers to something that has been either directly or indirectly assigned to the software user to handle. For example, a task may relate to some work on a project, a deliverable due to a customer, a follow-up item, or another professional or otherwise work-related matter. In some cases, a task may be other than relative to the professional work of the software user. For example, one or more tasks of the set of pending tasks may be personal in nature to the software user (e.g., scheduling a medical appointment, attending a friend's wedding or a child's concert recital, or completing insurance paperwork). Some tasks may be actionable from any location and without requiring specific or otherwise special resources. Other tasks may require actioning from a certain location and/or using certain specific or otherwise special resources. For example, a first task to write a project specification document may be actioned from any location using general word processing software available on any of multiple devices usable by the software user, while a second task to bind physical copies of a user manual may require a specific machine present at an office premises and thus require the software user to be at the office premises to action it.

The task collection tool502may obtain tasks of the set of pending tasks from one or more sources internal and/or external to the software platform. For example, one or more tasks may be determined based on their presence within a task list of the software user, such as which may be maintained using the client application406or other software of the software platform. In another example, one or more tasks may be determined by processing contents of communications (e.g., emails or chat messages) involving the software user, subject to the participants of those communications enabling the relevant software to provide such contents. In yet another example, one or more tasks may be determined by processing contents of non-client application software running at the user device402, subject to the software user enabling the relevant software to provide such contents. In still a further example, one or more tasks may be determined based on a third party application integrated with the software platform, for example, using an application programming interface (API) call to that third party application. In some cases, obtaining the set of pending tasks can include determining the tasks, such as where at least some tasks of the set of pending tasks are not already expressed in a task list. In other cases, such as where all tasks of the set of pending tasks are already expressed in a task last, obtaining the set of pending tasks can include obtaining the set of pending tasks without determining the tasks.

The priority level processing tool504determines priority levels of tasks of the set of pending tasks and priority levels of meetings on the virtual calendar410. The priority level for a task or a meeting may be determined based on one or more of manual user input, stack rank information, metadata factors, or prioritizations of related tasks or meetings. The manual user input may, for example, indicate an expression by the software user or another software user (e.g., a team leader or other superior of the software user within the same organization) of an importance of a task or meeting. For example, permutations of the words “important,” “urgent,” “help,” “immediate,” and the like as used within a meeting or task label (e.g., title) or description may be processed as manual user input. In another example, a prompt may be presented (e.g., by the task-based virtual calendar scheduling assertion software412) based on a new meeting or task being created or identified (e.g., by the receipt of a meeting invitation), in which the prompt asks the software user to verify or otherwise provide a priority level for the meeting or task. The stack rank information may indicate an ordering of tasks, such as based on a user arrangement by the software user, a date arrangement indicating an order in which the tasks were added to a task list, or the like. The metadata factors are based on metadata associated with the task or meeting. For example, a metadata factor may indicate an urgency based on a perceived deadline for a task or an amount of time that a task has remained pending. In another example, a metadata factor may indicate whether a task or meeting was created by the software user or by another software user. In yet another example, the metadata factor may indicate a location at which a task is to be performed, such as where a label for the task specifies or implies a location (e.g., in which a location is implied by a task labeled “replace cables in server room,” in that the is recognized as that of an office premises associated with the software user). The prioritizations of related tasks or meetings contemplate how high or low priority levels are for such related tasks or meetings, such that the priority level for a current task or meeting may be aligned therewith.

Using the above inputs, a priority level for a given task or meeting may be determined in a manner similar to the priority levels described above with respect to the generation of the user-specific calendar rules. In one example, a task may have a high priority where it has an urgent deadline or where it requires some equipment available at a specific location the software user is expected to be at a given time. In another example, a meeting may have a high priority where a stakeholder such as a C-level officer or executive is expected to attend. In yet another example, a meeting may have a low priority where transcriptions of similar meetings (e.g., as indicated by the user records data418) indicate a non-participation in such meetings by the software user. In some cases, the priority level for a meeting may also or instead be determined based on other participants to the meeting. For example, where a threshold number of other software users are already expected to attend a given meeting and other criteria generally indicates a low priority for the meeting for the software user, the meeting may be determined to have a low priority. In another example, where that threshold number of other software users are not already expected to attend, even though the other criteria generally indicates a low priority for the meeting for the software user, the meeting may be determined to have a high priority to emphasize an importance that the software user attend.

In some cases, a priority level for a meeting or task may be expressed as a binary value of either “high” or “low.” In some cases, a priority level for a meeting or task may be expressed as a non-binary but non-numerical value, for example, “high,” “medium,” or “low.” In some cases, a priority level for a meeting or task may be expressed as a numerical value, for example, an integer value from 1 through 10, inclusive. Other examples are also possible. Where a priority level has already been determined for a meeting or task having an inferred relationship with a current meeting or task for which a priority level is being determined (e.g., based on a subject matter similarity or a similar title), the priority level for that meeting or task may be re-used for the current meeting or task.

The virtual calendar adjustment tool506asserts the user-specific calendar rules against the virtual calendar410based on the set of pending tasks and priority levels of those tasks and of meetings on the virtual calendar410to determine whether to adjust some aspect of the virtual calendar410. In particular, determines whether any task of the set of pending tasks has a higher priority level than one or more of the events (e.g., meetings or tasks) already on the virtual calendar410. In the event such a task has a higher priority level than those one or more events on the virtual calendar410, the virtual calendar adjustment tool506asserts the user-specific calendar rules to evaluate whether any of those one or more events should be removed from the virtual calendar410and the task with the higher priority level added thereto. In the event an event is to be removed from and the task added to the virtual calendar410, the virtual calendar adjustment too506causes an adjustment to the virtual calendar410to remove the subject event from the virtual calendar410and to add a new event corresponding to the task with the higher priority level to the virtual calendar410. For example, to cause the adjustment, the virtual calendar adjustment tool506can either directly adjust the virtual calendar410or transmit instructions, commands, or the like to software that facilitates the virtual calendar410(e.g., the client-side communication software408, such as where same is an email client, or the client application406itself).

In an example use case, a task of the set of pending tasks of the software user related to updating a knowledgebase article may have a higher priority than a recurring meeting currently on the virtual calendar410. The virtual calendar adjustment tool506compares the priority levels of that task and of that meeting to determine same. Based on such determination, the virtual calendar adjustment tool506asserts the user-specific calendar rules to validate the change. For example, a user-specific calendar rule may indicate that the recurring meeting can be replaced given that the software user historically and generally does not participate in it. The virtual calendar410is accordingly adjusted to remove the meeting therefrom and to add thereto a new event corresponding to the updating a knowledgebase article task, scheduled for some or all of the same timeslot during which the now removed meeting was previously scheduled. In another example use case following the same task and meeting example, a user-specific calendar rule may indicate to prevent the meeting from being replaced despite it having a lower priority level than the task where the software user has missed the N (e.g., three) past occurrences of that recurring meeting. In such a case, despite the task having a higher priority level than the meeting, the virtual calendar adjustment tool506does not adjust the virtual calendar410by removing the meeting and adding a new event corresponding to the task.

In some implementations, a predicted amount of time required for completing a given task may be compared against the virtual calendar410to ensure such an amount of time may be available before asserting a user-specific calendar rule to add an event for the task to the virtual calendar410. For example, the task-based virtual calendar scheduling assertion software412may include functionality for predicting such amounts of time, for example, as part of the calendar rule generation functionality described above with respect to the calendar rule generation tool500. In some such implementations, predicting an amount of time required for a given task can include modeling the trend and/or priority data relevant to the given task (e.g., based on subject matter, naming, or other similarities to the given task), such as to determine historical amounts of time spent completing similar tasks. For example, a task of the set of pending tasks for the software user may be labeled as “complete competency test.” The trend data for the software user may indicate that it typically takes the software user, on average, three hours to complete this task. The task-based virtual calendar scheduling assertion software412may thus verify that at least three hours are available for the task prior to asserting the relevant user-specific calendar rule for this task. In a related example, where past such tasks have been labeled as “complete competency test” but a task of the set of pending tasks instead is labeled as “do competency,” the task-based virtual calendar scheduling assertion software412may infer a subject matter relationship to the user-specific calendar rule indicating to verify three hours of available for “complete competency test” tasks based on a keyword or related comparison. In that the user-specific calendar rules are generated specific to the subject software user, other amounts of time may be modeled and thus determined for the same tasks for other software users, such as where the historic trend data for those other software users indicate that individuals ones of them require amounts of time other than those determined for the subject software user described herein.

In some implementations, an expected location of the software user at a timeslot for which a user-specific calendar rule may be asserted may be determined and used to verify the assertion of the user-specific calendar rule. For example, where a given task of a set of pending tasks of the software user requires the software user to be in a particular location (e.g., based on equipment or other resource availability), the virtual calendar adjustment tool506can verify that the software user will be at such location at a time when the given task will be added to the virtual calendar410before asserting a subject user-specific calendar rule to cause the given task to be so added to the virtual calendar410.

In some implementations, asserting a user-specific calendar rule to adjust the virtual calendar410can include transmitting a request to modify a virtual calendar of one or more other software users and/or an indication of the modification to the virtual calendar410. For example, where the virtual calendar adjustment tool506modifies the virtual calendar410by the user-specific calendar rule assertion to remove a meeting and add a time period for the software user to action a task, the virtual calendar adjustment tool506may transmit an indication to an owner of the meeting (e.g., a meeting host or other interested party) to indicate that the software user will not be attending the meeting. In another example, where the virtual calendar adjustment tool506modifies the virtual calendar410by the user-specific calendar rule assertion to remove some event and add a task to be performed by the software user and one or more other users or a task managed or otherwise overseen by the one or more other users, the virtual calendar adjustment tool506may automatically generate and transmit to devices of those one or more other users an invitation to add a new calendar event associated with the task to their virtual calendars.

FIGS.6A-Bare illustrations of example GUIs of an email client that facilitates a virtual calendar of a software user. The email client may, for example, be software of a software platform (e.g., the software platform300) used by the software user. In particular, the email client may be a software application via which the software user reads and/or writes emails and views and/or interacts with the virtual calendar of the software user (e.g., the virtual calendar410). Referring first toFIG.6A, a first GUI600A is shown. The first GUI600A includes a calendar region602, a daily schedule region604, and an email region606. The date Oct. 28, 2022 is circled in the calendar region602to indicate that it is the current date. The schedule region604depicts the portion of the virtual calendar of the software user corresponding to the current date. As shown, the portion of the virtual calendar corresponding to the current date includes several events with little available time between them.

The task-based virtual calendar scheduling assertion software412may process the events shown in the schedule region604against a set of pending tasks for the software user to adjust the virtual calendar of the software user. Such an adjustment is reflected in the schedule region604. In the example shown, the events from the virtual calendar initially include an all hands meeting from 9:00 AM to 10:00 AM, a customer call from 10:00 AM to 11:45 AM, a team time meeting from 12:00 PM to 2:00 PM, a 2023 roadmap call from 2:00 PM to 3:30 PM, and a meeting with a quality assurance (QA) tester from 3:30 PM to 4:30 PM. While not shown, the set of pending tasks may include a task related to drafting a project report. In particular, the priority level for that task may be relatively high based on, for example, an urgent deadline for delivering the report, an importance of the party who will receive the report, and/or a length of time that the drafting task has remained open on a task list of the software user.

The task-based virtual calendar scheduling assertion software412, such as via the virtual calendar adjustment tool506, may determine that the priority level for the task is higher than the priority level of one or more of the events shown in the schedule region604. In particular, a priority level for the all hands meeting, customer call, 2023 roadmap call, and QA tester meeting may all be high due to, for example, an importance of those various events. However, a priority level for the team time meeting may be low due, for example, to a perceived low participation level of the software user in similar meetings. As such, the task-based virtual calendar scheduling assertion software412here has determined that the priority level for the project report drafting task is higher than the priority level for the team time meeting and has accordingly adjusted the virtual calendar to remove the team time meeting therefrom and to add a new event corresponding to the project report drafting task thereto. These adjustments608are shown by the team time meeting event being stricken through in the schedule region604and by the draft project report event being underlined in the schedule region604.

In response to this virtual calendar adjustment, the email client, such as via a command or instruction from the task-based virtual calendar scheduling assertion software412, automatically generates a new email message610to deliver to an interested party associated with the team time meeting event that was removed from the virtual calendar. For example, the interested party may be the host of a video conference scheduled for the team time meeting event (e.g., using the conferencing software314). Here, the interested party is Alice Anderson, and the email message610indicates that the software user has declined the team time meeting event and thus will not be attending. In some cases, the email message610may be presented within the GUI600A and thus at the device of the software user before the email message610is transmitted to the intended recipient, such as to allow the software user to verify and/or modify the email message610before such transmission. In some cases, the email message610may be transmitted upon (e.g., in response to) the automatic generation thereof. In this example, the project report drafting task newly added to the virtual calendar does not involve other software users, so no meeting invitations to others are required for the project report drafting task.

Referring next toFIG.6B, a second GUI600B is shown. The second GUI600B includes the same calendar region602, schedule region604, and email region606as are shown inFIG.6A. Here, however, the task-based virtual calendar scheduling assertion software412may process the events shown in the schedule region604against the set of pending tasks for the software user to determine that the priority level for the team time meeting event is lower than a priority level determined for an address bugs task of the set of pending tasks of the software user. Based on that determination, the task-based virtual calendar scheduling assertion software412adjusts the virtual calendar of the software user by removing the team time meeting therefrom and to add a new event corresponding to the address bugs task thereto. These adjustments612are shown by the team time meeting event being stricken through in the schedule region604and by the address bugs event being underlined in the schedule region604.

In response to this virtual calendar adjustment, the email client, such as via a command or instruction from the task-based virtual calendar scheduling assertion software412, automatically generates a new email message614to deliver to an interested party associated with the address bugs event that was added to the virtual calendar. For example, the interested party may be another software user who also has the same task on their set of pending tasks. In another example, the interested party may be inferred based on text associated with the subject task within the set of pending tasks of the software user (e.g., where the task in the set of pending tasks is described as “address bugs with [other user name]”). Here, the interested party is Brian Brenton, and the email message614indicates that the software user has an event related to the address bugs task and includes a link to a meeting invitation for the event. The recipient can click on the link to either cause the address bugs event to also appear on their virtual calendar and/or join a conference for the event at the scheduled time. In some cases, another email may be automatically generated and manually or automatically transmitted, as described above with respect toFIG.6A, to indicate to an interested party associated with the team time meeting event that the software user has declined that event.

While first GUI600A and the second GUI600B are shown as not depicting a task list usable to obtain the set of pending tasks for the software user, the implementations of this disclosure are not so limited. In particular, in some implementations, an email client such as the one depicted in the first GUI600A and the second GUI600B may include a task list tool for allowing a software user to view and/or interact with (i.e., add to, remove from, or otherwise modify) a task list. In some such cases, the email client includes and thus manages the task list. In other such cases, the email client accesses the data of the task list from an external source. While the examples shown and described with respect toFIGS.6A-Bdescribe asserting user-specific virtual calendar rules against a virtual calendar to adjust the virtual calendar for a same day, the implementations of this disclosure are not so limited. In particular, a virtual calendar may in many be adjusted as disclosed herein to change events for a day other than a current day.

Referring back toFIG.5, the machine learning model training tool508trains a machine learning model to perform some or all of the processing described in the tools500through506. A machine learning model as used herein may be one or more of a neural network (e.g., a convolutional neural network, recurrent neural network, or other neural network), decision tree, vector machine, Bayesian network, genetic algorithm, deep learning system separate from a neural network, or other machine learning model. The machine learning model may be supervised or unsupervised. The machine learning model applies intelligence to identify complex patterns in the input and to leverage those patterns to produce output and refine systemic understanding of how to generate and/or assert user-specific calendar rules against the virtual calendar410.

In particular, a machine learning model as used herein may be trained using a training data set including trend data and priority data as is modeled to generate the user-specific rules. For example, the machine learning model may be trained to recognize patterns in software user participation or non-participation based on certain meetings or types of meetings. In another example, the machine learning model may be trained to recognize patterns in priority levels based on who other participants to the meetings are. Training the machine learning model can include incrementally inputting portions of the training data set and using same to update the patterns recognized by the machine learning model. The trained machine learning model may then be used for inference, such as to determine a priority level for a meeting or task and/or to determine to assert one or more user-specific calendar rules against the virtual calendar of the software user to change their virtual calendar in some manner as described herein.

Although the tools500through508are shown as functionality of the task-based virtual calendar scheduling assertion software412as a single piece of software, in some implementations, some or all of the tools500through508may exist outside of the task-based virtual calendar scheduling assertion software412and/or the client application406may exclude the task-based virtual calendar scheduling assertion software412while still including the some or all of tools500through508in some form elsewhere or otherwise while some or all of the tools500through508are still included in some form elsewhere. For example, some or all of the tools500through508may be implemented on a server, such as the server device404.

Referring finally back toFIG.4, while the client-side communication software408, the virtual calendar410, the task-based virtual calendar scheduling assertion software412, and the user-specific calendar rules data414are shown as separate elements of the client application406, in some implementations, some or all of the client-side communication software408, the virtual calendar410, the task-based virtual calendar scheduling assertion software412, and the user-specific calendar rules data414may be combined into one or more elements of the client application. Furthermore, in some implementations, one or more of the client-side communication software408, the virtual calendar410, the task-based virtual calendar scheduling assertion software412, or the user-specific calendar rules data414may be external to the client application406.

To further describe some implementations in greater detail, reference is next made to examples of techniques which may be performed by or using a system for task-based virtual calendar scheduling assertion.FIG.7is a flowchart of an example of a technique700for task-based virtual calendar scheduling assertion. The technique700can be executed using computing devices, such as the systems, hardware, and software described with respect toFIGS.1-6. The technique700can be performed, for example, by executing a machine-readable program or other computer-executable instructions, such as routines, instructions, programs, or other code. The steps, or operations, of the technique700, or another technique, method, process, or algorithm described in connection with the implementations disclosed herein, can be implemented directly in hardware, firmware, software executed by hardware, circuitry, or a combination thereof.

At702, user-specific calendar rules are generated. The user-specific calendar rules are rules for automated assertion against a virtual calendar of a software user. The user-specific calendar rules are generated by modeling trend and priority data for meetings and tasks associated with a software user. As such, the user-specific calendar rules are specific to the software user (i.e., as opposed to be generated based on data aggregated across multiple software users). In one example in which the virtual calendar is facilitated by an email client, generating the user-specific calendar rules includes determining a trend in one or both of a participation or a non-participation by the software user within an email chain, and generating a user-specific calendar rule according to the trend. In another example, generating the user-specific calendar rules includes generating a user-specific calendar rule indicating to deprioritize recurring meetings for which the trend and priority data indicates a trend of low participation by the software user. In some implementations, such as where the software user is a user of a UCaaS platform that includes the virtual calendar, generating the user-specific calendar rules can include evaluating messages transmitted to the software user over multiple modalities via software services of the UCaaS platform. In some implementations, a trained machine learning model may be used to generate the user-specific calendar rules. In some such implementations, the machine learning model may be trained using messages transmitted over one or more modalities via one or more software services of the software platform (e.g., the UCaaS platform) to generate the user-specific calendar rules.

At704, pending tasks of the software user are obtained. In particular, a set of pending tasks of the software user is obtained, in which some or all of the pending tasks of the set of pending tasks may be derived from a source internal to a software platform which, via a software service, facilitates the virtual calendar of the software user. For example, a first subset of the set of pending tasks may derive from one or more sources internal to the software platform and a second subset of the set of pending tasks may derive from one or more sources external to the software platform. In one such case, one or more tasks of the set of pending tasks may be obtained from a third party application integrated with the software platform, such as using an API call to the third party application. For example, at least one task of the set of pending tasks may be obtained based on an integration between an email client facilitating the virtual calendar and a source external to the software platform. In other cases, the entire set of pending tasks may accordingly be obtained from a third party application integrated with the software platform using an API call to the third party application. In some implementations, the set of pending tasks may include one or more tasks assigned other than by the software user. In some implementations, the set of pending tasks includes one or more tasks specific to the software user and one or more tasks enforced against multiple software users. For example, some of the pending tasks may be specific to the software user while others may be tasks awaiting action, separately or collectively, by other software users (e.g., completing compliance testing).

At706, priority levels of the pending tasks of the software user are determined708. The priority levels of the pending tasks may be determined based on various inputs, including, without limitation, manual user input, metadata factors, and the like. In some cases, the priority level of a current task may be determined based on trends determined for other software users based on actions performed by the other software users in connection with tasks similar to the current task. For example, while the user-specific calendar rules are generated specific to the subject software user, priority level information for tasks may in some cases be aggregated across multiple software users. In some cases, priority levels may be determined for meetings already on the virtual calendar of the software user in addition to the pending tasks. For example, the priority level of the a current, recurring meeting may be determined by evaluating data associated with one or more past occurrences of the current meeting. In some such cases, the data may be indicative of a trend of action or inaction by the software user with the one or more past occurrences of the current meeting. In some cases, determining the priority level of a task can include extrapolating resource requirements for performing the current task based on input specified by the software user for the current task. For example, the resource requirements may relate to equipment or other resources required to action the task and may be extrapolated (e.g., inferred) based on metadata factors or manual user input associated with the task. In some cases, determining the priority level of a task can include determining the priority level based on one or more of a current activity of the software user, a location at which the software user is expected to perform the current task, or a historical preference of the software user relative to tasks related to the current task.

At708, a determination that a priority level of a current task is higher than a priority level of an event (e.g., for a current meeting) on the virtual calendar of the software user. The determination is made by asserting the user-specific calendar rules generated for the software user. In some cases, asserting a user-specific calendar rule to determine that a priority level of the current task is higher than a priority level of the event, in which the current task requires a resource located at a premises, may include determining that the software user will be present at the premises at a time of the current meeting. In the event that the priority level of a task is the same as a priority level for the event on the virtual calendar, the software user may be prompted to indicate which to retain on the virtual calendar and which to discard. In some cases, an automated decision may be made to retain the existing event and thus to not cause an adjustment to the virtual calendar based on the current task.

At710, based on the determination that the priority level of the current task is higher than the priority level of the current meeting on the virtual calendar of the software user, an adjustment is caused to the virtual calendar of the software user to remove the current meeting therefrom and to add a new event corresponding to the current task thereto. For example, causing the adjustment to the virtual calendar may include automatically adjusting the virtual calendar to remove the current meeting from the virtual calendar and to add the new event to the virtual calendar in response to determining that the priority of the current task is higher than the priority level of the current meeting. In another example, causing the adjustment to the virtual calendar may include prompting the software user with a recommendation to remove the current meeting from the virtual calendar and to add the new event to the virtual calendar in response to determining that the priority of the current task is higher than the priority level of the current meeting. In either such case, causing the adjustment to the virtual calendar may, for example, include instruct an email client facilitating the virtual calendar to remove the current meeting from the virtual calendar and to add the new event to the virtual calendar.

The implementations of this disclosure correspond to methods, non-transitory computer readable media, apparatuses, systems, devices, and the like. In some implementations, a method comprises: generating, by modeling trend and priority data for meetings and tasks associated with a software user, user-specific calendar rules for automated assertion against a virtual calendar of the software user; obtaining a set of pending tasks of the software user; determining, by asserting the user-specific calendar rules against the virtual calendar, that a priority level of a current task of the set of pending tasks is higher than a priority level of a current meeting scheduled on the virtual calendar; and causing an adjustment to the virtual calendar to remove the current meeting and add a new event corresponding to the current task. In some implementations, a non-transitory computer readable medium stores instructions operable to cause one or more processors to perform operations comprising: generating, by modeling trend and priority data for meetings and tasks associated with a software user, user-specific calendar rules for automated assertion against a virtual calendar of the software user; obtaining a set of pending tasks of the software user; determining, by asserting the user-specific calendar rules against the virtual calendar, that a priority level of a current task of the set of pending tasks is higher than a priority level of a current meeting scheduled on the virtual calendar; and causing an adjustment to the virtual calendar to remove the current meeting and add a new event corresponding to the current task. In some implementations, an apparatus comprises a memory and a processor configured to execute instructions stored in the memory to: generate, by modeling trend and priority data for meetings and tasks associated with a software user, user-specific calendar rules for automated assertion against a virtual calendar of the software user; obtain a set of pending tasks of the software user; determine, by asserting the user-specific calendar rules against the virtual calendar, that a priority level of a current task of the set of pending tasks is higher than a priority level of a current meeting scheduled on the virtual calendar; and cause an adjustment to the virtual calendar to remove the current meeting and add a new event corresponding to the current task.

In some implementations of the method, non-transitory computer readable medium, or apparatus, the virtual calendar is facilitated by an email client, and generating the user-specific calendar rules comprises: determining a trend in one or both of a participation or a non-participation by the software user within an email chain; and generating a user-specific calendar rule according to the trend.

In some implementations of the method, non-transitory computer readable medium, or apparatus, generating the user-specific calendar rules comprises: generating a user-specific calendar rule indicating to deprioritize recurring meetings for which the trend and priority data indicates a trend of low participation by the software user.

In some implementations of the method, non-transitory computer readable medium, or apparatus, the current task requires a resource located at a premises, and determining that the priority level of the current task is higher than the priority level of the current meeting comprises: determining that the software user will be present at the premises at a time of the current meeting.

In some implementations of the method, non-transitory computer readable medium, or apparatus, the set of pending tasks is obtained from a third party application integrated with a software platform implementing the virtual calendar using an application programming interface call.

In some implementations of the method, non-transitory computer readable medium, or apparatus, the set of pending tasks includes one or more tasks assigned other than by the software user.

In some implementations of the method, non-transitory computer readable medium, or apparatus, the method comprises, the operations comprise, or the processor is configured to execute the instructions for determining priority levels of tasks of the set of pending tasks.

In some implementations of the method, non-transitory computer readable medium, or apparatus, causing the adjustment to the virtual calendar comprises: automatically adjusting the virtual calendar to remove the current meeting from the virtual calendar and to add the new event to the virtual calendar in response to determining that the priority of the current task is higher than the priority level of the current meeting.

In some implementations of the method, non-transitory computer readable medium, or apparatus, causing the adjustment to the virtual calendar comprises: prompting the software user with a recommendation to remove the current meeting from the virtual calendar and to add the new event to the virtual calendar in response to determining that the priority of the current task is higher than the priority level of the current meeting.

In some implementations of the method, non-transitory computer readable medium, or apparatus, the method comprises, the operations comprise, or the processor is configured to execute the instructions for training a machine learning model using messages transmitted over one or more modalities via one or more software services of a unified communications as a service platform to generate the user-specific calendar rules.

In some implementations of the method, non-transitory computer readable medium, or apparatus, the software user is a user of a unified communications as a service platform that includes the virtual calendar, and generating the user-specific calendar rules comprises: evaluating messages transmitted to the software user over multiple modalities via software services of the unified communications as a service platform.

In some implementations of the method, non-transitory computer readable medium, or apparatus, the set of pending tasks includes one or more tasks specific to the software user and one or more tasks enforced against multiple software users.

In some implementations of the method, non-transitory computer readable medium, or apparatus, the method comprises, the operations comprise, or the processor is configured to execute the instructions for determining the priority level of the current task based on trends determined for other software users based on actions performed by the other software users in connection with tasks similar to the current task.

In some implementations of the method, non-transitory computer readable medium, or apparatus, the current meeting is a recurring meeting, and the method comprises, the operations comprise, or the processor is configured to execute the instructions for determining the priority level of the current meeting by evaluating data associated with one or more past occurrences of the current meeting, wherein the data is indicative of a trend of action or inaction by the software user with the one or more past occurrences.

In some implementations of the method, non-transitory computer readable medium, or apparatus, causing the adjustment to the virtual calendar comprises: instructing an email client facilitating the virtual calendar to remove the current meeting from the virtual calendar and to add the new event to the virtual calendar.

In some implementations of the method, non-transitory computer readable medium, or apparatus, the method comprises, the operations comprise, or the processor is configured to execute the instructions for determining the priority level of the current task by extrapolating resource requirements for performing the current task based on input specified by the software user for the current task.

In some implementations of the method, non-transitory computer readable medium, or apparatus, the method comprises, the operations comprise, or the processor is configured to execute the instructions for determining the priority level of the current task based on one or more of a current activity of the software user, a location at which the software user is expected to perform the current task, or a historical preference of the software user relative to tasks related to the current task.

In some implementations of the method, non-transitory computer readable medium, or apparatus, at least one task of the set of pending tasks is obtained based on an integration between an email client facilitating the virtual calendar and a source external to a software platform which includes the email client.

Other suitable mediums are also available. Such computer-usable or computer-readable media can be referred to as non-transitory memory or media, and can include volatile memory or non-volatile memory that can change over time. The quality of memory or media being non-transitory refers to such memory or media storing data for some period of time or otherwise based on device power or a device power cycle. A memory of an apparatus described herein, unless otherwise specified, does not have to be physically contained by the apparatus, but is one that can be accessed remotely by the apparatus, and does not have to be contiguous with other memory that might be physically contained by the apparatus.