# Patent

## Title
Database system for triggering event notifications based on updates to database records

## Abstract

A data processing system is disclosed for accessing databases and updated data items and triggering event notifications. The data processing system may comprise a first database including a plurality of records, and a second database including a plurality of trigger indicators. The database system may further include a hardware processor configured to execute computer-executable instructions in order to: receive an update data item; identify a record corresponding to the update data item; cause an update to the record based on information included with the update data item; identify a trigger indicator corresponding to the update to the record; determine that a type of the trigger indicator matches a type of the update to the record; and generate an event notification including information included in the update.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
Any and all applications for which a foreign or domestic priority claim is identified in the Application Data Sheet as filed with the present application are hereby incorporated by reference under 37 CFR 1.57.
This application is a continuation-in-part of U.S. patent application Ser. No. 12/239,647, filed Sep. 26, 2008, and titled “SYSTEMS AND METHODS FOR MONITORING FINANCIAL ACTIVITIES OF CONSUMERS,” which application claims benefit of U.S. Provisional Patent Application No. 60/975,754, filed Sep. 27, 2007, and titled “SYSTEMS AND METHODS FOR MONITORING CREDIT ACTIVITY CHANGES AND GENERATING ALERTS.” This application also claims benefit of U.S. Provisional Patent Application No. 62/316,399, filed Mar. 31, 2016, and titled “DATABASE SYSTEM FOR TRIGGERING EVENT NOTIFICATIONS BASED ON UPDATES TO DATABASE RECORDS.” The entire disclosure of each of the above items is hereby made part of this specification as if set forth fully herein and incorporated by reference for all purposes, for all that it contains.


TECHNICAL FIELD
Embodiments of the present disclosure relate to data processing, including database and file management, as well as a database system for accessing one or more databases or other data structures, and triggering event notifications based on updates to database records.
BACKGROUND
Electronic databases provide for storage and retrieval of digital data records. Data records in such databases may be electronically updated.
SUMMARY
The systems, methods, and devices described herein each have several aspects, no single one of which is solely responsible for its desirable attributes. Without limiting the scope of this disclosure, several non-limiting features will now be described briefly.
Embodiments of the present disclosure relate to a database system (also herein referred to as “the system”) for triggering event notifications (also referred to herein as “notifications” or “alerts”) based on updates to database records. The system may advantageously provide notifications to interested users of certain types of changes to certain database records. For example, a user may be interested a particular database record, and more specifically to a particular type of change to the particular database record. The system advantageously, upon a change to the particular database record, may determine that the user is interested in changes to the particular database record, and may thus generate a log of the change. Then, the system may then determine that the change that was logged is of the particular type, and may thus generate and send a notification to the user. Further, advantageously, the notification may include information about the change that may be quite useful to the user.
In some implementations, the system may store a history of previous notifications. Thus, for example, the system may advantageously avoid sending out duplicate notifications, and/or may prioritize particular notifications. Further, the system may determine that notifications are to be generated based on historical data.
In some implementations, the system may receive, from various users, indications of triggers that may be implemented by the system. A trigger may be associated with a particular user, such that notifications resulting from that trigger are sent to the user. In some implementations, the notification may cause activation of a device or software application, enabling rapid notification and/or automation activities.
In some implementations, the system may process hundreds of millions (or more) of data record updates each day, and may determine and generate millions (or more) of triggers and event notifications each day. Accordingly, in various embodiments, large amounts of data are automatically and dynamically processed in response to user inputs.
Various embodiments of the present disclosure provide improvements to various technologies and technological fields. For example, existing database systems may lack notifications. The present disclosure describes improvements to, and useful applications of, database systems. For example, the database system disclosed here, according to various embodiments, efficiently monitors a database for triggering events, and dynamically generates notifications in response to those triggering events. Additionally, various embodiments of the present disclosure are inextricably tied to computer technology. In particular, various systems and methods discussed herein provide monitoring of electronic databases, processing of large volumes of data items, generation and transmission of electronic notifications, and the like. Such features and others are intimately tied to, and enabled by, computer technology, and would not exist except for computer technology. Further, the implementation of the various embodiments of the present disclosure via computer technology enables many of the advantages described herein, including more efficient processing of various types of electronic data.
According to an embodiment, a database system is disclosed for triggering event notifications based on updates to database records. The database system may comprise a first database including a plurality of records; a second database including a plurality of trigger indicators; and a hardware processor configured to execute computer-executable instructions. The hardware processor may be configured to execute computer-executable instructions in order to: receive an update data item; identify, in the first database, a first record of the plurality of records corresponding to the update data item; cause an update to the first record based on information included with the update data item; generate a log of the update to the first record; compare the log of the update to the plurality of trigger indicators included in the second database; identify, in the second database, a first trigger indicator of the plurality of trigger indicators corresponding to the update to the first record; determine that a type of the first trigger indicator matches a type of the update to the first record; and generate an event notification including information included in the update.
Additional embodiments of the disclosure are described below in reference to the appended claims, which may serve as an additional summary of the disclosure.
In various embodiments, computer systems are disclosed that comprise one or more hardware computer processors in communication with one or more non-transitory computer readable storage devices, wherein the one or more hardware computer processors are configured to execute the plurality of computer executable instructions in order to cause the computer system to perform operations comprising one or more aspects of the above-described embodiments (including one or more aspects of the appended claims).
In various embodiments, computer-implemented methods are disclosed in which, under control of one or more hardware computing devices configured with specific computer executable instructions, one or more aspects of the above-described embodiments (including one or more aspects of the appended claims) are implemented and/or performed.
In various embodiments, computer readable storage mediums storing software instructions are disclosed, wherein, in response to execution by a computing system having one or more hardware processors, the software instructions configure the computing system to perform operations comprising one or more aspects of the above-described embodiments (including one or more aspects of the appended claims).



BRIEF DESCRIPTION OF THE DRAWINGS
The following drawings and the associated descriptions are provided to illustrate embodiments of the present disclosure and do not limit the scope of the claims. Aspects and many of the attendant advantages of this disclosure will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
FIG. 1A is a block or data flow diagram of a database system for triggering event notifications based on updates to database records, according to an embodiment;
FIG. 1B is another block diagram of the database system, according to an embodiment;
FIG. 2 shows sources of database records, according to an embodiment;
FIG. 3 is a flowchart showing a process for determining whether a trigger has been activated and generating alerts, according to an embodiment;
FIG. 4A shows a database record, according to an embodiment;
FIG. 4B shows a historical database record, according to an embodiment; and
FIG. 5 is a flowchart showing another process for determining whether a trigger has been activated and generating alerts, according to an embodiment.



