In many computing scenarios, systems may connect with one another (e.g., through a network such as the Internet) to exchange data. In many cases, the systems are configured to connect with one another manually, automatically, or by some combination thereof. For example, in personal financial management (PFM) and/or data aggregation use cases, the PFM or data aggregation system may utilize one or more connections to one or more data providers. For example, a PFM user may wish to add connections to their account providers' systems so that the PFM system may access financial data processed by the account providers' systems. In many cases, a PFM app may include a user interface (UI) for adding a connection to customer's data providers which includes a standard/static list of providers for the user to select and connect with. This is a very primitive experience that requires a user to search through the list manually, and/or to input correct search terms, to identify their potential connections.
Embodiments described herein may personalize and at least partially automate the process of connecting a system such as a PFM app to other systems such as a customer's data providers. For example, embodiments may generate and provide one or more personalized options for connecting to data providers. Embodiments may provide some options based on the popularity of the data provider, for example through analyzing user data to cluster the user with other, similar users and recommending data providers popular with the similar users. Embodiments may provide other options based on processing user-specific data. For example, the user may enter data into the PFM app and/or may connect to a first data source (e.g., a bank account system). The device executing the app and/or one or more servers in communication with the device may acquire this data (e.g., 90 days of transactions made using the bank account). The data may provide information about the user which may be used to place the user in a cluster and identify popular providers among the users in the cluster. Also, the data (e.g., the set of transactions) may provide several indications of other potential connections to this user. For example, a transaction set may include transactions involving other providers such as investments accounts, mortgage providers, bill pay providers, digital currency providers, and/or others. Using natural-language understanding (NLU), natural-language processing (NLP), matching algorithms, and/or other processing techniques, the disclosed embodiments may identify these additional providers. In some cases, the app may present a list of identified providers to the user so that he or she can select connections without additional search. In some cases, these connections may be highlighted in transaction pages within the app showing the user's list of transactions with a link to the potential provider, so that a user can connect from where they are instead of going to a specific search and connect interface. As more connections are completed (e.g., based on user selection of suggested connections), the data provided through these connections may be fed back into the system to help identify more connections.
PFM system 100 may include client device 120, which may be configured to present UI 122 through which the personalized data provider connections may be presented and/or selected. In some embodiments, provider personalization system 110 may be a component of client device 120. In some embodiments, provider personalization system 110 may be provided by one or more separate computers from client device 120, such as one or more servers. In some embodiments, provider personalization system 110 may be provided by a combination of client device 120 and one or more separate computers, such as one or more servers. While system 100 of
At least some other devices accessible through network 140 may be data providers 130. A data provider 130 may be any computing system storing and/or otherwise processing data associated with one or more specific users and/or accounts and having one or more specific procedures or requirements for establishing a connection thereto. For example, a data provider 130 may be a bank server processing data associated with bank accounts. The bank server may require user ID, password, and/or other data to be submitted through an application programming interface (API) or other interface in a prescribed manner in order to gain access to data associated with a specific bank account, for example.
Computers storing and/or processing data related to bank accounts and/or other financial accounts are used as data provider 130 examples in this description due to their relevance to PFM system 100. However, any computing device acting as a custodian of any kind of data may be a data provider 130. For example, other data providers 130 with which the user may interact may include, but are not limited to, bill payees, digital currency systems, investment platforms, mortgage companies, loan sources (e.g., home loan, personal loan, car loan, etc.), credit issuing organizations, etc. Moreover, while four data providers 130A-130D are illustrated in
At 202, PFM system 100 may obtain data which may be used to identify one or more data providers 130. For example, a user may input some information through UI 122, such as personal biographical information. Alternatively, or additionally, the user may select a first data provider 130A, for example by searching for the provider in the UI 122 without being given a recommendation. PFM system 100 may connect with data provider 130A and obtain the data from data provider 130A. For example, PFM system 100 may obtain the data using an API provided by data provider 130A and/or may download data from data provider 130A (e.g., a bank statement in .pdf format or other files).
At 204, provider personalization system 110 may identify personalized data providers 130 from the data obtained at 202. For example, provider personalization system 110 may perform transaction processing as described below with respect to
At 206, PFM system 100 may connect with one or more data providers 130 recommended at 204. PFM system 100 may connect automatically to identified data providers 130 and/or may connect to data providers 130 after receiving user selection and/or confirmation of the one or more data providers 130 through UI 122. For example, PFM system 100 may connect to a given data provider 130 using an API provided by the data provider 130.
Once connected to a data provider, PFM system 100 may obtain data therefrom and use the obtained data to repeat process 202. For example, data from data providers 130 added at 206 may be obtained through performing repeated processing at 202 and processed to identify additional data providers 130 at 204, which may be connected with at 206. The process 200 may be repeated when another data provider 130 is connected and/or periodically.
In some embodiments, provider personalization system 110 may be a component of PFM system 100 that may allow possible data provider 130 connections to be surfaced without user-directed searching, but users may still be able to connect with data providers 130 not suggested by provider personalization system 110 in some embodiments. For example, PFM system 100 may include provider personalization system 110 along with other systems allowing UI searching and/or menu selection of data providers 130 for connection.
At 302, provider personalization system 110 may ingest transaction data. For example, as noted above PFM system 100 may have connected with a data provider 130 and obtained data from data provider 130. For example, PFM system 100 may obtain the data using an API provided by data provider 130 and/or may download data from data provider 130 (e.g., a bank statement in .pdf format or other files). In some cases, (e.g., in the case of a .pdf), provider personalization system 110 may perform optical character recognition (OCR) processing or similar processing to convert the data into text that can be processed as described below. Provider personalization system 110 may ingest the data from data provider 130 for processing. For example, provider personalization system 110 may collect recent transactions (e.g., all transactions in the past 90 days (or some other time interval), the last 200 transactions (or some other quantity), etc.) from the data obtained from data provider 130.
At 304, provider personalization system 110 may scan descriptions of transactions within the ingested transaction data. For example, the transaction data may include text describing a merchant, financial organization, or other vendor or provider; a payment type; a reference number; a transaction identifier; other information; or any combination thereof. Provider personalization system 110 may tokenize or otherwise extract words, phrases, numbers, etc. from the ingested transaction data in some cases. In some embodiments, provider personalization system 110 may extract terms that may be potentially relevant to data provider 130 identification (e.g., text) and/or remove likely irrelevant terms (e.g., numbers).
At 306, provider personalization system 110 may match the descriptions from 304 with known provider data to determine whether any of the descriptions are indicative of one or more data providers 130. For example, provider personalization system 110 may maintain or obtain a list of known data provider 130 names. Provider personalization system 110 may compare the known data provider 130 names with the descriptions from 304 to identify one or more known data provider 130 names within the descriptions from 304. In some embodiments, provider personalization system 110 may use a fuzzy matching algorithm such as identifying near-matches within an edit distance threshold. This may compensate for tendencies of some data provider 130 names to be truncated or otherwise altered in transaction records. If any of the known data provider 130 names are found within the descriptions from 304, they may be flagged as potentially relevant data providers 130 to the user whose transactions are being analyzed.
While bank statements and/or transactions are used in this example, other data types may be ingested and scanned. For example, data provider 130 accessed at 302 may be a credit reporting agency. PFM system 100 may obtain the data using an API provided by data provider 130 and/or may download data from data provider 130 (e.g., a credit report in .pdf format or other files) and perform OCR processing or similar processing thereon. The credit report data obtained through the API or from the processed document(s) may be scanned at 304 and analyzed for known data provider 130 name matches at 306.
At 308, provider personalization system 110 may surface matching, potentially relevant data providers 130 for connection. For example, these data providers 130 may be identified based on transaction data analyzed at 306. For example, provider personalization system 110 may cause UI 122 to display options for connecting to the potentially relevant data providers 130 without requiring the user to search for them. A user may be able to select one or more of the displayed options and enter any necessary information for connecting with the associated data provider 130 (e.g., a username and/or password for an account the user has with the data provider 130). PFM system 100 may connect to the data provider 130, for example as discussed above in process 200.
At 402, provider personalization system 110 may obtain one or more user features that may be used to classify the user. For example, the user may be prompted to create an account and/or otherwise enter some biographical information through the UI 122 of the PFM app. The user may enter data such as age, gender, income, geographic location, and/or other biographical information.
In some embodiments, provider personalization system 110 may use transaction data from the user as well. For example, if process 300 is also being performed, provider personalization system 110 may obtain the transaction data ingested at 302. If process 300 is not being performed, provider personalization system 110 may ingest transaction data. For example, as noted above PFM system 100 may have connected with a data provider 130 and obtained data from data provider 130. For example, PFM system 100 may obtain the data using an API provided by data provider 130 and/or may download data from data provider 130 (e.g., a bank statement in .pdf format or other files). In some cases, (e.g., in the case of a .pdf), provider personalization system 110 may perform optical character recognition (OCR) processing or similar processing to convert the data into text that can be processed as described below. Provider personalization system 110 may ingest the data from data provider 130 for processing. For example, provider personalization system 110 may collect recent transactions (e.g., all transactions in the past 90 days (or some other time interval), the last 200 transactions (or some other quantity), etc.) from the data obtained from data provider 130.
From the transaction data, provider personalization system 110 may obtain user features that may be suggestive of a group or groups to which they can be associated. For example, provider personalization system 110 may obtain features such as account types, frequency of transactions, average monthly spending, automated clearing house (ACH) payments, recurring payments, and/or a corpus of one or more transaction descriptions. For example, if process 300 is also being performed, provider personalization system 110 may obtain the user features from the scanned data generated at 304. If process 300 is not being performed, provider personalization system 110 may scan descriptions of transactions within the ingested transaction data. For example, the transaction data may include text describing a merchant, financial organization, or other vendor or provider; a payment type; a reference number; a transaction identifier; other information; or any combination thereof. Provider personalization system 110 may tokenize or otherwise extract words, phrases, numbers, etc. from the ingested transaction data in some cases. Within the scanned data, provider personalization system 110 may identify terms associated with the features being investigated, such as terms indicating account types, ACH payments, descriptions (including recurring descriptions in some embodiments), etc. Provider personalization system 110 may also identify amounts associated with some or all of these transactions to calculate monthly spending, spending with particular providers, etc.
At 404, provider personalization system 110 may process the user features identified at 402 using a clustering algorithm to identify one or more clusters to which the user may be assigned. For example, a cluster model may have been previously generated (e.g., according to process 500 described below or some other process). The cluster model may have been generated by executing a clustering algorithm, such as a machine learning (ML) algorithm configured to input features and output a set of clusters based on the features. Examples of clustering algorithms that may be used to generate such a model may include, but are not limited to, expectation maximization, K-means, and/or hierarchical clustering algorithms. Provider personalization system 110 may execute the same clustering algorithm used to generate the model, taking in at least the user features identified at 402 as inputs, and obtaining data indicating which cluster or clusters within the model most closely match the user based on the user features. Provider personalization system 110 may determine that the user is a member of the indicated cluster or clusters based on the clustering.
At 406, provider personalization system 110 may identify one or more data providers 130 to recommend to the user based on the processing at 404. For example, each cluster may have one or more data providers 130 associated therewith that may have been identified during the model building process (e.g., according to process 500 described below or some other process). These associated data providers 130 may be data providers 130 that are commonly used by members of the cluster, for example. Provider personalization system 110 may surface the associated data providers 130 for connection. For example, provider personalization system 110 may cause UI 122 to display options for connecting to the associated data providers 130 without requiring the user to search for them. A user may be able to select one or more of the displayed options and enter any necessary information for connecting with the associated data provider 130 (e.g., a username and/or password for an account the user has with the data provider 130). PFM system 100 may connect to the data provider 130, for example as discussed above in process 200.
At 408, provider personalization system 110 may obtain more user features after connection by the user to any of the surfaced data providers 130. For example, once PFM system 100 connects to the data provider 130 as described at 406, provider personalization system 110 may obtain user features from the data held by the newly connected data provider 130 in the manner described above with respect to 402. If any new user features are found through this process, provider personalization system 110 may repeat processing at 404 and 406 to reevaluate the user's cluster associations and, if the reevaluating finds the user to be associated with any different clusters, identify one or more different data providers 130 to recommend based on the different clusters.
At 502, user features for a plurality of respective users and information identifying respective data providers 130 connected to each respective users may be input. The user features may be the same types of features identified at 402 in process 400 as described above, for example, and may include biographical data and/or data obtained based on transaction data.
At 504, PFM system 100 may perform clustering of the user features obtained at 502. For example, as noted above, data processing service 130 may use expectation maximization, K-means, and/or hierarchical clustering algorithms to generate clusters of users having similar user features. However, data processing service 130 is not limited to these specific algorithms, and other clustering algorithms may be used in various embodiments. These clusters may be stored in a memory accessible to PFM system 100.
At 506, PFM system 100 may examine the users in each cluster to identify commonly connected, associated data providers 130 for the respective users of each given cluster. For example, in each cluster, PFM system 100 may identify connected data providers 130 of each user therein. Each connected data provider 130 appearing more frequently than some threshold percentage, or the most frequently appearing connected data providers 130 (e.g., the top three or top five or some other top amount), may be identified as an associated data provider 130 for the cluster. These identified associated data providers 130 may be stored as being associated with the clusters in the memory accessible to PFM system 100.
As more users connect with PFM system 100, more data may become available about what data providers 130 are popular with users, and about what user features are evident among the user base. Accordingly, as shown in
In screen 800 of
Display device 906 may be any known display technology, including but not limited to display devices using Liquid Crystal Display (LCD) or Light Emitting Diode (LED) technology. Processor(s) 902 may use any known processor technology, including but not limited to graphics processors and multi-core processors. Input device 904 may be any known input device technology, including but not limited to a keyboard (including a virtual keyboard), mouse, track ball, and touch-sensitive pad or display. Bus 912 may be any known internal or external bus technology, including but not limited to ISA, EISA, PCI, PCI Express, NuBus, USB, Serial ATA or FireWire. Computer-readable medium 910 may be any medium that participates in providing instructions to processor(s) 902 for execution, including without limitation, non-volatile storage media (e.g., optical disks, magnetic disks, flash drives, etc.), or volatile media (e.g., SDRAM, ROM, etc.).
Computer-readable medium 910 may include various instructions 914 for implementing an operating system (e.g., Mac OS®, Windows®, Linux). The operating system may be multi-user, multiprocessing, multitasking, multithreading, real-time, and the like. The operating system may perform basic tasks, including but not limited to: recognizing input from input device 904; sending output to display device 906; keeping track of files and directories on computer-readable medium 910; controlling peripheral devices (e.g., disk drives, printers, etc.) which can be controlled directly or through an I/O controller; and managing traffic on bus 912. Network communications instructions 916 may establish and maintain network connections (e.g., software for implementing communication protocols, such as TCP/IP, HTTP, Ethernet, telephony, etc.).
Provider personalization instructions 918 may include instructions that enable computing device 900 to perform provider personalization system 110 functionality as described herein. UI instructions 920 may include instructions that enable computing device 900 to perform UI 112 functionality as described herein. Application(s) 922 may be an application that uses or implements the processes described herein and/or other processes. The processes may also be implemented in operating system 914.
The described features may be implemented in one or more computer programs that may be executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program may be written in any form of programming language (e.g., Objective-C, Java), including compiled or interpreted languages, and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
Suitable processors for the execution of a program of instructions may include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors or cores, of any kind of computer. Generally, a processor may receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer may include a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer may also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data may include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
To provide for interaction with a user, the features may be implemented on a computer having a display device such as an LED or LCD monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
The features may be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination thereof. The components of the system may be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a telephone network, a LAN, a WAN, and the computers and networks forming the Internet.
The computer system may include clients and servers. A client and server may generally be remote from each other and may typically interact through a network. The relationship of client and server may arise by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
One or more features or steps of the disclosed embodiments may be implemented using an API. An API may define one or more parameters that are passed between a calling application and other software code (e.g., an operating system, library routine, function) that provides a service, that provides data, or that performs an operation or a computation.
The API may be implemented as one or more calls in program code that send or receive one or more parameters through a parameter list or other structure based on a call convention defined in an API specification document. A parameter may be a constant, a key, a data structure, an object, an object class, a variable, a data type, a pointer, an array, a list, or another call. API calls and parameters may be implemented in any programming language. The programming language may define the vocabulary and calling convention that a programmer will employ to access functions supporting the API
In some implementations, an API call may report to an application the capabilities of a device running the application, such as input capability, output capability, processing capability, power capability, communications capability, etc.
While various embodiments have been described above, it should be understood that they have been presented by way of example and not limitation. It will be apparent to persons skilled in the relevant art(s) that various changes in form and detail can be made therein without departing from the spirit and scope. In fact, after reading the above description, it will be apparent to one skilled in the relevant art(s) how to implement alternative embodiments. For example, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other implementations are within the scope of the following claims.
In addition, it should be understood that any figures which highlight the functionality and advantages are presented for example purposes only. The disclosed methodology and system are each sufficiently flexible and configurable such that they may be utilized in ways other than that shown.
Although the term “at least one” may often be used in the specification, claims and drawings, the terms “a”, “an”, “the”, “said”, etc. also signify “at least one” or “the at least one” in the specification, claims and drawings.
Finally, it is the applicant's intent that only claims that include the express language “means for” or “step for” be interpreted under 35 U.S.C. 112(f). Claims that do not expressly include the phrase “means for” or “step for” are not to be interpreted under 35 U.S.C. 112(f).