DETAILED DESCRIPTION
Although certain preferred embodiments and examples are disclosed below, inventive subject matter extends beyond the specifically disclosed embodiments to other alternative embodiments and/or uses and to modifications and equivalents thereof. Thus, the scope of the claims appended hereto is not limited by any of the particular embodiments described below. For example, in any method or process disclosed herein, the acts or operations of the method or process may be performed in any suitable sequence and are not necessarily limited to any particular disclosed sequence. Various operations may be described as multiple discrete operations in turn, in a manner that may be helpful in understanding certain embodiments; however, the order of description should not be construed to imply that these operations are order dependent. Additionally, the structures, systems, and/or devices described herein may be embodied as integrated components or as separate components. For purposes of comparing various embodiments, certain aspects and advantages of these embodiments are described. Not necessarily all such aspects or advantages are achieved by any particular embodiment. Thus, for example, various embodiments may be carried out in a manner that achieves or optimizes one advantage or group of advantages as taught herein without necessarily achieving other aspects or advantages as may also be taught or suggested herein.
Overview
As mentioned above, embodiments of the present disclosure relate to a database system (also herein referred to as “the system”) for triggering event notifications (also referred to herein as “notifications” or “alerts”) based on updates to database records. The system may advantageously provide notifications to interested users of certain types of changes to certain database records. For example, a user may be interested a particular database record, and more specifically to a particular type of change to the particular database record. The system advantageously, upon a change to the particular database record, may determine that the user is interested in changes to the particular database record, and may thus generate a log of the change. Then, the system may then determine that the change that was logged is of the particular type, and may thus generate and send a notification to the user. Further, advantageously, the notification may include information about the change that may be quite useful to the user.
In some implementations, the system may store a history of previous notifications. Thus, for example, the system may advantageously avoid sending out duplicate notifications, and/or may prioritize particular notifications. Further, the system may determine that notifications are to be generated based on historical data.
In some implementations, the system may receive, from various users, indications of triggers that may be implemented by the system. A trigger may be associated with a particular user, such that notifications resulting from that trigger are sent to the user. In some implementations, the notification may cause activation of a device or software application, enabling rapid notification and/or automation activities.
Embodiments of the disclosure will now be described with reference to the accompanying figures, wherein like numerals refer to like elements throughout. The terminology used in the description presented herein is not intended to be interpreted in any limited or restrictive manner, simply because it is being utilized in conjunction with a detailed description of certain specific embodiments of the disclosure. Furthermore, embodiments of the disclosure may include several novel features, no single one of which is solely responsible for its desirable attributes or which is essential to practicing the embodiments of the disclosure herein described.
TERMS
In order to facilitate an understanding of the systems and methods discussed herein, a number of terms are defined below. The terms defined below, as well as other terms used herein, should be construed broadly to include the provided definitions, the ordinary and customary meaning of the terms, and/or any other implied meaning for the respective terms. Thus, the definitions below do not limit the meaning of these terms, but only provide exemplary definitions.
Data Store: Any computer readable storage medium and/or device (or collection of data storage mediums and/or devices). Examples of data stores include, but are not limited to, optical disks (e.g., CD-ROM, DVD-ROM, etc.), magnetic disks (e.g., hard disks, floppy disks, etc.), memory circuits (e.g., solid state drives, random-access memory (RAM), etc.), and/or the like. Another example of a data store is a hosted storage environment that includes a collection of physical data storage devices that may be remotely accessible and may be rapidly provisioned as needed (commonly referred to as “cloud” storage).
Database: Any data structure (and/or combinations of multiple data structures) for storing and/or organizing data, including, but not limited to, relational databases (e.g., Oracle databases, mySQL databases, etc.), non-relational databases (e.g., NoSQL databases, etc.), in-memory databases, spreadsheets, as comma separated values (CSV) files, eXtendible markup language (XML) files, TeXT (TXT) files, flat files, spreadsheet files, and/or any other widely used or proprietary format for data storage. Databases are typically stored in one or more data stores. Accordingly, each database referred to herein (e.g., in the description herein and/or the figures of the present application) is to be understood as being stored in one or more data stores.
Database Record and/or Record: One or more related data items stored in a database. The one or more related data items making up a record may be related in the database by a common key value and/or common index value, for example.
Update Data Item and/or Update: Any data item that may be used to update a database record, in whole or in part. For example, an update data item may indicate that it is related to a corresponding database record. The system may compare the update data item to the corresponding database record, determine that the update data item indicates a change to one or more data items of the database record, and then update the database record as indicated by the update data item.
Trigger Indicator and/or Trigger: Any rule that indicates a database record change of interest. A trigger may indicate one or more of: a user associated with the trigger, one or more records of interest (e.g., as indicated by key values and/or index values associated with those one or more records), one or more types of record changes of interest, and/or the like. A trigger may include one or more logical rules.
Event Notification, Notification, and/or Alert: Any notification of a record change of interest. Notifications may include information regarding the record change of interest, and may indicate, e.g., to a user, the occurrence of an event of interest. Notifications may be transmitted electronically, and may cause activation of one or more processes, as described herein.
User: An entity that defines a trigger (e.g., and that is interested in receiving notifications upon the occurrence of record changes indicated by the trigger).
Example Operation of the System
FIG. 1A is a block or data flow diagram of a database system for triggering event notifications based on updates to database records, according to an embodiment. In some implementations, one or more of the blocks of FIG. 1A may be optional, and/or blocks may be rearranged.
At block 1002, the system receives update data items. Such update data items may include, for example, any changes to database records stored by the system in records database 162. Examples of such data items are described below. The system implements these update data items in the records database 162. For example, the system may compare information of the update data item to information of a corresponding database record of the records database 162.
In some instances, the system may determine that information of the corresponding database record is to be updated. For example, the database record may represent a person, and may include the person's name, address, and phone number. Further, the database record may be associated with a unique identifier (e.g., a key value and/or index value). The system may determine that the received update data item is associated with the database record because the update data item includes information that associates the update data item with the database record. For example, the update data item may include the unique identifier, and/or the update data item may include another identifier that may be used to map to the unique identifier by reference to additional information. The system may then determine that the update data item includes a new phone number for the person, and may therefore update the database record with the new phone number information.
In some instance the system may determine that information of the corresponding database record is not to be updated. For example, the update data item may include a phone number, but the system may determine that the phone number is already included in the database record. Accordingly, no update may be necessary.
At block 1006, the system generates a log of each database record update performed by the system. In some implementations, the log includes one or more (or all) items included in the corresponding database record. Further, the log includes an indication of the change or update that was performed in the records database 162.
Database record updates/changes may be continuously logged as the records database 162 is updated. Advantageously, logging updates to the records database 162 speeds up later evaluation of triggers. For example, as described below, triggers may be evaluated against the log of record changes, and may not need to be evaluated against the records database 162 as a whole. This aspect may significantly reduce processing power needed to generate event notifications. Further, because much information related to the updated record may be included in the log, the system may not need to re-query the database to generate notifications, further making the process of generating notification more efficient and less processor intensive. In some implementations, logs of database record updates may be stored in the historical database 163, as described below.
At block 1008, the system receives trigger indicators (e.g., from a user). Such trigger indicators items may include, for example, any rule that indicates a database record change of interest. Examples of such triggers are described below. The system stored these triggers in a triggers database 1010. As an example, a trigger may be associated with a particular record of the records database 162. As with the update data items described above, the trigger may be associated with the particular record by indication of the unique identifier of that record, and/or by any other indication that may be mapped to the record.
The trigger may indicate that only certain changes/updates, or certain types of changes/updates are to cause the system to generate notifications. For example, if the record represents a person (as described above), the trigger may indicate that only changes to the phone number are to trigger notifications.
At block 1012, the system evaluates the log of record changes/updates (from block 1006) and the triggers of the triggers database 1010. For example, in some implementations the system compares each trigger with each logged record change to determine any matches. A match may include, for example, when a particular record identified by a trigger indicates a change of a type indicated by the trigger. In some implementations, both the log of record changes and the triggers of the triggers database 1010 may be indexed by unique identifier (as mentioned above), and one or the other may be queried against the other. In some implementations, the system may determine that certain logged record changes are not associated with any triggers, and discard those certain record changes. In some implementations certain trigger and/or record information may be used to efficiently filter out logged record changes that do not correspond to any triggers. For example, as a preliminary step, the system may filter out any record updates that are not associated with any unique identifiers indicate by the triggers. Then, as a secondary step, the system may evaluate the remaining record changes to see if other criteria of the triggers (e.g., that a type of a change matches a type identified in a corresponding trigger) match such that notifications are to be generated and sent.
Advantageously, as described above, by logging record changes separate from the records database 162, the system may more quickly and efficiently (e.g., by use of less processor time or power) evaluate the triggers and generate notifications. This is because, for example, the entire records database 162 does not need to be evaluated for changes that match triggers.
At block 1014, the system generates and sends notifications for each trigger that is satisfied. The generated notification or alert may comprise a digital and/or electronic message. The notification may include an indication of the corresponding record change, and any other data items from the corresponding record and/or the trigger. The notification may be sent to the user that provided the trigger indicator, and/or to any other recipient indicated by the trigger. Further, the notification may be delivered by any appropriate mode.
In some embodiments, the alert and/or notification is automatically transmitted to a device operated by the user associated with corresponding trigger. The alert and/or notification can be transmitted at the time that the alert and/or notification is generated or at some determined time after generation of the alert and/or notification. When received by the device, the alert and/or notification can cause the device to display the alert and/or notification via the activation of an application on the device (e.g., a browser, a mobile application, etc.). For example, receipt of the alert and/or notification may automatically activate an application on the device, such as a messaging application (e.g., SMS or MMS messaging application), a standalone application (e.g., a health data monitoring application or collection management application used by a collection agency), or a browser, for example, and display information included in the alert and/or notification. If the device is offline when the alert and/or notification is transmitted, the application may be automatically activated when the device is online such that the alert and/or notification is displayed. As another example, receipt of the alert and/or notification may cause a browser to open and be redirected to a login page generated by the system so that the user can log in to the system and view the alert and/or notification. Alternatively, the alert and/or notification may include a URL of a webpage (or other online information) associated with the alert and/or notification, such that when the device (e.g., a mobile device) receives the alert, a browser (or other application) is automatically activated and the URL included in the alert and/or notification is accessed via the Internet.
In some implementations, the alert and/or notification may be automatically routed directly to an interactive user interface where it may be viewed an evaluated by a user. In another example, the alert and/or notification may be automatically routed directly to a printer device where it may be printed in a report for review by a user. In another example, the alert and/or notification may be automatically routed directly to an electronic work queue device such that information from the notification may automatically be displayed to a user, and optionally information from the notification may be automatically used, e.g., to contact (e.g., dial a phone number) the person represented by the updated record.
In various implementations, record changes may be logged continuously, in real-time or substantially real-time, and/or in batch. In various implementations, triggers and record changes may be evaluated (e.g., as in block 1012) continuously, in real-time or substantially real-time, and/or in batch. In various implementations, notification may be generated and/or sent continuously, in real-time or substantially real-time, and/or in batch.
As indicated by arrow 1016, in some implementations the system may store a history of previous notification in the historical database 163. For example, in some instances a trigger may indicate that no notifications for certain record updates (and/or certain types of updates) are to be provided when such certain record updates are made close in time (e.g., within a “cool off” period) to certain other record updates (and/or notifications). In another example, in some instances trigger may indicate a hierarchy of updates/changes, such that certain record updates (and/or certain types of updates) are to trigger notification in preference to other record updates. In these examples (and others, as described below), the system may advantageously store a history of previous notification in the historical database 163. Examples of such cool offs, hierarchical triggers, and other similar filters that may be implemented in the current system are described in Appendix A of U.S. Provisional Patent Application No. 62/316,399, incorporated by reference herein. Such storage of historical notification information may advantageously also reduce processing power as the system may not need to re-query either the log of record changes or the records database 162 to implement triggers such as those mentioned above (e.g., the rely on some historical notification information).
Additional examples of triggers that may be implemented by the system are also described in Appendix B of U.S. Provisional Patent Application No. 62/316,399, incorporated by reference herein. Therefore any of the examples of triggers described in Appendix A and Appendix B of U.S. Provisional Patent Application No. 62/316,399 may be implemented in combination with one or more implementations/embodiments of the system described herein.
In some implementations, the system advantageously determines whether the update data items originate with, or are associated with, the user who provided a trigger. If so, the system does not generate a notification for that update as, presumably, the user is already aware of the change. In another implementation, the system advantageously provides such notification to the user (e.g., when requested by the user), e.g., as a double check for the user that their data is correctly updated.
In some implementations, the system periodically and/or regularly purges triggers. For example, on a monthly basis, the system may remove any triggers that have not been renewed by the respective user associated with the triggers. In this example, the system may require that users indicate, on a monthly basis, that they are authorized to continue to monitor the relevant records for the particular changes they are triggering one. If such an indication is not received, the system may delete the trigger. Advantageously, such purging of triggers may maintain the efficiency of the system (e.g., in terms of processing power, memory requirements, etc.) by preventing significant buildup of triggers over time, many of which may not be of interest to their respective users any longer.
In various implementations, the records database 162, the historical database 163, the triggers database 1010, and/or any combination of these databases or other databases and/or data storage devices of the system may be combined and/or separated into additional databases.
Additional Example Implementations of the System
FIG. 1B is one embodiment of a block diagram of a computing system 100 that is in communication with a network 160 and various devices that are also in communication with the network 160. The computing system 100 may be used to implement the database system and various methods described herein. For example, the computing system 100 may be configured to receive various data items and generate reports and/or alerts for one or more users. In some implementations, data items received by the system may include financial and demographic information regarding individuals, consumers, and/or customers (including, e.g., any applicants, or groups of individuals or customers or applicants, such as, for example, married couples or domestic partners, and business entities). In some implementations, users of the system may include financial service providers, such as creditor originators, collection agencies, debt buyers, or any other entities, for example. The functionality provided for by the computing system 100 may be combined into fewer components and/or modules, or further separated into additional components and modules.
The computing system 100 may include, for example, a personal computer that is IBM, Macintosh, or Linux/Unix compatible. In one embodiment, the computing system 100 comprises a server, a laptop computer, a cell phone, a personal digital assistant, a kiosk, or an audio player, for example. In one embodiment, the exemplary computing system 100 includes a central processing unit (“CPU”) 105, which may include a conventional microprocessor. The computing system 100 further includes a memory 130, such as random access memory (“RAM”) for temporary storage of information and a read only memory (“ROM”) for permanent storage of information, and a mass storage device 120, such as a hard drive, diskette, or optical media storage device. Typically, the modules of the computing system 100 are connected to the computer using a standards based bus system. In different embodiments, the standards based bus system could be Peripheral Component Interconnect (PCI), Microchannel, SCSI, Industrial Standard Architecture (ISA) and Extended ISA (EISA) architectures, for example.
The computing system 100 is generally controlled and coordinated by operating system software, such as Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista, Linux, SunOS, Solaris, or other compatible operating systems. In Macintosh systems, the operating system may be any available operating system, such as MAC OS X. In other embodiments, the computing system 100 may be controlled by a proprietary operating system. Conventional operating systems control and schedule computer processes for execution, perform memory management, provide file system, networking, I/O services, and provide a user interface, such as a graphical user interface (“GUI”), among other things.
The exemplary computing system 100 may include one or more commonly available input/output (I/O) devices and interfaces 110, such as a keyboard, mouse, touchpad, and printer. In one embodiment, the I/O devices and interfaces 110 include one or more display device, such as a monitor, that allows the visual presentation of data to a user. More particularly, a display device provides for the presentation of graphical user interfaces (“GUIs”), application software data, and multimedia presentations, for example. The computing system 100 may also include one or more multimedia devices 140, such as speakers, video cards, graphics accelerators, and microphones, for example.
In the embodiment of FIG. 1, the I/O devices and interfaces 110 provide a communication interface to various external devices. In the embodiment of FIG. 1B, the computing system 100 is coupled to a network 160, such as a LAN, WAN, or the Internet, for example, via a wired, wireless, or combination of wired and wireless, communication link 115. The network 160 communicates with various computing devices and/or other electronic devices via wired or wireless communication links. In one embodiment, the computing system 100 is in communication with certain devices, such as records database 162, one or more data sources 166, historical database 163, and triggers database 1010, via a secured local area connection, while the computing system 100 is in communication with a user 164 (e.g., a computing device of the user 164) via any combination of a local area network and the Internet (or other network or communications link). In some implementations, the records database 162 may be referred to as a financial database (e.g., when financial data is stored by the database), and the data sources 166 may include data sources that provide demographic data.
As shown in FIG. 1B, information (e.g., data items) is provided to computing system 100 over the network 160 from one or more data sources including, for example, one or more of the records database 162, the historical database 163, the triggers database 1010, the user 164, and/or the demographic data source 166. The information supplied by the various data sources may include any type of data that may be stored as database records. In some implementations, the information may include credit data, demographic data, application information, product terms, accounts receivable data, and/or financial statements, for example. In addition to the devices that are illustrated in FIG. 1B, the network 160 may communicate with other data sources or other computing devices. In addition, the data sources may include one or more internal and/or external data sources.
Although one user 164 is shown in FIG. 1B, any number of users 164 may communicate with the computing system 100 over the network 160. The user 164 may provide data items related to database records to be monitored (e.g., for triggering notifications). For example, such data items, in some implementations, may include consumer credit activity, such as opening new accounts, making payments on existing accounts, or the like. In addition to supplying data, user 164 may further provide trigger indicators, e.g., the user 164 may request notifications from the computing system 100. For example, the user 164 may request notifications related to particular changes to particular database records of interested to the user. In some instances, the requested notifications may include alerts regarding financial improvement for consumers (e.g., as indicated by record changes in the records database) monitored by the computing system 100. The user 164 may supply a list of trigger indicators, e.g., a list of database records of interest to the user. For example, user 164 may comprises an entity having thousands of customers including several hundred customers with 120 day past due account statuses. The entity may generate a file listing these several hundred customers and transmit the list to the computing system 100 for monitoring for certain records changes related to the customers (e.g., for financial improvements). The file listing the triggers may be in any suitable file format, such as comma separate value (CSV), Extensible Markup Language (XML), or any other file format that is usable by the computing system 100. Trigger indicators may be stored in the triggers database 1010, as described above.
As shown, the computing system of FIG. 1B also includes a trigger module 150 that is configured to access database records (e.g., in the records database 162), compare to trigger indicators (as accessed from the triggers database 1010), and generate notifications (e.g., as generally described above in reference to FIG. 1A). In some implementations, as also mentioned above, database records from the records database 162 may be compared to data items from the historical database 163 to generate notifications. For example, previous notifications may be compared to current database records as part of triggering notifications, as described above. In another example, previous database records (e.g., prior to updating those database records) from the records database 162 may be stored in the historical database 163. For example, current data of consumers may be compare historical data of customers. For example, the trigger module 150 may receive a list of triggers from the user 164 that indicated database records the user to monitor for particular records changes. In response to this request (assuming the proper database record identification information is provided and the user 164 has paid for the monitoring service), the trigger module 150 may periodically access the database records as indicated by the triggers and/or determine when database records have been updated. Further, the trigger module 150 may compare trigger indicators to the updated database records, and/or compare the trigger indicators, database records, and/or historical database records to determine notifications to generate and transmit. In an example, a trigger may be used to identify consumers having an actual or predicted improvement in their ability and/or desire to pay existing and outstanding debt. For example, a trigger may be activated when a consumer has brought an outstanding account from 90+ days past-due status to 30 days past-due status or better by making one or more payments. In some embodiments, trigger criteria (or “trigger indicators” or logical rules of another type) may be provided by different entities that are interested in receiving notifications of activities of related entities. For example, trigger criteria may be based on information indicating that a new account has been established for an entity. In one example, a business, such as a hospital, health care facility, online business, collection agency, etc., may request of the database system notifications when any of a plurality of individuals associated with the entity open a new account, as may be determined by the database system accessing new account information from one or more external databases that the entity does not have access to. Thus, an entity may provide trigger criteria indicating that a notification should be delivered when database records accessed by the database system indicates that any of a plurality of individuals, e.g., individuals having past due balances to the entity or a related entity, have opened a new account, such as an auto lease, mortgage loan, retail loan, auto loan, installment loan, bank/credit card, etc. Additionally, the entity may request notifications when other events associated with individual of interest, such as those individuals having a past due balance of a certain amount and/or for a certain time, such as when new employment information is associated with the individual, new phone update information is identified, and/or new address identified. Accordingly, the entity can obtain notifications of various events and/or combinations of events that may be indicative of a change in the individual's ability to make payments on past due amounts owed to the entity or related entity (e.g., a creditor that has hired a debt collection agency to collect debts of customers, and the debt collection agency subscribes to an improvement trigger service provided by the database system discussed herein).
In one embodiment, the trigger module 150 generates alerts/notifications that are transmitted to the user 164 when a trigger is activated. As described above, the alert may be provided to the user 164 in various formats, such as an email, a file indicating alerts for each of a plurality of database records, a web interface, or any other suitable format. In an example, an alert indicates to the user 164 that a consumer having accounts with outstanding debt, such as an account for which collection efforts have previously been abandoned, may now be a good target for renewed collection efforts.
In an embodiment, the trigger module 150 comprises a rules engine that is configured to receive one or more logical rules (e.g., trigger indicators) as input, execute the logical rules on various data (e.g., database records from the records database 162 and/or the historical database 1010), and generate one or more outputs (e.g., notifications).
Databases and Data Sources
FIG. 2 shows a diagram illustrating that in one embodiment the records database 162 includes data items obtained from various data sources, including but not limited to tradeline data 210, public records data 220, institution data 230 (e.g., credit bureau data), and external user data 240. In one embodiment, the records database comprises consumer credit files that are maintained by a credit bureau. Depending on the embodiment, the records database 162 may comprise multiple databases, or other data structures, that may be operated and/or controlled by different entities. In addition, the data may include externally stored and/or internally stored data. In certain embodiments, tradeline data 210 and public records data 220 is received by the institution database 230. In other embodiments, the records database 162 comprises only a subset of the data available from the various data sources set forth above. The data stored in the records database 162 may be compiled and formatted by the computing system 100. For example, the computing system 100 may receive data items from multiple sources such as the user 164 and the data source(s) 166. In one embodiment, the computing system 100 comprises a local copy, such as in the mass storage device 120 or a storage device that is accessible via a local area network, of at least a portion of the records database 162. This local copy of the records database 162 may be updated periodically, such as daily, weekly monthly, or at any other interval, in order to provide timely database records to the trigger module 150.
In some implementations, the historical database 163 (FIGS. 1A and 1B) stores historical data. According to some embodiments, snapshots of records database 162 at various times are stored in historical database 163. That is, before records database 162 is updated with new database records, for example once each month, the existing data is stored with a timestamp in historical database 163. Historical database 163 may store one or more such snapshots. For example, historical database 163 may store a snapshot of records database 162 for every month, or historical database 163 may store only a previous month's snapshot. As described in more detail below, by comparing historical database records stored in historical database 163 with current database records stored in records database 162, certain triggers may be executed. Depending on the embodiment, historical and records databases 162, 163 may be stored on separate physical storage devices or may be both stored on common storage devices, such as a linked array of servers. In one embodiment, the computing system 100 comprises the historical database 163 or a local copy of at least a portion of the historical database 163 in the mass storage device 120 or a storage device that is accessible via a local area network. As described above, in some implementations, when a database record is updated, a log of the update (as described above in reference to FIG. 1A) is recorded in the historical database 163.
Monitoring Database Activity and Generating Alerts
FIG. 3 shows a process 300 for monitoring database records and generating an alert/notification based on changes or updates in database records, according to an embodiment. The process 300 may be implemented by the trigger module 150 using triggers from the triggers database 1010, and data from the records database 162, the historical database 163, and/or the user 164. Depending on the embodiment, the method of FIG. 3 may include fewer or additional blocks and may be performed in a different order than is illustrated.
The process 300 begins at block 301 where database records are identified to be monitored (e.g., by one or more trigger indicators). Database records to be monitored may be determined, for example, based on a file provided by a user 164 that lists trigger indicators. The user 164 may provide identifying data such as a database record key value (e.g., in some implementations his may include a consumer name, address, and/or social security number in order to identify a consumer). A web page stored on the computing system 100 may be accessed by the user 164 in order to provide trigger information in some embodiments. According to some embodiments, the computing system 100 monitors the records database 162 for which database records are available. In an embodiment where database records are stored as snapshots in the historical database 163, historical snapshots of database records may be available at initiation of a monitoring by the user 164.
Next, at block 302, database records as indicated by the triggers are accessed or received. In one embodiment, the database records are maintained and may be accessed from the records database 162. In some embodiments, database records are obtained from a combination of data sources, such as the records database 162, users 164, data sources 166, and/or one or more other data sources, and the data is maintained and saved by the computing system 100. In some embodiments, new data is obtained in real time when a user request is received, or when a periodic determination of triggers is performed.
An example of a current database record 400 stored in records database 162 is illustrated in FIG. 4A. In one embodiment, the database record 400 comprises data from a credit report and/or other financial data sources. Example current database record 400 contains a number of fields, but alternative or additional fields may be stored in current database record 400 according to some embodiments. In addition, current database records may be stored in any other suitable format, such as in text, spreadsheet, extensible markup, or database files, for example. As shown in FIG. 4A, the current database record 400 comprises first and last name fields 401. In the example shown, the first name has a value of “John” and the last name has a value of “Doe.” The current database record 400 further comprises identification information 402 such as an address, social security number and a consumer PIN (e.g., a unique identification number that may be used as a key value for identifying the database record in a trigger).
Current database record 400 further comprises an entry date field 403 identifying the date on which the current database record 400 was stored. In the example shown, the entry date field 403 has a value of “7/31/2007.” The current database record 400 may represent the most recent information corresponding to that database record (e.g., the person represented by the database record). As described above, data may be obtained in real time when a user request is made or when indicated by a predetermined schedule according to certain embodiments. Current database record 400 further comprises other information as indicated in FIG. 4A.
Referring again to the process 300 in FIG. 3, the historical database record for the monitored database record is accessed at block 303. The historical database record may be accessed from historical database 163.
FIG. 4B shows a historical database record 410 corresponding to the database record 400. The record 410 corresponds to a snapshot of data for the same database record (e.g., that of “John Doe”) indicating information of the database record at a previous point in time. Thus, the name fields 401 and the address, social security number, and customer PIN fields 402 are identical in each of the database record 100 and historical database record 410. However, the entry date for the historical database record 410 is “6/30/2007,” which is approximately one month before the 7/31/2007 entry date of the current database record 400. In other embodiments, historical database record 410 may be from a different time period, for example, from 90 days or 180 days ago. Additionally, the historical database 163 may store multiple records for a particular database record, such as monthly snapshots over a period of several years. In some implementations, storing changes in the historical database may be referred to as logging updates to database records.
At block 304, the historical data, such as the historical database record 410, is compared to the current data, such as the current database record 400, such as by the trigger module 150 of the computing system 100 (FIG. 1B). Thus, the trigger module compares current data to at least one snapshot of historical data. The historical record 410 comprises certain information fields that indicate the same information providers as in the current record 400. However, the information has been updated in the current record 400 due to recent activity/updates. Accordingly, as described below, the system may determine that the database record has been updated (and may log information related to the update).
As mentioned above, advantageously, logging updates to the records database 162 (e.g., storing historical data records in historical database 163) speeds up later evaluation of triggers. For example, as described below, triggers may be evaluated against record changes (as indicated by a comparison of current and historical database records), and may not need to be evaluated against the records database 162 as a whole. This aspect may significantly reduce processing power needed to generate event notifications.
Returning to FIG. 3, at decision block 305, the computing system 100 determines if the comparison is indicative of a trigger event. As described above, triggers may comprise a set of logical rules that may be implemented to automatically determine whether a record update of interest exists. One example trigger may be that whenever any account gets brought from 90 days or more past due to 60 days or less past due, a trigger is activated and a corresponding alert is transmitted to the user. Any number of triggers/rules may be implemented. Different users may use different triggers/rules. For example, one user may be interested in being alerted upon certain types of database record updates, while another user may only be interested in being alerted when other types of database record updates.
As an example, the system may compare the current record 400 with the historical record 410 (e.g., at block 304), and the trigger module 150 may determine that the database record has been updated. Accordingly, the system may execute one or more triggers. If it is determined that the comparison is indicative of certain types of updates, and one or more triggers were activated, then the process 300 continues to block 306. If the comparison at block 304 is not determined to be indicative of certain types of updates at block 305, then the process 300 skips block 306 and proceeds to block 307.
At block 306, a user 164 that has requested alerts for certain triggers is notified. Notification may come in the form of a report, an e-mail, an automatically generated letter, or any other format that informs the user of the event (as described above). The alert may include specific information related to the database record, may indicate only that a particular trigger has been activated, or may simply indicate the changed record information. After the alert has been generated, the process 300 proceeds to block 307.
At block 307, the system waits until the next comparison event. For example, database records may be compared once every month, whenever the database is updated (e.g., database records are updates), when a user requests information, or at some other time or according to another schedule.
In an alternate embodiment, the trigger module 150 performs a different process 500 as shown in FIG. 5. Operations performed at blocks 501-505 are similar to those performed at blocks 301-305. In this alternate embodiment, at block 506, the trigger module 150 additionally determines whether a score related to an updated database record matches information provided in a trigger indicator. In one embodiment, a current score (associated with the database record) is compared to a historical score or scores (associated with the database record). If the change in the score is greater than a pre-defined threshold, the trigger may be executed. In another embodiment, a score that meets a pre-defined raw score threshold may execute a trigger. The pre-defined threshold may be one point, two points, five points, ten points, twenty points, fifty points, one hundred points, two hundred points, or any other number of points as indicated by a trigger. In an embodiment the score may be a credit score of a consumer.
In some implementations, a score check may improve the predictive accuracy of the alerts. For example, if 1,000 updated database records meet the trigger criteria at block 505, the score check at block 506 may reduce the number of qualifying records to, for example, 500. The alerts sent to the user at block 507 may include these 500 records. While the number of records is reduced, the user's likelihood to get useful information from these alerts is increased because the alerts are more specifically targeted.
In some embodiments, the database system provides automatic updates to each of a plurality of subscriber entities on a periodic basis, such as on a daily basis. For example, in one embodiment the database system accesses the list of individuals of interest for each of a plurality of subscriber entities nightly, performing one of the processes described above for identifying trigger indicators of interest to the respective subscriber entities. For example, for a first subscriber entity, 10,000 individuals may be provided on a monitoring list for the first subscriber entity. Thus, the database system would access any update data for each of those 10,000 individuals daily and determine if one or more trigger indicators for any of the 10,000 individuals has been triggered. In some embodiments, the database system then generates a report to the subscriber entity providing any updated triggered notifications. For example, with reference to the first subscriber entity noted above, the database system may, on a particular day when the trigger indicators are applied to the 10,000 individuals, determine that 125 of those individuals have updated data associated with them matching the trigger indicators. Thus, in one embodiment those 125 individuals have very recently (e.g., within the previous day) had activity associated with them that is of interest to the subscriber entity (e.g., the individuals may have opened new loans, which indicates to the subscriber entity a change in ability to pay). Accordingly, the database system may generate a “hot list” or “daily contact list”, listing the 25 individuals, perhaps along with contact information and information about the updated data item(s) that matched the trigger indicator, and provide that list to the subscriber entity so the subscriber entity can take immediate action. For example, the database system may transmit the list of daily updates to individuals matching trigger indicators each morning so the subscriber entity can contact those individuals, such as seeking payment on past due accounts, as quickly as possible. As noted above, the database system can provide realtime alerts of changes in data items matching trigger indicators, optionally in conjunction with a daily (or weekly, or monthly, etc.) report such as discussed above.
Example Use Case
In an implementation, the database system is used to rapidly notify a creditor (“user”) of changes in the database records associated with debtors (“consumers”), e.g., based on certain triggers. The user may be particularly interested in rapid notification because being first to contact a consumer in the event of a change in the consumer's circumstances may greatly increase the chances of collecting on a debt. In this implementation, certain triggering events may be particularly useful in recovering long overdue debt. These may include, for example, a new mortgage loan, a new auto lease, a new retail loan, a new auto loan, an update to employment information, a new installment loan, a new bank card, a new credit card, new phone information, new address information, and/or the like. In this implementation, as also described above, the system may continuously monitor changes to database records and automatically “push” notifications to the user when a triggering event occurs, enabling rapid and timely notification. The combination of these features may enable the user to be the first (e.g., among a number of creditors) to contact a consumer, increasing a likelihood of successfully obtaining payment. Further, various implementations of the system enable a user to focus resources on consumers that are more likely to pay a debt (e.g., those with recent triggering events). The user may advantageously populate notification information into their own system, enabling a person to quickly review the notification and act on the notification. Further, the user may generate, e.g., a daily report of notifications that may then be prioritized by the user for acting on. Yet further, the notifications and associated information may be provided in a format preferred or specified by the user, enabling further efficiencies in acting on the triggering events. Further, the user may monitor a return on investment in the system by evaluating the cost of running the triggers and receiving the notification in relation to the success of obtaining payments for debts, for example. This feedback may also be used to focus in on particular triggers that provide a greater return on investment than others. Such feedback may be automatically performed by the system to iteratively generate notifications that are more and more valuable and more and more timely. In some instances, users have found a return on investment of $72 for each $1 spent on receiving notifications from the database system. Users have also found that use of the database system greatly increases revenue.
Additional Implementation Details and Embodiments
Accordingly, a system is described for monitoring database records over a period of time. When it is determined that a trigger indicator is satisfied, as defined by a user, the user is advantageously alerted to this update.
While the above systems and methods have been described with reference to certain types of database record updates, it will be understood that the invention is not limited to monitoring only these types of updates. Other types of data records may be monitored as described herein, and other rules or triggers may be implemented in order to generate alerts for other types of updates.
Various embodiments of the present disclosure may be a system, a method, and/or a computer program product at any possible technical detail level of integration. The computer program product may include a computer readable storage medium (or mediums) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure.
For example, the functionality described herein may be performed as software instructions are executed by, and/or in response to software instructions being executed by, one or more hardware processors and/or any other suitable computing devices. The software instructions and/or other executable code may be read from a computer readable storage medium (or mediums).
The computer readable storage medium can be a tangible device that can retain and store data and/or instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device (including any volatile and/or non-volatile electronic storage devices), a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a solid state drive, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions (as also referred to herein as, for example, “code,” “instructions,” “module,” “application,” “software application,” and/or the like) for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++, or the like, and procedural programming languages, such as the “C” programming language or similar programming languages. Computer readable program instructions may be callable from other instructions or from itself, and/or may be invoked in response to detected events or interrupts. Computer readable program instructions configured for execution on computing devices may be provided on a computer readable storage medium, and/or as a digital download (and may be originally stored in a compressed or installable format that requires installation, decompression or decryption prior to execution) that may then be stored on a computer readable storage medium. Such computer readable program instructions may be stored, partially or fully, on a memory device (e.g., a computer readable storage medium) of the executing computing device, for execution by the computing device. The computer readable program instructions may execute entirely on a user's computer (e.g., the executing computing device), partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.
Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart(s) and/or block diagram(s) block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks. For example, the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer may load the instructions and/or modules into its dynamic memory and send the instructions over a telephone, cable, or optical line using a modem. A modem local to a server computing system may receive the data on the telephone/cable/optical line and use a converter device including the appropriate circuitry to place the data on a bus. The bus may carry the data to a memory, from which a processor may retrieve and execute the instructions. The instructions received by the memory may optionally be stored on a storage device (e.g., a solid state drive) either before or after execution by the computer processor.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. In addition, certain blocks may be omitted in some implementations. The methods and processes described herein are also not limited to any particular sequence, and the blocks or states relating thereto can be performed in other sequences that are appropriate.
It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions. For example, any of the processes, methods, algorithms, elements, blocks, applications, or other functionality (or portions of functionality) described in the preceding sections may be embodied in, and/or fully or partially automated via, electronic hardware such application-specific processors (e.g., application-specific integrated circuits (ASICs)), programmable processors (e.g., field programmable gate arrays (FPGAs)), application-specific circuitry, and/or the like (any of which may also combine custom hard-wired logic, logic circuits, ASICs, FPGAs, etc. with custom programming/execution of software instructions to accomplish the techniques).
Any of the above-mentioned processors, and/or devices incorporating any of the above-mentioned processors, may be referred to herein as, for example, “computers,” “computer devices,” “computing devices,” “hardware computing devices,” “hardware processors,” “processing units,” and/or the like. Computing devices of the above-embodiments may generally (but not necessarily) be controlled and/or coordinated by operating system software, such as Mac OS, iOS, Android, Chrome OS, Windows OS (e.g., Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10, Windows Server, etc.), Windows CE, Unix, Linux, SunOS, Solaris, Blackberry OS, VxWorks, or other suitable operating systems. In other embodiments, the computing devices may be controlled by a proprietary operating system. Conventional operating systems control and schedule computer processes for execution, perform memory management, provide file system, networking, I/O services, and provide a user interface functionality, such as a graphical user interface (“GUI”), among other things.
As described above, in various embodiments certain functionality may be accessible by a user through a web-based viewer (such as a web browser), or other suitable software program). In such implementations, the user interface may be generated by a server computing system and transmitted to a web browser of the user (e.g., running on the user's computing system). Alternatively, data (e.g., user interface data) necessary for generating the user interface may be provided by the server computing system to the browser, where the user interface may be generated (e.g., the user interface data may be executed by a browser accessing a web service and may be configured to render the user interfaces based on the user interface data). The user may then interact with the user interface through the web-browser. User interfaces of certain implementations may be accessible through one or more dedicated software applications. In certain embodiments, one or more of the computing devices and/or systems of the disclosure may include mobile computing devices, and user interfaces may be accessible through such mobile computing devices (for example, smartphones and/or tablets).
Many variations and modifications may be made to the above-described embodiments, the elements of which are to be understood as being among other acceptable examples. All such modifications and variations are intended to be included herein within the scope of this disclosure. The foregoing description details certain embodiments. It will be appreciated, however, that no matter how detailed the foregoing appears in text, the systems and methods can be practiced in many ways. As is also stated above, it should be noted that the use of particular terminology when describing certain features or aspects of the systems and methods should not be taken to imply that the terminology is being re-defined herein to be restricted to including any specific characteristics of the features or aspects of the systems and methods with which that terminology is associated.
Conditional language, such as, among others, “can,” “could,” “might,” or “may,” unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without user input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment.
Conjunctive language such as the phrase “at least one of X, Y, and Z,” or “at least one of X, Y, or Z,” unless specifically stated otherwise, is to be understood with the context as used in general to convey that an item, term, etc. may be either X, Y, or Z, or a combination thereof. For example, the term “or” is used in its inclusive sense (and not in its exclusive sense) so that when used, for example, to connect a list of elements, the term “or” means one, some, or all of the elements in the list. Thus, such conjunctive language is not generally intended to imply that certain embodiments require at least one of X, at least one of Y, and at least one of Z to each be present.
The term “a” as used herein should be given an inclusive rather than exclusive interpretation. For example, unless specifically noted, the term “a” should not be understood to mean “exactly one” or “one and only one”; instead, the term “a” means “one or more” or “at least one,” whether used in the claims or elsewhere in the specification and regardless of uses of quantifiers such as “at least one,” “one or more,” or “a plurality” elsewhere in the claims or specification.
The term “comprising” as used herein should be given an inclusive rather than exclusive interpretation. For example, a general purpose computer comprising one or more processors should not be interpreted as excluding other computer components, and may possibly include such components as memory, input/output devices, and/or network interfaces, among others.
While the above detailed description has shown, described, and pointed out novel features as applied to various embodiments, it may be understood that various omissions, substitutions, and changes in the form and details of the devices or processes illustrated may be made without departing from the spirit of the disclosure. As may be recognized, certain embodiments of the inventions described herein may be embodied within a form that does not provide all of the features and benefits set forth herein, as some features may be used or practiced separately from others. The scope of certain inventions disclosed herein is indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.

## Claims

1. A computer implemented method for generating an alert, the method comprising:
providing a database system storing database records for a plurality of individual users, wherein each of the database records stored by the database system is associated with a particular user;
coupling a computing system of a first user with the database system via one or more network communication links;
receiving, by the database system and from the computing system of the first user, a request to monitor a particular database record associated with a particular individual, wherein the particular database record of the particular individual includes at least a current database record of the particular individual and a historical database record of the particular individual, wherein the request includes:
an identification of the particular individual usable by the database system to identify the particular database record associated with the particular individual, and
one or more rules indicating:
particular types of changes to database records that are of interest to the first user, and
that the computing system of the first user be notified when the database system determines that one or more of the particular types of change are made to the particular database record of the particular individual identified by the first user;


accessing, by the database system and from a historical database storing the historical database record of the particular individual identified by the first user, wherein:
the historical database record was created at a first point in time indicated by a first timestamp of the historical database record, and
the historical database record includes information indicating any accounts of the particular individual at the first point in time;

accessing, by the database system and from a current records database storing the current database record of the particular individual identified by the first user, wherein:
the current database record was created at a second point in time indicated by a second timestamp of the current database record,
the second point in time is later than the first point in time, and
the current database record includes information indicating any accounts of the particular individual at the second point in time;

applying the one or more rules provided by the first user to the current database record of the particular individual and the historical database record of the particular individual to determine whether the particular types of changes have occurred between the first point in time and the second point in time, said applying the one or more rules comprising:
comparing, by the database system, the historical database record of the particular individual to the current database record of the particular individual to determine whether information indicating accounts of the particular individual has changed between the first point in time and the second point in time;

if it is determined that information indicating accounts of the particular individual has changed between the first point in time and the second point in time:
identifying, by the database system, a first type of change or a second type of change to information regarding accounts of the particular individual between the historical database record at the first point in time and the current database record at the second point in time; and
determining whether the identified first type of change or second type of change matches any of the particular types of changes included in the one or more rules received from the first user; and

if it is determined that the identified first type of change or second type of change matches any of the particular types of changes:
automatically generating, by the database system, an electronic alert for communication to the computing system of the first user, wherein the electronic alert indicates the identified first type of change or second type of change between the historical database record of the particular individual and the current database record of the particular individual; and
transmitting, by the database system, the electronic alert to the computing system of the first user.

2. The computer implemented method of claim 1, wherein the request from the computing system of the first user further includes at least a name and address associated with the database record.

3. The computer implemented method of claim 1, wherein the first point in time and the second point in time are separated by at least one of: one day, one week, one month, two months, three months, four month, six months, one year, two years, or five years.

4. The computer implemented method of claim 1, further comprising:
accessing, by the database system and from the historical database storing the historical database record of the particular individual identified by the first user, a second historical database record of the particular individual, wherein:
the second historical database record was created at a third point in time indicated by a third timestamp of the second historical database record,
the third point in time is earlier than the first point in time, and
the second historical database record includes information indicating any accounts of the particular individual at the third point in time; and

further applying the one or more rules provided by the first user to the historical database record of the particular individual and the second historical database record of the particular individual to determine whether the particular types of changes have occurred between the first point in time and the third point in time, said applying the one or more rules comprising:
comparing, by the database system, the historical database record of the particular individual to the second historical database record of the particular individual to determine information indicating accounts of the particular individual has changed between the first point in time and the third point in time.

5. The computer implemented method of claim 1 further comprising:
determining, by the database system, a historical score associated with the historical database record of the particular individual, wherein the historical score is associated with the first timestamp;
determining, by the database system, a current score associated with the current database record of the particular individual, wherein the current score is associated with the second timestamp;
determining, by the database system, a score difference between the historical score and the current score; and
comparing, by the database system, the score difference to a threshold score difference indicated by the one or more rules,
wherein automatically generating and communicating the electronic alert are performed in response to determining both that:
the identified first type of change or second type of change matches any of the particular types of changes, and
the score difference satisfies the threshold score difference indicated by the one or more rules.

6. The computer implemented method of claim 5 further comprising:
applying, by the database system, the one or more rules provided by the first user to determine that a specific change to the database record matches a specific change indicated by the one or more rules,
wherein automatically generating and communicating the electronic alert are performed in response to determining that:
the identified first type of change or second type of change matches and of the particular types of changes,
the score difference satisfies the threshold score difference indicated by the one or more rules, and
the specific change matches the specific change indicated by the one or more rules.