U.S. patent application number 14/681999 was filed with the patent office on 2016-02-18 for data storage service for personalization system.
The applicant listed for this patent is YP LLC. Invention is credited to Randell Beltran, Monik Khare, Sudheer Sahu, Kiran Sugana.
Application Number | 20160048698 14/681999 |
Document ID | / |
Family ID | 55235615 |
Filed Date | 2016-02-18 |
United States Patent
Application |
20160048698 |
Kind Code |
A1 |
Sahu; Sudheer ; et
al. |
February 18, 2016 |
DATA STORAGE SERVICE FOR PERSONALIZATION SYSTEM
Abstract
A data storage system or service is provided for the data that
is generated by the personalization system. The data storage system
can be configured to support storing, retrieving or querying, and
updating of data such as user information, personalized content
such as personalized business information and collection
information, statistics information related to users, collections,
businesses, and the like. The data model design of the data storage
system may be configured to optimize performance associated with
specific features of the personalized system such as following
and/or sharing of collections. Additionally, the data storage
system may be configured to detect and provide user notifications
of trigger events.
Inventors: |
Sahu; Sudheer; (Encinitas,
CA) ; Beltran; Randell; (Arcadia, CA) ;
Sugana; Kiran; (Pasadena, CA) ; Khare; Monik;
(Pasadena, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
YP LLC |
Tucker |
GA |
US |
|
|
Family ID: |
55235615 |
Appl. No.: |
14/681999 |
Filed: |
April 8, 2015 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14462101 |
Aug 18, 2014 |
|
|
|
14681999 |
|
|
|
|
Current U.S.
Class: |
707/783 ;
707/803 |
Current CPC
Class: |
G06F 16/90335 20190101;
G06F 16/21 20190101; G06F 21/6218 20130101; H04L 67/306 20130101;
H04L 67/02 20130101 |
International
Class: |
G06F 21/62 20060101
G06F021/62; H04L 29/08 20060101 H04L029/08; G06F 17/30 20060101
G06F017/30 |
Claims
1. A system for managing user-generated content associated with a
plurality of users, the system comprising: one or more storage
nodes configured to store a database that comprises a first table
and a second table, the first table configured to store a first
plurality of entries corresponding to a plurality of user-generated
collections, each of the first plurality of entries including a
user identifier that uniquely identifies a respective user of the
system, a local collection identifier that uniquely identifies a
respective collection from collections associated with the
respective user, and a role indicator that indicates whether the
respective collection is owned by the respective user or followed
by the respective user, and the second table configured to store a
second plurality of entries corresponding to the plurality of
user-generated collections, each of the second plurality of entries
including a global collection identifier that uniquely identifies a
respective collection from the plurality of collections associated
with the plurality of users; and one or more interface servers
communicatively coupled to the one or more storage nodes, the
interface server being configured to: receive a first request for a
first collection, the first request including a first user
identifier and a first local collection identifier of the
collection, retrieve a first entry from the first table based at
least in part on the first user identifier and the first local
collection identifier, determine, based at least in part on a first
role indicator associated of the first entry, that the first
collection is owned by the respective user of the first entry,
transmit the first entry as a response to the first request,
receive a second request for a second collection, the second
request including a second user identifier and a second collection
identifier, retrieve a second entry from the first table based on
the second user identifier and the second collection identifier,
determine, based at least in part on a second role indicator
associated of the second entry, that the second collection is
followed by the respective user of the second entry, retrieve a
third entry from the second table based at least in part on the
second entry, and transmit the third entry as a response to the
second request.
2. The system of claim 1, wherein the second entry comprises a
global collection identifier of the third entry and retrieving the
third entry from the second table is based on the global collection
identifier of the third entry.
3. The system of claim 1, wherein the role indicator of at least
one entry of the first plurality of entries stored in the first
table further indicates whether the respective collection is shared
with the respective user.
4. The system of claim 3, wherein the role indicator of the at
least one entry of the first plurality of entries stored in the
first table further indicates whether the respective collection is
shared with the respective user with read-only access or with write
access.
5. The system of claim 1, wherein at least one entry of the first
plurality of entries stored in the first table further comprising a
set of user identifiers corresponding to a set of followers for the
respective collection.
6. The system of claim 1, wherein at least one entry of the first
plurality of entries stored in the first table further comprising a
map of share permissions mapping one or more user identifiers with
corresponding one or more permission indicators, the one or more
user identifiers correspond to one or more users that share the
respective collection.
7. The system of claim 1, wherein at least one entry of the first
plurality of entries stored in the first table further comprising a
set of business identifiers, each corresponding to a business that
is included in the respective collection.
8. A method for managing user-generated content associated with a
plurality of users, the method comprising: storing a first table in
a database, the first table configured to store a first plurality
of entries corresponding to a plurality of user-generated
collections, each of the first plurality of entries including a
user identifier that uniquely identifies a respective user of the
system, a local collection identifier that uniquely identifies a
respective collection from collections associated with the
respective user, and a role indicator that indicates whether the
respective collection is owned by the respective user or followed
by the respective user; storing a second in the database, the
second table configured to store a second plurality of entries
corresponding to the plurality of user-generated collections, each
of the second plurality of entries including a global collection
identifier that uniquely identifies a respective collection from
the plurality of collections associated with the plurality of
users; receiving a first request for a first collection, the first
request including a first user identifier and a first local
collection identifier of the collection; retrieving a first entry
from the first table based at least in part on the first user
identifier and the first local collection identifier; determining,
based at least in part on a first role indicator associated of the
first entry, that the first collection is owned by the respective
user of the first entry; transmitting the first entry as a response
to the first request; receiving a second request for a second
collection, the second request including a second user identifier
and a second collection identifier; retrieving a second entry from
the first table based on the second user identifier and the second
collection identifier; determining, based at least in part on a
second role indicator associated of the second entry, that the
second collection is followed by the respective user of the second
entry; retrieving a third entry from the second table based at
least in part on the second entry; and transmitting the third entry
as a response to the second request.
9. The method of claim 8, further comprising: receiving a third
request to update a third collection, the third request including a
third user identifier and a third collection identifier; retrieving
a fourth entry from the first table based on the third user
identifier and the third collection identifier; determining, based
at least in part on the role indicator of the fourth entry, that
the third collection is owned by the respective user of the fourth
entry; updating the fourth entry according to the third request;
receiving a fourth request to update a fourth collection, the
fourth request including a fourth user identifier and a fourth
collection identifier; retrieving a fifth entry from the first
table based on the fourth user identifier and the fourth collection
identifier; determining, based at least in part on the role
indicator of the fifth entry, that the fourth collection is shared
with the respective user of the fifth entry; identifying a sixth
entry from the second table based at least in part on the fifth
entry; and updating the sixth entry according to the fourth
request.
10. The method of claim 9, further comprising determining that
updating the sixth entry is allowed based at least in part on the
role indicator of the fifth entry.
11. The method of claim 9, further comprising determining that
updating the sixth entry is allowed based at least in part on a map
of share permissions associated with the fifth entry or the sixth
entry, the map of share permissions mapping one or more user
identifiers with corresponding one or more permission indicators,
the one or more user identifiers corresponding to one or more users
that share the respective collection.
12. The method of claim 9, wherein the fourth entry comprises a set
of user identifiers corresponding to a set of followers for the
third collection and further comprising causing update
notifications to be provided to at least some of the set of
followers regarding the update to the third collection.
13. The method of claim 9, wherein the sixth entry comprises a set
of user identifiers corresponding to a set of followers for the
fourth collection and further comprising causing update messages to
be provided to at least some of the set of followers regarding the
update to the fourth collection.
14. The method of claim 9, wherein the fourth request to update the
fourth collection comprises adding a business listing to the fourth
collection and wherein updating the sixth entry comprises adding a
mapping between a requesting user identifier and the added business
listing.
15. One or more non-transitory, machine-readable media having
machine-readable instructions thereon for managing user-generated
content associated with a plurality of users, which instructions,
when executed by one or more computers or other processing devices,
cause the one or more computers or other processing devices to:
store a first table in a database, the first table configured to
store a first plurality of entries corresponding to a plurality of
user-generated collections, each of the first plurality of entries
including a user identifier that uniquely identifies a respective
user of the system, a local collection identifier that uniquely
identifies a respective collection from collections associated with
the respective user, and a role indicator that indicates whether
the respective collection is owned by the respective user or
followed by the respective user; and store a second in the
database, the second table configured to store a second plurality
of entries corresponding to the plurality of user-generated
collections, each of the second plurality of entries including a
global collection identifier that uniquely identifies a respective
collection from the plurality of collections associated with the
plurality of users; receive a first request for a first collection,
the first request including a first user identifier and a first
local collection identifier of the collection; retrieve a first
entry from the first table based at least in part on the first user
identifier and the first local collection identifier; determine,
based at least in part on a first role indicator associated of the
first entry, that the first collection is owned by the respective
user of the first entry; transmit the first entry as a response to
the first request; receive a second request for a second
collection, the second request including a second user identifier
and a second collection identifier; retrieve a second entry from
the first table based on the second user identifier and the second
collection identifier; determine, based at least in part on a
second role indicator associated of the second entry, that the
second collection is followed by the respective user of the second
entry; retrieve a third entry from the second table based at least
in part on the second entry; and transmit the third entry as a
response to the second request.
16. The one or more non-transitory, machine-readable media of claim
15, wherein the second entry comprises a global collection
identifier of the third entry and retrieving the third entry from
the second table is based on the global collection identifier of
the third entry.
17. The one or more non-transitory, machine-readable media of claim
15, wherein the role indicator of at least one entry of the first
plurality of entries stored in the first table further indicates
whether the respective collection is shared with the respective
user.
18. The one or more non-transitory, machine-readable media of claim
15, wherein the role indicator of the at least one entry of the
first plurality of entries stored in the first table further
indicates whether the respective collection is shared with the
respective user with read-only access or with write access.
19. The one or more non-transitory, machine-readable media of claim
15, wherein at least one entry of the first plurality of entries
stored in the first table further comprising a set of user
identifiers corresponding to a set of followers for the respective
collection.
20. The one or more non-transitory, machine-readable media of claim
15, wherein at least one entry of the first plurality of entries
stored in the first table further comprising a map of share
permissions mapping one or more user identifiers with corresponding
one or more permission indicators, the one or more user identifiers
correspond to one or more users that share the respective
collection.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation-in-part of U.S. patent
application Ser. No. 14/462,101, filed Aug. 18, 2014, entitled
"SYSTEMS AND METHODS FOR FACILITATING DISCOVERY AND MANAGEMENT OF
BUSINESS INFORMATION," the content of which is hereby incorporated
by reference in its entirety.
BACKGROUND
[0002] Certain embodiments of the present disclosure relate
generally to providing data storage support for a personalization
system.
[0003] As value, use, access, and demand corresponding to
information continue to increase, consumers demand more of the
products and services they use than ever before. Businesses are
expected to compete to provide greater and greater levels of
service and more tailored service offerings. However, searching
for, obtaining, managing, and sharing information about businesses
can be inconvenient and disorderly. Chief among the difficulties
that a consumer often encounters is the amount of time and effort
necessary to search for particular businesses of interest that are
trusted and recommended.
[0004] There is a need for systems and methods to streamline
business information searching, obtaining, managing, and sharing,
and to provide greater availability and quality of tailored service
offerings to consumers. This and other needs are addressed by the
present disclosure.
BRIEF SUMMARY
[0005] Certain embodiments of the present disclosure relate
generally to providing data storage support for a personalization
system.
[0006] In one aspect, a method to assist a user to identify one or
more businesses of interest is provided. The method may include one
or a combination of the following, which may be performed by a
computer system. Individual selections, by a plurality of end
users, of one or more businesses to retain information
corresponding to the one or more businesses may be facilitated.
Indicia of selections made by each end user of the plurality of end
users may be processed, the indicia being received by the computer
system via a network. Collections of business information in one or
more repositories may be retained. Each collection of the
collections of business information: may be uniquely associated
with a respective end user of the plurality of end users; may
include information corresponding to one or more selected
businesses of the one or more businesses that were individually
selected by the respective end user for retention in association
with the respective end user; and may be associated with a
respective theme pertaining to the one or more selected businesses.
Each end user of the plurality of end users may be classified into
at least one category of a set of categories, the set of categories
representing classifications of end users based at least in part on
one or more sets of attributes defined for classifying various end
users. First information enabling unique identification of a first
end user may be processed. Second information about a first
location corresponding to the first end user may be processed. The
first end user may be matched to a first category from the set of
categories, where the first end user matches one or more categories
from the set of categories. A first set of collection information
associated with a first set of end users that correspond to the
first category and the first location may be identified. A
recommendation for the first end user may be determined based at
least in part on the first set of collection information, the first
category, and the first location, where the recommendation
corresponds to a first business that was individually selected for
retention in association with at least some of the first set of end
users. Indication of the recommendation to a first end-user
computing device associated with the first end user may be caused,
and selection of the first business to retain information
corresponding to the first business in association with the first
end user may be facilitated.
[0007] In another aspect, a system is provided to assist a user to
identify one or more businesses of interest. The system may include
one or more network interfaces accessible from a network and one or
more processors coupled to at least one of the one or more network
interfaces and to one or more repositories. The one or more
processors may execute instructions to perform one or a combination
of the following. Individual selections, by a plurality of end
users, of one or more businesses to retain information
corresponding to the one or more businesses may be facilitated.
Indicia of selections made by each end user of the plurality of end
users may be processed, the indicia being received by the computer
system via a network. Collections of business information in one or
more repositories may be retained. Each collection of the
collections of business information: may be uniquely associated
with a respective end user of the plurality of end users; may
include information corresponding to one or more selected
businesses of the one or more businesses that were individually
selected by the respective end user for retention in association
with the respective end user; and may be associated with a
respective theme pertaining to the one or more selected businesses.
Each end user of the plurality of end users may be classified into
at least one category of a set of categories, the set of categories
representing classifications of end users based at least in part on
one or more sets of attributes defined for classifying various end
users. First information enabling unique identification of a first
end user may be processed. Second information about a first
location corresponding to the first end user may be processed. The
first end user may be matched to a first category from the set of
categories, where the first end user matches one or more categories
from the set of categories. A first set of collection information
associated with a first set of end users that correspond to the
first category and the first location may be identified. A
recommendation for the first end user may be determined based at
least in part on the first set of collection information, the first
category, and the first location, where the recommendation
corresponds to a first business that was individually selected for
retention in association with at least some of the first set of end
users. Indication of the recommendation to a first end-user
computing device associated with the first end user may be caused,
and selection of the first business to retain information
corresponding to the first business in association with the first
end user may be facilitated.
[0008] In yet another aspect, one or more non-transitory,
machine-readable media having machine-readable instructions thereon
are provided to assist a user to identify one or more businesses of
interest, which instructions, when executed by one or more
computers or other processing devices, cause the one or more
computers or other processing devices to perform one or a
combination of the following. Individual selections, by a plurality
of end users, of one or more businesses to retain information
corresponding to the one or more businesses may be facilitated.
Indicia of selections made by each end user of the plurality of end
users may be processed, the indicia being received by the computer
system via a network. Collections of business information in one or
more repositories may be retained. Each collection of the
collections of business information: may be uniquely associated
with a respective end user of the plurality of end users; may
include information corresponding to one or more selected
businesses of the one or more businesses that were individually
selected by the respective end user for retention in association
with the respective end user; and may be associated with a
respective theme pertaining to the one or more selected businesses.
Each end user of the plurality of end users may be classified into
at least one category of a set of categories, the set of categories
representing classifications of end users based at least in part on
one or more sets of attributes defined for classifying various end
users. First information enabling unique identification of a first
end user may be processed. Second information about a first
location corresponding to the first end user may be processed. The
first end user may be matched to a first category from the set of
categories, where the first end user matches one or more categories
from the set of categories. A first set of collection information
associated with a first set of end users that correspond to the
first category and the first location may be identified. A
recommendation for the first end user may be determined based at
least in part on the first set of collection information, the first
category, and the first location, where the recommendation
corresponds to a first business that was individually selected for
retention in association with at least some of the first set of end
users. Indication of the recommendation to a first end-user
computing device associated with the first end user may be caused,
and selection of the first business to retain information
corresponding to the first business in association with the first
end user may be facilitated.
[0009] In various embodiments, data about the first end user may be
gathered from one or more data sources, and the data about the
first end user may be analyzed to determine a first set of one or
more attributes of the first end user. The matching the first end
user to the first category may be based at least in part on
determining that the first set of one or more attributes of the
first end user correspond to the first category. The first set of
end users that correspond to the first category may share the first
set of one or more attributes in common with the first end user. In
various embodiments, the one or more data sources may include one
or both of the first end user or a third party data source, and the
data about the first end user may include demographic data. In
various embodiments, the first set of one or more attributes of the
first end user may include one or more of a demographic
characterization of the first end user, a consumer characterization
of the first end user, and/or a proximity to a life event.
[0010] In various embodiments, a set of businesses associated with
the first set of collection information may be ranked based at
least in part on a first metric. The determining the recommendation
for the first end user may include selecting the first business
based at least in part on the ranking. In various embodiments, the
recommendation for the first end user comprises an offer from the
first business.
[0011] In various embodiments, the determining the recommendation
for the first end user may include retrieving a second set of
collection information that is associated with the first end user
and that include information corresponding to one or more selected
businesses of the one or more businesses that were individually
selected by the first end user for retention. The second set of
collection information may be compared with the first set of
collection information associated with the first set of end users,
and one or more similarities may be identified.
[0012] In an aspect, a system is provided for managing
user-generated content associated with a plurality of users. The
system can comprise one or more storage nodes configured to store a
database that comprises a first table and a second table. The first
table can be configured to store a first plurality of entries
corresponding to a plurality of user-generated collections, each of
the first plurality of entries including a user identifier that
uniquely identifies a respective user of the system, a local
collection identifier that uniquely identifies a respective
collection from collections associated with the respective user,
and a role indicator that indicates whether the respective
collection is owned by the respective user or followed by the
respective user. The second table can be configured to store a
second plurality of entries corresponding to the plurality of
user-generated collections, each of the second plurality of entries
including a global collection identifier that uniquely identifies a
respective collection from the plurality of collections associated
with the plurality of users. The system can comprise one or more
interface server communicatively coupled to the one or more storage
nodes. The interface server can be configured to: receive a first
request for a first collection, the first request including a first
user identifier and a first local collection identifier of the
collection, retrieve a first entry from the first table based at
least in part on the first user identifier and the first local
collection identifier, determine, based at least in part on a first
role indicator associated of the first entry, that the first
collection is owned by the respective user of the first entry,
transmit the first entry as a response to the first request,
receive a second request for a second collection, the second
request including a second user identifier and a second collection
identifier, retrieve a second entry from the first table based on
the second user identifier and the second collection identifier,
determine, based at least in part on a second role indicator
associated of the second entry, that the second collection is
followed by the respective user of the second entry, retrieve a
third entry from the second table based at least in part on the
second entry, and transmit the third entry as a response to the
second request.
[0013] In some embodiments, the second entry can comprise a global
collection identifier of the third entry and retrieving the third
entry from the second table is based on the global collection
identifier of the third entry. The role indicator of at least one
entry of the first plurality of entries stored in the first table
can further indicate whether the respective collection is shared
with the respective user. The role indicator of the at least one
entry of the first plurality of entries stored in the first table
can further indicate whether the respective collection is shared
with the respective user with read-only access or with write
access.
[0014] In some embodiments, at least one entry of the first
plurality of entries stored in the first table can further comprise
a set of user identifiers corresponding to a set of followers for
the respective collection. At least one entry of the first
plurality of entries stored in the first table can further comprise
a map of share permissions mapping one or more user identifiers
with corresponding one or more permission indicators, the one or
more user identifiers correspond to one or more users that share
the respective collection. At least one entry of the first
plurality of entries stored in the first table can further comprise
a set of business identifiers, each corresponding to a business
that is included in the respective collection.
[0015] In another aspect, a method is provided for managing
user-generated content associated with a plurality of users. The
method can comprise storing a first table in a database, the first
table configured to store a first plurality of entries
corresponding to a plurality of user-generated collections, each of
the first plurality of entries including a user identifier that
uniquely identifies a respective user of the system, a local
collection identifier that uniquely identifies a respective
collection from collections associated with the respective user,
and a role indicator that indicates whether the respective
collection is owned by the respective user or followed by the
respective user; storing a second in the database, the second table
configured to store a second plurality of entries corresponding to
the plurality of user-generated collections, each of the second
plurality of entries including a global collection identifier that
uniquely identifies a respective collection from the plurality of
collections associated with the plurality of users; receiving a
first request for a first collection, the first request including a
first user identifier and a first local collection identifier of
the collection; retrieving a first entry from the first table based
at least in part on the first user identifier and the first local
collection identifier; determining, based at least in part on a
first role indicator associated of the first entry, that the first
collection is owned by the respective user of the first entry;
transmitting the first entry as a response to the first request;
receiving a second request for a second collection, the second
request including a second user identifier and a second collection
identifier; retrieving a second entry from the first table based on
the second user identifier and the second collection identifier;
determining, based at least in part on a second role indicator
associated of the second entry, that the second collection is
followed by the respective user of the second entry; retrieving a
third entry from the second table based at least in part on the
second entry; and transmitting the third entry as a response to the
second request.
[0016] In some embodiments, the method can further comprise
receiving a third request to update a third collection, the third
request including a third user identifier and a third collection
identifier; retrieving a fourth entry from the first table based on
the third user identifier and the third collection identifier;
determining, based at least in part on the role indicator of the
fourth entry, that the third collection is owned by the respective
user of the fourth entry; updating the fourth entry according to
the third request; receiving a fourth request to update a fourth
collection, the fourth request including a fourth user identifier
and a fourth collection identifier; retrieving a fifth entry from
the first table based on the fourth user identifier and the fourth
collection identifier; determining, based at least in part on the
role indicator of the fifth entry, that the fourth collection is
shared with the respective user of the fifth entry; identifying a
sixth entry from the second table based at least in part on the
fifth entry; and updating the sixth entry according to the fourth
request.
[0017] In some embodiments, the method can further comprise
determining that updating the sixth entry is allowed based at least
in part on the role indicator of the fifth entry. The method can
further comprise determining that updating the sixth entry is
allowed based at least in part on a map of share permissions
associated with the fifth entry or the sixth entry, the map of
share permissions mapping one or more user identifiers with
corresponding one or more permission indicators, the one or more
user identifiers corresponding to one or more users that share the
respective collection.
[0018] In some embodiments, the fourth entry can comprise a set of
user identifiers corresponding to a set of followers for the third
collection and the method can further comprise causing update
notifications to be provided to at least some of the set of
followers regarding the update to the third collection.
[0019] In some embodiments, the sixth entry can comprise a set of
user identifiers corresponding to a set of followers for the fourth
collection and the method can further comprise causing update
messages to be provided to at least some of the set of followers
regarding the update to the fourth collection.
[0020] In some embodiments, the fourth request to update the fourth
collection can comprise adding a business listing to the fourth
collection and updating the sixth entry can comprise adding a
mapping between a requesting user identifier and the added business
listing.
[0021] In yet another aspect, one or more non-transitory,
machine-readable media having machine-readable instructions thereon
is provided for managing user-generated content associated with a
plurality of users. The machine-readable instructions, when
executed by one or more computers or other processing devices, can
cause the one or more computers or other processing devices to:
store a first table in a database, the first table configured to
store a first plurality of entries corresponding to a plurality of
user-generated collections, each of the first plurality of entries
including a user identifier that uniquely identifies a respective
user of the system, a local collection identifier that uniquely
identifies a respective collection from collections associated with
the respective user, and a role indicator that indicates whether
the respective collection is owned by the respective user or
followed by the respective user, and store a second in the
database, the second table configured to store a second plurality
of entries corresponding to the plurality of user-generated
collections, each of the second plurality of entries including a
global collection identifier that uniquely identifies a respective
collection from the plurality of collections associated with the
plurality of users; receive a first request for a first collection,
the first request including a first user identifier and a first
local collection identifier of the collection; retrieve a first
entry from the first table based at least in part on the first user
identifier and the first local collection identifier; determine,
based at least in part on a first role indicator associated of the
first entry, that the first collection is owned by the respective
user of the first entry; transmit the first entry as a response to
the first request; receive a second request for a second
collection, the second request including a second user identifier
and a second collection identifier; retrieve a second entry from
the first table based on the second user identifier and the second
collection identifier; determine, based at least in part on a
second role indicator associated of the second entry, that the
second collection is followed by the respective user of the second
entry; retrieve a third entry from the second table based at least
in part on the second entry; and transmit the third entry as a
response to the second request.
[0022] In some embodiments, the second entry can comprise a global
collection identifier of the third entry and retrieving the third
entry from the second table can be based on the global collection
identifier of the third entry. The role indicator of at least one
entry of the first plurality of entries stored in the first table
can further indicate whether the respective collection is shared
with the respective user. The role indicator of the at least one
entry of the first plurality of entries stored in the first table
can further indicate whether the respective collection is shared
with the respective user with read-only access or with write
access.
[0023] In some embodiments, at least one entry of the first
plurality of entries stored in the first table can further comprise
a set of user identifiers corresponding to a set of followers for
the respective collection. At least one entry of the first
plurality of entries stored in the first table can further comprise
a map of share permissions mapping one or more user identifiers
with corresponding one or more permission indicators, the one or
more user identifiers correspond to one or more users that share
the respective collection.
[0024] Further areas of applicability of the present disclosure
will become apparent from the detailed description provided
hereinafter. It should be understood that the detailed description
and specific examples, while indicating various embodiments, are
intended for purposes of illustration only and are not intended to
necessarily limit the scope of the disclosure.
BRIEF DESCRIPTION OF THE DRAWINGS
[0025] The present disclosure is described in conjunction with the
following appended figures.
[0026] FIG. 1 is a high-level block diagram of a system, in
accordance with certain embodiments of the present disclosure.
[0027] FIGS. 2 and 2A-2E show diagrams of an architecture stack of
the interaction infrastructure 102, in accordance with certain
embodiments of the present disclosure, in accordance with certain
embodiments of the present disclosure.
[0028] FIG. 3 is a block diagram of one non-limiting example of a
client device that corresponds to a mobile communication device, in
accordance with certain embodiments of the present disclosure.
[0029] FIG. 4 is a block diagram that illustrates an example method
of certain aspects of a personalized business information
orchestration, in accordance with certain embodiments of the
present disclosure.
[0030] FIG. 5 is a block diagram that illustrates an example method
of certain aspects of a personalized business information
orchestration, in accordance with certain embodiments of the
present disclosure.
[0031] FIG. 6 is a block diagram that illustrates an example method
of certain aspects of a personalized business information
orchestration, in accordance with certain embodiments of the
present disclosure.
[0032] FIG. 7 illustrates a functional block diagram of certain
aspects of personalized business information orchestration, in
accordance with certain embodiments of the present disclosure.
[0033] FIGS. 8A, 8B, 8C, 8D, and 8E are screenshots illustrating
example end-user interfaces, in accordance with certain embodiments
of the present disclosure.
[0034] FIG. 9 is a screenshot illustrating an example end-user
interface, in accordance with certain embodiments of the present
disclosure.
[0035] FIG. 10 is a screenshot, which may be a partial screenshot,
of an end-user interface that may be displayed after
navigating/drilling down into a collaborative collection, in
accordance with certain embodiments of the present disclosure.
[0036] FIG. 11 is an example of sharing collection information via
social/business networking services account postings, in accordance
with certain embodiments.
[0037] FIG. 12 is a screenshot, which may be a partial screenshot,
of a public profile that may be displayed after selection of a link
made available with posting, in accordance with certain
embodiments.
[0038] FIG. 13 is a screenshot, which may be a partial screenshot,
of the end-user interface that may be displayed after navigating to
another user's public collections, in accordance with certain
embodiments.
[0039] FIG. 14 is a screenshot, which may be a partial screenshot,
of a search interface, in accordance with certain embodiments of
the present disclosure.
[0040] FIG. 15 is a screenshot, which may be a partial screenshot,
of a search interface with business-specific information that may
be displayed responsive to user selection, in accordance with
certain embodiments of the present disclosure.
[0041] FIG. 16 is a screenshot, which may be a partial screenshot,
of an end-user interface, in accordance with certain embodiments of
the present disclosure.
[0042] FIGS. 17A, 17B, and 17C are screen displays illustrating
example end-user interfaces, in accordance with certain embodiments
of the present disclosure.
[0043] FIG. 18 illustrates one embodiment of a merchant dashboard
for an advertising platform that may correspond to a provider
interface, in accordance with certain embodiments of the present
disclosure.
[0044] FIG. 19 depicts a functional block diagram of certain
aspects of end-user qualification, in accordance with certain
embodiments of the present disclosure.
[0045] FIG. 20 depicts a functional block diagram of certain
aspects of end-user data capture, analytics, and qualification, in
accordance with certain embodiments of the present disclosure.
[0046] FIG. 21 illustrates one embodiment of an offer manager for
an advertising platform that may correspond to a provider
interface, in accordance with certain embodiments of the present
disclosure.
[0047] FIG. 22 is a diagram of an exemplary environment with which
embodiments may be implemented, in accordance with certain
embodiments of the present disclosure.
[0048] FIG. 23 is a diagram of an embodiment of a special-purpose
computer system, in accordance with certain embodiments of the
present disclosure.
[0049] FIG. 24 depicts a functional block diagram of certain
aspects of recommendation generation, in accordance with certain
embodiments of the present disclosure.
[0050] FIG. 25 is a block diagram that illustrates an example
method of offer provisioning where recommendations include offers
for particular end users, in accordance with certain embodiments of
the present disclosure.
[0051] FIG. 26 is a block diagram that illustrates an example
method of facilitating features to allow a user of the platform to
direct queries to other users, in accordance with certain
embodiments of the present disclosure.
[0052] FIG. 27 depicts a functional block diagram of certain
aspects of end-user qualification to facilitate querying, in
accordance with certain embodiments of the present disclosure.
[0053] FIG. 28 depicts a functional block diagram of certain
aspects of query recipient selection, in accordance with certain
embodiments of the present disclosure.
[0054] FIG. 29 is an exemplary environment with which embodiments
may be implemented is shown with a computer system that can be used
by a designer to design, for example, electronic designs, in
accordance with certain embodiments of the present disclosure.
[0055] FIG. 30 is an embodiment of a special-purpose computer
system, in accordance with certain embodiments of the present
disclosure.
[0056] FIG. 31 illustrates an exemplary environment in which a data
storage system may be implemented, in accordance with
embodiments.
[0057] FIG. 32 illustrates exemplary database tables used to store
collection information, in accordance with embodiments.
[0058] FIG. 33 illustrates exemplary database columns or attributes
used for storing collection information, in accordance with
embodiments.
[0059] FIG. 34 illustrates an example process for implementing
retrieval of collection information, in accordance with
embodiments.
[0060] FIG. 35 illustrates an example process for implementing
update of collection information, in accordance with
embodiments.
[0061] FIG. 36 illustrates an exemplary environment for
implementing user notification, in accordance with embodiments.
[0062] In the appended figures, similar components and/or features
may have the same reference label. Further, various components of
the same type may be distinguished by following the reference label
by a dash and a second label that distinguishes among the similar
components. If only the first reference label is used in the
specification, the description is applicable to any one of the
similar components having the same first reference label
irrespective of the second reference label.
DETAILED DESCRIPTION
[0063] The ensuing description provides preferred exemplary
embodiment(s) only, and is not intended to limit the scope,
applicability or configuration of the disclosure. Rather, the
ensuing description of the preferred exemplary embodiment(s) will
provide those skilled in the art with an enabling description for
implementing a preferred exemplary embodiment of the disclosure. It
should be understood that various changes may be made in the
function and arrangement of elements without departing from the
spirit and scope of the disclosure as set forth in the appended
claims.
[0064] Specific details are given in the following description to
provide a thorough understanding of the embodiments. However, it
will be understood by one of ordinary skill in the art that the
embodiments maybe practiced without these specific details. For
example, circuits may be shown in block diagrams in order not to
obscure the embodiments in unnecessary detail. In other instances,
well-known circuits, processes, algorithms, structures, and
techniques may be shown without unnecessary detail in order to
avoid obscuring the embodiments.
[0065] Also, it is noted that the embodiments may be described as a
process which is depicted as a flowchart, a flow diagram, a data
flow diagram, a structure diagram, or a block diagram. Although a
flowchart may describe the operations as a sequential process, many
of the operations can be performed in parallel or concurrently. In
addition, the order of the operations may be re-arranged. A process
is terminated when its operations are completed, but could have
additional steps not included in the figure. A process may
correspond to a method, a function, a procedure, a subroutine, a
subprogram, etc. When a process corresponds to a function, its
termination corresponds to a return of the function to the calling
function or the main function.
[0066] Moreover, as disclosed herein, the term "storage medium" may
represent one or more devices for storing data, including read only
memory (ROM), random access memory (RAM), magnetic RAM, core
memory, magnetic disk storage mediums, optical storage mediums,
flash memory devices and/or other machine readable mediums for
storing information. The term "computer-readable medium" includes,
but is not limited to portable or fixed storage devices, optical
storage devices, wireless channels and various other mediums
capable of storing, containing or carrying instruction(s) and/or
data.
[0067] Furthermore, embodiments may be implemented by hardware,
software, firmware, middleware, microcode, hardware description
languages, or any combination thereof. When implemented in
software, firmware, middleware or microcode, the program code or
code segments to perform the necessary tasks may be stored in a
machine readable medium such as storage medium. A processor(s) may
perform the necessary tasks. A code segment may represent a
procedure, a function, a subprogram, a program, a routine, a
subroutine, a module, a software package, a class, or any
combination of instructions, data structures, or program
statements. A code segment may be coupled to another code segment
or a hardware circuit by passing and/or receiving information,
data, arguments, parameters, or memory contents. Information,
arguments, parameters, data, etc. may be passed, forwarded, or
transmitted via any suitable means including memory sharing,
message passing, token passing, network transmission, etc.
[0068] Various embodiments according to the present disclosure may
provide for windowing of business information on one or more of
geographical, temporal, demographical, and/or social/business
networking bases. Certain embodiments may provide an easy way for
consumers to find and discover the best local merchants. Certain
embodiments may allow consumers to see which local merchants are
popular and trusted around them. Searching by a consumer may become
more relevant and personalized to the consumer's history and
business interests. Certain embodiments may provide one or more
ways in which a user may organize the user's business relationship
information and may automatically manage, update, and maintain
relationship information in order to make the user's life a lot
easier. Various embodiments may allow consumers to create and
curate business information collections, add custom content to
collections, get updates from the businesses of interest, see
friends' recommendations, and see what businesses are trending in
the consumer's local area(s) of interest.
[0069] A user's personalized business information may be retained
in/with a local graph of merchants of interest to the user. Certain
embodiments may allow for generating a local graph of merchants,
organizing the local graph, augmenting the local graph, updating
the local graph, exposing the local graph to the user, and/or
sharing of the local graph with one or more third parties, which
may include one or more other users. Certain embodiments may allow
saving of listings information into one or more collections, and
certain embodiments may automatically organize a user's listings
into collections. By saving of listing information for later use, a
user may readily retrieve listing information for businesses of
interest. Certain embodiments may allow a user to retrieve the
user's personalized business information from any suitable
network-connected computing device so that the information is
accessible to the user wherever the user may be.
[0070] In some embodiments, organization of business information
into collections may be based on default criteria and/or
user-specified criteria. As some potential non-limiting examples of
collections, there may be a home collection, a garden collection, a
pet collection, a family collection, a health collection, a kid's
collection, a collection customized to a specific project, etc. A
collection may allow for retrieval of listings at any time.
[0071] Business listing information associated with a collection
may be automatically updated by the information handling system
such that, when listing information is retrieved from a collection,
the listing information may be updated information. Thus, a
collection allows for the maintenance of listing information of
interest to provide a user with the most up-to-date listing
information for the businesses that matter to the user. And, thus,
if a provider associated with a collection has moved or changed
phone numbers, the user will not be left with obsolete information
(as the user would otherwise be if such information was recorded
into an address book) because the change may be captured so that
the collection would be automatically updated with the new
information.
[0072] Certain embodiments may provide an automated workflow to
gauge a user's interests. The automated workflow may include a
series of questions presented to the user, the answers to which, as
provided by user selections, may indicate user interests. A user's
interests may be used as one or more bases for prompting the user
according to various embodiments disclosed herein.
[0073] Certain embodiments may provide the option for a user to
create a custom collection. For example, a user could create a
custom collection for a kitchen remodeling project. Providers that
are helping, and/or could potentially help, the user with the
project could be associated with the collection, with notes on
them, indicia of whether the user likes particular providers or
not, which providers have been contacted, information obtained from
providers, which providers have been selected, etc.
[0074] A collection may allow for addition of notes by a user to a
listing or a group of listings in the collection. Some embodiments
could provide a preference indication feature and/or a rating
feature for a user to rate a provider. The preference indication
feature could include a user-selectable option allowing a user to
indicate a preference for a provider in any suitable manner. The
rating feature could include a user-selectable option presenting
ratings for selection in any suitable manner.
[0075] Thus, a user can record notes about what might be
interesting to the user. For example, the user may note having
talked to so-and-so, and may generally keep track of various things
related to one or more businesses of interest. For example, a user
may be planning a project, say a kitchen remodeling project, and
may wish to keep track of various aspects related to the project,
such as impressions, progress, schedules, ideas, interactions,
quotes, deals, and so forth, so that it is all in one place.
[0076] Certain embodiments may provide a user with reminders about
various aspects of a collection, such as deals and offers, schedule
reminders, how long it is been since the user interacted with a
given business, whether the user needs to check in with a given
business, and/or the like. Certain embodiments may help a user
track interactions with businesses. Where the user has been and/or
has not been recently may be tracked, for example. For example, the
user's last interaction, whether it be a visit or otherwise, with a
given restaurant could be tracked and logged with the business
information for the restaurant in a particular collection. Such
aspects could be managed for the user. As another example, a user's
interaction with one or more dentists could be managed, such as the
user's last cleaning, when the user was last searching for
dentists, etc., and, based on such information, reminders and/or
suggestions (such as other possible dentists of interest, for
example, highly rated dentists in an area of interest to the user
that the user may not have considered and which may have special
offers) could be presented.
[0077] Certain embodiments may provide the option for a user to
allow one or more collaborators to have access to a collection. A
collaborator could be another user in some embodiments. An enlist
option could be presented to the user to allow the user to enlist
another user as a collaborator. A collaborator could have a viewing
access and, in some embodiments, editing access and/or access to
add content such that the collaborator may add notes, photos,
preference indicia, ratings indicia, etc. Some embodiments may
allow the user to determine a level of access granted to a
collaborator. Certain embodiments may provide the option for a user
to share a collection with a third party. Accordingly, the various
embodiments directed to information sharing may facilitate
organization and engagement with a local business community.
[0078] Certain embodiments may provide significant value to
businesses through enabling a direct, but low-maintenance,
relationships with consumers. Significant value to businesses may
also be provided via a business platform that exposes market and
consumer insights. Certain embodiments may provide businesses with
visibility into their consumers and may provide an easy way to
communicate and market to their customers, for example, by
marketing events, pushing offers to customers, driving awareness of
new products and services, responding to inquiries, etc.
Embodiments may provide multiple customer touch points, which, in
turn, may allow for better metrics and targeting.
[0079] Certain embodiments may provide business-specific
recommendations to users. Certain embodiments may provide for
harvesting of consumer data. The consumer data may be analyzed with
respect to individual users. One or more categories for the
individual users may be determined based on the analysis, and
certain embodiments may facilitate the provisioning of business
recommendations pertinent to the one or more categories to the
individual users. The recommendations could be based at least in
part on aggregated recommendations of other users. Information
about recommendations of other users could be gathered, analyzed,
and classified according to any suitable bases. For example,
aggregated recommendations could be classified according to user
types. Analysis of information about an identified user could
entail comparing the user information to information about other
users (e.g., to determine user similarities) in order to recommend
businesses (e.g., others' favorite or otherwise preferred
businesses) for the identified user to review. The system may then
send indications to the identified user of subscribers regarding
options corresponding to the rated content.
[0080] In a set of embodiments, recommendations could be based at
least in part on demographic information. The demographic
information could include information about income level, education
level, lifestyle, age, family/household, home ownership, etc.
Recommendations could be based at least in part on any suitable
consumer-specific information. For example, such consumer-specific
information could include information on whether the consumer is
proximate to life milestones such as a graduation, a new job, a
wedding, childbirth, purchasing a home, etc. Accordingly, certain
embodiments may use cluster-based consumer data and/or
user-targeted consumer data.
[0081] In a set of embodiments, one or more collaborative filtering
algorithms may be employed to define similarities between
businesses based at least in part on consumer data. One or more
indexes may be created based on similarities between businesses.
With respect to a particular user, the user may be identified based
on user identification information and/or device identification
information for a device that may be associated with a user.
Information related to the user and/or specific to the user may be
gathered and analyzed in view of the one or more indexes to match
the user with a set of one or more recommendations.
[0082] The aggregated recommendation information could be
anonymized in some embodiments so that one or more specific
recommendations are offered to an individual user without revealing
identities of other users from whom the one or more specific
recommendations are derived. Though anonymized, a specific
recommendation could be offered with a general characterization of
the other users. As one example out of many possibilities, a
recommendation for a dog owner in Glendale, Calif., could indicate
that other dog owners in Glendale have a preference for a
particular veterinarian.
[0083] In some embodiments, aggregated recommendation information
may not be anonymized. Certain users of the platform may have
public recommendation information. Real estate agents, for example,
may curate a collection of local service providers relevant to
those who have bought or in the process of buying a house in a
particular area (such as recommended inspectors, handymen, and the
like) and may wish to have such recommendations public.
Accordingly, recommendations may not necessarily be anonymized.
[0084] In some embodiments, the recommendations may include a
customized collection of advertising information for businesses.
The customized collection may be automatically generated by the
system for an individual user based on the analysis. The customized
collection may be presented to the user as a curated collection
with user-selectable options that allow the user to select and/or
de-select recommended businesses for retention in association with
the user. For example, the user may select one or more recommended
businesses for additions to a new or existing collection of the
user. As another example, the user may select a recommended
collection for addition as a new collection or for addition to an
existing collection.
[0085] A data storage system or service is provided to store and
access data that is generated by the personalized information
orchestration system (also referred to as personalization system)
described herein. The data storage service can be configured to
support storing, retrieving or querying, and updating of data such
as user information, personalized content such as personalized
business information and collection information, statistics
information related to users, collections, businesses, and the
like. The data model design of the data storage system may be
configured to optimize performance associated with specific
features or use cases of the personalized system such as following
and/or sharing of collections. Additionally, the data storage
system may be configured to detect and provide user notifications
of triggered events.
[0086] Various embodiments will now be discussed in greater detail
with reference to the accompanying figures, beginning with FIG.
1.
[0087] FIG. 1 depicts a high-level block diagram of a system 100,
in accordance with certain embodiments of the present disclosure.
The system 100 may allow for interaction between two or more of an
interaction processing infrastructure 102 (sometimes referenced
herein as interaction infrastructure 102), client interfaces 205,
service tool interfaces 207, data acquisition interfaces 111,
and/or media channel interfaces 114. As depicted, components of the
system 100 may be communicatively coupled or couplable to one or
more networks 108.
[0088] The one or more networks 108 may be a suitable means to
facilitate data transfer in the system 100 and could include
multiple networks and/or network components. In various
embodiments, the one or more networks 108 may be implemented with,
without limitation, one or more of the Internet, a wide area
network (WAN), a local area network (LAN) such as one based on
Ethernet, Token-Ring and/or the like, a wireless network (e.g., a
network operating under Bluetooth.RTM., any of the Institute of
Electrical and Electronics (IEEE) 802.11 suite of protocols, and/or
any other wireless protocol), a wireless local area network (WLAN),
a cellular network, such as through 4G, 3G, GSM (Global System for
Mobile Communications), etc., another wireless network, a gateway,
a public switched telephone network (PSTN), and/or any other
appropriate architecture or system that facilitates the
communication of signals, data, and/or message. In various
embodiments, the one or more networks 108 may transmit data using
any suitable communication protocol(s), such as, without
limitation, TCP/IP (transmission control protocol/Internet
protocol), SNA (systems network architecture), IPX (Internet packet
exchange), AppleTalk, and/or the like. In various embodiments, the
one or more networks 108 and its various components may be
implemented using hardware, software, and communications media such
wires, optical fibers, microwaves, radio waves, and other
electromagnetic and/or optical carriers; and/or any combination of
the foregoing and/or the like. In some embodiments, the network 108
may include a telephone network that may be circuit switched,
package switched, or partially circuit switched and partially
package switched. For example, the telephone network may partially
use the Internet to carry phone calls (e.g., through VoIP).
[0089] The interaction processing infrastructure 102 may facilitate
searching of one or more information repositories in response to
data received over the one or more networks 108 from any one or
combination of the interfaces. In various embodiments, the
interaction processing infrastructure 102 may include a set of
devices configured to process, transform, encode, translate, send,
receive, retrieve, detect, generate, compute, organize, categorize,
qualify, store, display, present, handle, or use information and/or
data suitable for the embodiments described herein. The interaction
processing infrastructure 102 may be implemented in or with a
distributed computing and/or cloud computing environment with a
plurality of servers and cloud-implemented resources. The
interaction processing infrastructure 102 may include processing
resources communicatively coupled to storage media, random access
memory (RAM), read-only memory (ROM), and/or other types of memory.
The interaction processing infrastructure 102 may include various
input and output (I/O) devices, network ports, and display
devices.
[0090] In certain embodiments, the interaction processing
infrastructure 102 may be communicatively coupled or couplable to
one or more data sources via one or more data acquisition
interfaces 111. The one or more data sources may include any
suitable source of data to facilitate embodiments disclosed further
herein. In various embodiments, the one or more data sources may
include one or more of a database, a website, any repository of
data in any suitable form, and/or a third party system. In various
embodiments, the one or more data sources may correspond to one or
more social media websites and/or photo-sharing websites. With some
embodiments, the data sources may include one or more mobile
computing device locator services that provide information
regarding the location of one or more client devices 205 and/or 207
(depicted in FIG. 2A). With some embodiments, the data sources may
provide various details relating to call data. With some
embodiments, the data sources may provide caller name information
from calling name delivery (CNAM), also known as caller
identification or caller ID, may be used to determine particular
details about the caller. With some embodiments, the data sources
may provide information about the area of a caller. With some
embodiments, the data sources may provide demographic data about an
area.
[0091] In various embodiments, the data from the one or more data
sources may be retrieved and/or received by the interaction
processing infrastructure 102 via the one or more data acquisition
interfaces 111 through network(s) 108 and/or through any other
suitable means of transferring data. In some embodiments, the
interaction processing infrastructure 102 and the data sources
could use any suitable means for direct communication. According to
certain embodiments, data may be actively gathered and/or pulled
from one or more data sources, for example, by accessing a third
party repository and/or by "crawling" various repositories. Certain
data pulled and/or pushed from the one or more data sources may be
transformed and the transformed data and/or other data generated
based thereon may be made available by the interaction processing
infrastructure 102 for users of client devices 205 and/or 207. In
alternative embodiments, data from the one or more data sources may
be made available directly to client devices 205 and/or 207.
[0092] In some embodiments, the one or more data acquisition
interfaces 111 may be implemented in similar manner to interfaces
205 and/or 207 or any other suitable interface. In some
embodiments, the one or more data acquisition interfaces 111 may
include one or more application programming interfaces (APIs) that
define protocols and routines for interfacing with the data
sources. The APIs may specify application programming interface
(API) calls to/from data source systems. In some embodiments, the
APIs may include a plug-in to integrate with an application of a
data source system. The one or more data acquisition interfaces
111, in some embodiments, could use a number of API translation
profiles configured to allow interface with the one or more
additional applications of the data sources to access data (e.g., a
database or other data store) of the data sources. The API
translation profiles may translate the protocols and routines of
the data source system to integrate at least temporarily with the
system and allow communication with the system by way of API calls.
Data, as referenced herein, may correspond to any one or
combination of raw data, unstructured data, structured data,
information, and/or content which may include media content, text,
documents, files, instructions, code, executable files, images,
video, audio, and/or any other suitable content suitable for
embodiments of the present disclosure.
[0093] According to certain embodiments, the interaction processing
infrastructure 102 may include or provide a service management
platform. A provider may access the interaction processing
infrastructure 102 via a service tool interface 207. An end user
may access the interaction processing infrastructure 102 via a
client interface 205. The interaction processing infrastructure 102
may facilitate searching of one or more information repositories in
response to information received over the network 108 from the
client interfaces 205 and/or service tool interfaces 207.
[0094] The client interfaces 205 and/or service tool interfaces 207
may allow for transfer of and access to information in accordance
with certain embodiments disclosed herein. In various embodiments,
the client interface(s) 205 and/or service tool interface(s) 207
may include one or more suitable input/output modules and/or other
system/devices operable to serve as an interface between a service
provider(s) and the provider management platform. The client
interfaces 205 and/or service tool interfaces 207 may facilitate
communication over the network 108 using any suitable transmission
protocol and/or standard. In various embodiments, the interaction
infrastructure 102 may include, provide, and/or be configured for
operation with the client interfaces 205 and/or service tool
interfaces 207, for example, by making available and/or
communicating with one or more of a website, a web page, a web
portal, a web application, a mobile application, enterprise
software, and/or any suitable application software. In some
embodiments, a client interface 205 and/or service tool interface
207 may include an API to interact with the interaction
infrastructure 102.
[0095] In some embodiments, a client interface 205 and/or a service
tool interface 207 may include a web interface. In some
embodiments, the client interface 205 and/or service tool interface
207 may include or work with an application made available to one
or more interfaces, such as a mobile application as discussed
herein. In some embodiments, the client interface 205 and/or
service tool interface 207 may cause a web page to be displayed on
a browser of a service provider. The web page(s) may display output
and receive input from a user (e.g., by using Web-based forms, via
hyperlinks, electronic buttons, etc.). A variety of techniques can
be used to create the web pages and/or display/receive information,
such as JavaScript, Java applications or applets, dynamic HTML
and/or AJAX technologies. Accordingly, the interaction processing
infrastructure 102 may have web site(s)/portal(s) giving access to
such information, such as a provider portal.
[0096] In various embodiments, a client interface 205 and/or a
service tool interface 207 may include providing one or more
display screen images that may each include one or more user
interface elements. A user interface may include any text, image,
and/or device that can be displayed on a display screen for
providing information to a user and/or for receiving user input. A
user interface may include one or more widgets, windows,
dashboards, text, text boxes, text fields, tables, grids, charts,
hyperlinks, buttons, lists, combo boxes, checkboxes, radio buttons,
and/or the like.
[0097] In certain embodiments, a client interface 205 and/or a
service tool interface 207 may include a computing device of an end
user and/or a service provider. In certain embodiments, a client
interface 205 and/or a service tool interface 207 may include a
mobile computing device that may be any portable device suitable
for sending and receiving information over a network in accordance
with embodiments described herein.
[0098] Certain embodiments may provide a multi-channel
communication regime to coordinate multiple communication channels
used by end users and providers. Multiple communication pipes
within a communication pipe could be implemented according to
certain embodiments. Some embodiments may implement a greater
number of communication channels. For example, one set of channels
could be used for a end user to request help, and one set of
channels could be used for a provider to respond to the end user.
The system can use web communication, text communication, voice
communication, e-mail communication, push notification, and/or the
like.
[0099] According to certain embodiments, the interaction processing
infrastructure 102 may be or include a content provisioning
platform. In some embodiments, the interaction processing
infrastructure 102 may provide for the selection, generation, and
provision of content objects to one or more client interfaces 205.
In certain embodiments, providers may have content objects that may
be placed in a web page made available to one or more client
interfaces 205. In certain embodiments, providers may have content
objects that may be displayed with an application made available to
one or more client interfaces 205, such as a mobile application
according to various embodiments. In some embodiments, placement of
the content objects could be in accordance with one or more paid
placement arrangements and one or more content presentation
models.
[0100] Content objects may be included in a results page responsive
to a keyword search initiated by an end user via, for example, a
webpage and/or a mobile application. The search may be performed by
an online search engine facilitated by the interaction processing
infrastructure 102. A content object of provider may be included
within a results page with results identified and/or compiled by
the search engine and sent via the network 108 to the client
interface 205 of the end user that initiated the search.
[0101] An end user, in various embodiments, may correspond to an
end user of products, services, and/or information. A provider, in
various embodiments, may correspond to (and may be variously
referenced herein by) any one or combination of a service provider,
a product provider, a merchant, a commercial entity ("entity"), an
advisor, a representative, and/or the like. End users may use one
or more client interfaces 205; providers may use one or more
service tool interfaces 207.
[0102] FIG. 2 shows a diagram of an architecture stack 200 of the
interaction infrastructure 102, in accordance with certain
embodiments of the present disclosure. While architecture stack 200
is illustrated as having a particular structure, it should be
understood that certain embodiments may include other structures,
including those with more or less layers than illustrated, in
varying orientations and divisions. The architecture stack 200 may
be implemented across a plurality of systems and/or subsystems
corresponding to the interaction infrastructure 102. In some
embodiments, a multi-layer part of the architecture stack 200 may
be implemented at a single system or device within the interaction
infrastructure 102.
[0103] The different layers of the architecture stack 200 are
described generally herein with reference to FIG. 2 and in detail
with reference to subsequent figures. From a high level
perspective, the architecture stack 200 may include an application
and/or device layer 210, an application services management layer
240, and/or a master data management layer 265. The application
and/or device layer 210, the application services management layer
240, and/or the master data management layer 265 may include or
otherwise interface with any of various sublayers. In some
embodiments, the application and/or device layer 210, the
application services management layer 240, and/or the master data
management layer 265 may share resources and services with any one
or combination of sublayers; and, in some embodiments, certain
sublayers may share resources and services with certain other
sublayers.
[0104] The application/device layer 210 may include user devices
and applications for interacting with the other elements of the
architecture stack 200 via the elements of an interface layer 215.
For example, the applications may include web-based applications,
entity portals, mobile applications, widgets, and the like for
requesting services from and/or otherwise accessing the interaction
infrastructure 102. These applications may run on one or more user
devices. The user devices may be any suitable user device as
detailed herein.
[0105] The interface layer 215 of the architecture stack 200 may
provide interfaces for a user device to interact with the other
elements of the architecture stack 200. For example, clients,
entities, administrators, and others serviced by and/or otherwise
associated with the interaction infrastructure 102 may utilize one
or more user devices interacting within the application/device
layer 210 to request services and/or access from an application
services management layer 240. In some examples, a web-based search
interface, a mobile application search interface, an orchestration
platform interface, a provider dashboard interface, and/or the like
may be provided.
[0106] In various embodiments, the interface layer 215 may include
or otherwise interface with any one or combination of an access
management layer 220, a data acquisition layer 225, a media channel
layer 220, a communications channel layer 235, and/or the like
layer in accordance with embodiments disclosed herein.
[0107] The architecture stack 200 may include an access management
layer 220. The access management layer 220 may include elements to
manage access to services and/or data. For example, the access
management layer 220 may include elements to verify user login
credentials, IP addresses associated with a user device, device
IDs, telephone numbers, locations, and/or the like in order to
provide certain services and/or access.
[0108] The architecture stack 200 may include a data acquisition
layer 225. In some embodiments, the data acquisition layer 225 may
be included in the application services management layer 240. The
data acquisition layer 225 may receive data from various data
sources to facilitate various embodiments disclosed herein. The any
one or combination of data sources disclosed herein and/or the
like, with aggregation being facilitated in some embodiments with
any one or combination of interfaces 205, 207, 111, 114 and/or
client devices 205, 207.
[0109] The architecture stack 200 may include a media channel layer
220. The media channel layer 220 may provide interfaces for the
interaction infrastructure 102 to utilize various media channels.
For example, services may be provided to clients, entities,
administrators, and others serviced by and/or otherwise associated
with the interaction infrastructure 102 by way of media channels of
many various types including websites, mobile applications,
social/business network websites, cable and satellite television,
telephone systems, video distribution, and print (e.g., newspapers
and magazines).
[0110] The architecture stack 200 may include a communications
channel layer 235. The communications channel layer 235 may provide
interfaces for the interaction infrastructure 102 to centrally
manage services based on real-time communications. For example,
services may be provided to clients, entities, administrators, and
others serviced by and/or otherwise associated with the interaction
infrastructure 102 by way of tracking and/or handling of
communications such as telephone calls, video calls, messages,
chats, video conferencing, and/or the like in response to content
objects presented through the various media channels.
[0111] In various embodiments, the application services management
layer 240 may include or otherwise interface with any one or
combination of a search engine services layer 245, a customized
orchestration layer 250, a publication management layer 255, a
communications management layer 260, and/or the like layer in
accordance with embodiments disclosed herein. In various
embodiments, the search engine services layer 245 may include
elements to provide effective search services to end users,
providers, and/or internal elements and/or users of the interaction
infrastructure 102. In some embodiments, the search services may
include geo-aware search services. The geo-aware search services
may provide fast and efficient access to information tailored to
particular geographies. In various embodiments, the master data
management layer 265 may include or otherwise interface with any
one or combination of an aggregation and transformation layer 270,
a transformed data layer 275, a content management layer 280,
and/or the like layer in accordance with embodiments disclosed
herein.
[0112] FIG. 2A shows a diagram of a portion 200-1 of the
architecture stack 200 of the interaction infrastructure 102, in
accordance with certain embodiments of the present disclosure. The
portion 200-1 at least partially includes the application/device
layer 210, as wells as an application services system 241 and a
data management system 266 of the interaction infrastructure 102.
In some embodiments, the application services system 241 may
correspond at least partially to the interface layer 215 and the
application services management layer 240. In some embodiments, the
data management system 266 may correspond at least partially to the
master data management layer 265.
[0113] The application services system 241 may interface with the
application/device layer 210 and the data management system 266. In
some embodiments, the application services system 241 may include
at least part of the application/device layer 210. The application
services system 241 could be a middle tier of the interaction
infrastructure 102 in some embodiments, with the data management
system 266 corresponding to a back-end in some embodiments.
[0114] The application services system 241 and the data management
system 266 each may be or include a server system 242 and a server
system 267, respectively, that include one or more servers. In
various embodiments, the server systems 242, 267 may include one or
more computers, specialized server computers (including, by way of
example, PC (personal computer) servers, UNIX.RTM. servers,
mid-range servers, mainframe computers, rack-mounted servers,
etc.), server farms, server clusters, or any other appropriate
arrangement and/or combination. In various embodiments, the server
systems 242, 267 may be adapted to run one or more services,
operations, processing, or software applications described herein.
The server systems 242, 267 may run an operating system including
any of those discussed above, as well as any commercially available
server operating system. The server systems 242, 267 may also run
any of a variety of additional server applications and/or mid-tier
applications, including HTTP (hypertext transport protocol)
servers, FTP (file transfer protocol) servers, CGI (common gateway
interface) servers, JAVA.RTM. servers, database servers, and the
like. Exemplary database servers include without limitation those
commercially available from Oracle, Microsoft, Sybase, IBM
(International Entity Machines), and the like.
[0115] In some embodiments, the server systems 242, 267 may include
one or more applications to analyze and consolidate data feeds
and/or event updates received from various data sources. As an
example, data feeds and/or event updates may include, but are not
limited to, application 206, 208 updates, Twitter.RTM. feeds,
Facebook.RTM. updates, updates (real-time and/or otherwise)
received from one or more third party information sources and/or
continuous data streams, which may include real-time events related
to sensor data applications, and/or the like. The server system 242
may also include one or more applications to display the data feeds
and/or real-time events via the client devices 205, 207 and/or
devices internal to the interaction infrastructure 102.
[0116] The application services system 241 and/or the data
management system 266 may also include one or more data stores 268.
The data stores 268 may retain any data suitable for embodiments of
this disclosure. The data stores 268 may include database(s),
database management system(s), server(s) to facilitate
management/provision/transfer of data related to embodiments of
this disclosure. In various embodiments, the data stores 268 may be
implemented in various ways. For example, one or more relational or
object-oriented databases, or flat files on one or more computers
or networked storage devices, may store the information.
[0117] The data stores 268 may reside in a variety of locations,
such as on a non-transitory storage medium local to (and/or
resident in) the server systems 242, 267 and/or remote from the
server systems 242, 267 and in communication with the server
systems 242, 267 via a network-based or dedicated connection. In
certain embodiments, the data stores 268 may reside in a
storage-area network (SAN). Similarly, any necessary files for
performing the functions attributed to the server systems 242, 267
may be stored locally on the server systems 242, 267 and/or
remotely, as appropriate. In one set of embodiments, the data
stores 268 may include relational databases that are adapted to
store, update, and retrieve data in response to SQL-formatted
commands. It should be appreciated that information corresponding
to the repositories may be stored elsewhere and/or in other ways,
or may not be stored, depending on the implementations chosen.
Likewise, while various segregations of data corresponding to the
repositories are provided herein, it should be appreciated that
such examples are non-limiting, and some or all the data may be
handled in any suitable manner.
[0118] In certain embodiments, the interaction infrastructure 102
may be implemented in or with a distributed computing and/or cloud
computing environment with a plurality of servers and
cloud-implemented processing, memory, and data resources. Thus,
with accretion of service information, the system may allow for
scaling out with additional processing resources, server resources,
data storage resources, data management resources, and the like.
Some embodiments may use different types of servers to service
different types of client device 205, 207.
[0119] The interaction infrastructure 102 may offer services
provided by one or more components of the interaction
infrastructure 102, and, in some embodiments, one or more of the
services may be offered as cloud services. A specific instantiation
of a service 202 provided by the interaction infrastructure 102 may
be referred to herein as a service instance 202. In some examples,
a service 202 provided by the interaction infrastructure 102 may
include provisioning of content objects, facilitating real-time
communications, exposing features of a provider platform, exposing
features of an orchestration platform, providing protected computer
network access to data generated and/or transformed, and stored by
the infrastructure system 102, for example, via a hosted database,
a hosted web server, a hosted application server, a software
application, and/or the like. In certain embodiments, the
interaction infrastructure 102 may include a suite of applications,
middleware, and database service offerings that are delivered to
clients and/or providers.
[0120] In the illustrated embodiment, one or more client devices
205, 207 may be used by users to interact with the interaction
infrastructure 102. Although only a limited number of the client
devices 205, 207 is shown, any number of client devices 205, 207
may be supported. In various embodiments, the client devices 205
and/or 207 may correspond to devices supporting and/or accessing a
client interface 205 and/or a service tool interface 207. In some
embodiments, the client devices 205 and/or 207 may correspond to
devices supporting and/or accessing a data acquisition interface
111 and/or a media channel interface 114.
[0121] In various embodiments, the client devices 205 and/or 207
may be configured to operate a client application such as a web
browser, a proprietary client application, a web-based application,
an entity portal, a mobile application, a widget, or some other
application, which may be used by a user of the client device 205,
207 to interact with the interaction infrastructure 102 to use
services provided by the interaction infrastructure 102. The client
devices 205 and/or 207 may be portable handheld devices (e.g., an
iPhone.RTM., cellular telephone, an iPad.RTM., computing tablet, a
personal digital assistant (PDA)) or wearable devices (e.g., Google
Glass.RTM. device), running software such as Microsoft Windows
Mobile.RTM., and/or a variety of mobile operating systems such as
iOS, Windows Phone, Android, BlackBerry 10, Palm OS, and/or the
like, and being Internet, e-mail, short message service (SMS),
Blackberry.RTM., and/or other communication protocol enabled. In
some embodiments, one or more of the client devices 205 and/or 207
can be general purpose personal computers including, by way of
example, personal computers and/or laptop computers running various
versions of Microsoft Windows.RTM., Apple Macintosh.RTM., and/or
Linux operating systems. In some embodiments, one or more of the
client devices 205 and/or 207 can be workstation computers running
any of a variety of commercially-available UNIX.RTM. or UNIX-like
operating systems, including without limitation the variety of
GNU/Linux operating systems, such as for example, Google Chrome OS.
Alternatively, or in addition, one or more of the client devices
205 and/or 207 may be any other electronic device, such as a
thin-client computer, an Internet-enabled gaming system (e.g., a
Microsoft Xbox gaming console with or without a Kinect.RTM. gesture
input device), and/or a personal messaging device, capable of
communicating over network(s) 108.
[0122] FIG. 3 is a block diagram of one non-limiting example of a
client device 205 and/or 207 that corresponds to a mobile
communication device 300, in accordance with certain embodiments of
the present disclosure. The mobile communication device 300 may be
a portable device suitable for sending and receiving information
over a network in accordance with embodiments described herein. For
example without limitation, in various embodiments, the mobile
communication device 300 may include one or more variously
referenced as a mobile phone, a cellular telephone, a smartphone
(for example without limitation, a smart phone such as: the
iPhone.RTM. phone available from Apple Inc. of Cupertino, Calif.;
Android.TM. operating system-based phones, available from as Google
of Mountain View, Calif.; and/or the like), a handheld mobile
device, a tablet computer, a web pad, a personal digital assistant
(PDA), a notebook computer, a handheld computer, a laptop computer,
a vehicle computer, and/or the like.
[0123] In some embodiments, the mobile communication device 300 may
be provided with a mobile application 351, which may correspond to
a client application configured to run on the mobile communication
device 300 to facilitate various embodiments of this disclosure.
For example without limitation, the mobile application 351 may
transform the mobile communication device 300 into a communication
tracking facilitator. The mobile application 351 and the mobile
communication device 300 may cooperate with the interaction
infrastructure 102 to facilitate tracking and/or handling of
communications (e.g., calls, messages, chats, video conferencing,
and/or the like) in response to content objects presented through
the mobile communication device 300. The mobile application 351 can
be a computer program that can be installed and run on the mobile
communication device 300.
[0124] In various embodiments, mobile communication device 300
configured with the mobile application 351 may provide one or more
display screens that may each include one or more user interface
elements. A user interface may include any text, image, and/or
device that can be displayed on a display screen for providing
information to a user and/or for receiving user input. A user
interface may include one or more widgets, text, text boxes, text
fields, tables, grids, charts, hyperlinks, buttons, lists, combo
boxes, checkboxes, radio buttons, and/or the like. As shown in FIG.
3, the mobile communication device 300 includes a display 320 and
input elements 332 to allow a user to input information into the
mobile communication device 300. By way of example without
limitation, the input elements 332 may include one or more of a
keypad, a trackball, a touchscreen, a touchpad, a pointing device,
a microphone, a voice recognition device, or any other appropriate
mechanism for the user to provide input. Further, the mobile
communication device 300 the input elements 332 may include a
communication component reader 350 for accepting a communication
component such as a SIM card 376.
[0125] In some embodiments, the interaction infrastructure 102 may
provide content objects of any suitable type to a user of the
mobile communication device 300 through the mobile application 351.
The mobile application 351 can include a utility that communicates
with the interaction infrastructure 102 to control downloading,
displaying, caching, and/or other operations concerning the
handling of content objects. The mobile application 351 and the
mobile communication device 300 may cooperate with the interaction
infrastructure 102 to facilitate communication tracking in response
to content objects displayed through the one or more additional
applications.
[0126] In some embodiments, the client device 305 and/or 307 may
include one or more additional applications, for example, that may
be provided by one or more publishers and/or may provide
functionality relating to one or more publishers. A publisher may
be any entity, including, for example, a news content provider, a
social networking company, any entity, a gaming company, a music
vendor, a multimedia content provider, and/or the like. Content
objects (e.g., media objects, multimedia objects, electronic
content objects, and/or the like) of any of various types may be
displayed through the one or more additional applications. The
mobile application 351 and the mobile communication device 300 may
cooperate with the interaction infrastructure 102 to facilitate
communication tracking in response to content objects displayed
through the one or more additional applications. In some
embodiments, the mobile application 351 could include a toolkit
with client-side utility for interfacing with the one or more
additional applications to facilitate tracking and/or call handling
responsive to presented content. In some embodiments, the one or
more additional applications could include the toolkit. In some
embodiments, the mobile application 351 could be grafted into the
one or more additional applications to provide tracking and/or
communication handling functionalities. In some embodiments, the
mobile application 351 could use a number of API translation
profiles configured to allow interface with the one or more
additional applications.
[0127] The user selection of a user-selectable option corresponding
to a content object may involve any one or combination of various
user inputs. The user selection may be in the form of a
keyboard/keypad input, a touch pad input, a track ball input, a
mouse input, a voice command, etc. For example, the content object
may be selected by the user by pointing and clicking on the content
object. As another example, the content object may be selected by
an appropriate tap or movement applied to a touch screen or pad of
the mobile communication device 300. The selection of a content
object may initiate a voice call, video call, message, chat, and/or
other communication. In some embodiments, a telephone number may be
presented in content information in a format such that, when the
user selects a communication reference, the client device (e.g., a
cellular phone or a computer) dials a telephone number
corresponding to the communication reference. For example, the call
could have been initiated by end user selecting a click-to-call
option displayed via the user device. In some embodiments, user
devices can automatically dial the telephone number. For example, a
Dual Tone Multi-Frequency (DTMF) generator can dial a phone number.
In some embodiments, the user device may initiate the phone call
through a VoIP system.
[0128] In some embodiments, the mobile application 351 can run
continuously (e.g., in the background) or at other times, such as
when the mobile application 151 is launched by an end user. In
certain embodiments, the mobile application 351 can automatically
run each time that a user accesses the one or more additional
applications or selects a content object. The mobile application
351 may be provided in any suitable way. For non-limiting example,
the mobile application 351 may be made available from the
interaction infrastructure 102, a website, an application store,
etc. for download to the mobile communication device 300;
alternatively, it may be pre-installed on the mobile communication
device 300. In some embodiments, the mobile application 351 can be
pre-installed on the device platform by a mobile communication
device manufacturer or carrier. In some embodiments, a mobile
application 351 can be downloaded and installed by an end-user on
their client device 305 and/or 307.
[0129] The mobile communication device 300 includes a memory 334
communicatively coupled to a processor 336 (e.g., a microprocessor)
for processing the functions of the mobile communication device
300. The mobile communication device 300 may include at least one
antenna 338 for wireless data transfer to communicate through a
cellular network, a wireless provider network, and/or a mobile
operator network, such as GSM, for example without limitation, to
send and receive Short Message Service (SMS) messages or
Unstructured Supplementary Service Data (USSD) messages. The mobile
communication device 300 may also include a microphone 340 to allow
a user to transmit voice communication through the mobile
communication device 300, and a speaker 342 to allow the user to
hear voice communication. The antenna 338 may include a cellular
antenna (e.g., for sending and receiving cellular voice and data
communication, such as through a network such as a 3G or 3G
network). In addition, the mobile communication device 300 may
include one or more interfaces in addition to the antenna 338,
e.g., a wireless interface coupled to an antenna. The
communications interfaces 344 can provide a near field
communication interface (e.g., contactless interface, Bluetooth,
optical interface, etc.) and/or wireless communications interfaces
capable of communicating through a cellular network, such as GSM,
or through Wi-Fi, such as with a wireless local area network
(WLAN). Accordingly, the mobile communication device 300 may be
capable of transmitting and receiving information wirelessly
through both short range, radio frequency (RF) and cellular and
Wi-Fi connections.
[0130] Additionally, the mobile communication device 300 can be
capable of communicating with a Global Positioning System (GPS) in
order to determine to location of the mobile communication device
300. The antenna 338 may include GPS receiver functionality. In
other embodiments contemplated herein, communication with the
mobile communication device 300 may be conducted with a single
antenna configured for multiple purposes (e.g., cellular,
transactions, GPS, etc.), or with further interfaces (e.g., three,
four, or more separate interfaces).
[0131] The mobile communication device 300 can also include at
least one computer-readable medium 346 coupled to the processor
336, which stores application programs and other computer code
instructions for operating the device, such as an operating system
(OS) 348. In some embodiments, the mobile application 351 may be
stored in the memory 334 and/or computer-readable media 346. In
some embodiments, the mobile application 351 may be stored on the
SIM card 376. In some embodiments, mobile communication device 300
may have cryptographic capabilities to send encrypted
communications and/or messages protected with message hash codes or
authentication codes. Again, the example of mobile communication
device 300 is non-limiting. Other devices, such as those addressed
herein, may interact with the interaction infrastructure 102.
[0132] FIG. 2B shows a diagram of a portion 200-2 of the
architecture stack 200 of the interaction infrastructure 102, in
accordance with certain embodiments of the present disclosure. The
portion 200-2 at least partially includes the interface layer 215,
the access management layer 220, and the application services
management layer 240. In some embodiments, the application services
system 241 may correspond at least partially to the interface layer
215, the access management layer 220, and the application services
management layer 240. While engines, repositories, and other
components are described separately in this disclosure, it should
be appreciated that the components may be combined and/or
implemented differently in any combination to provide certain
features in various embodiments. In various embodiments, different
processes running on one or more shared resources may implement
some of the components.
[0133] The interaction processing infrastructure 102 may include
one or more network interfaces 211 communicatively coupled to one
or more servers, which may include communication servers, web
servers, gateways, application servers, database servers, and/or
one or more other types of servers. The network interface(s) 211
may include any suitable input/output module or other system/device
operable to serve as an interface between one or more components of
the interaction infrastructure 102 and the network 108. The
interaction infrastructure 102 may use the network interfaces 211
to communicate over the network 108 using any suitable transmission
protocol and/or standard.
[0134] The interface layer 215 may include one or more interface
engines 212. The interface engine 212 may be configured to generate
one or more interfaces 205, 207, 111, 114 (e.g., web interfaces
213, mobile app interfaces 214, graphical user interfaces 216,
enterprise application interfaces 217, programmatic interfaces 218,
and/or the like) to enable data to flow to client devices 205, 207
via respective applications 206, 208. In various embodiments, the
interfaces of interface engine 212 may be embodied in hardware
and/or software. The interface engine 212 may include logic to
send, present, and receive information, with one or more of the
interfaces to/from one or more end users, service providers, and/or
data sources. The interface engine 212 may utilize one or more
network interfaces to transceive information through the network
108. The interaction infrastructure 102 may pull and/or push
information from those entities.
[0135] Generally, interfaces may be configured to receive user
input, present dynamic presentations that depend on user input, and
otherwise respond to user input. In some examples, such input may
be provided via one or more input devices (e.g., a keyboard,
touchscreen, joystick, mouse, microphone, devices capable of
capturing inputs, and the like) operated by one or more users of
user devices. Output may be provided via one or more output devices
(e.g., a display or speaker). The web interfaces 213 and mobile
interfaces 214 may include any suitable web interface and mobile
interface configured to interact with elements of the interaction
infrastructure 102. The graphical user interfaces 216 may include
any suitable graphical user interface configured to interact with
elements of the interaction infrastructure 102. The enterprise
interface 217 may include internal interfaces for accessing element
of the interaction infrastructure 102 via an internal network of an
enterprise. The programmatic interfaces 218 may include one or a
combination of an API, a programmatic user interface, and/or other
similar interfaces for defining core functions for accessing
elements of the interaction infrastructure 102. A programmatic
interface 218, for example, may specify software components in
terms of associated operations.
[0136] Elements of the interface layer 215, for example, the
interface engine 212, may communicate with calls and inputs
directed to and/or received from the access management layer 220.
In some embodiments, the access management layer 220 may include
one or more identity management engines 219. Generally, the
identity management engine 219 can be configured to provide
identity services, such as access management and authorization
services for end users and/or providers serviced by the interaction
infrastructure 102. In some embodiments, the identity management
engine 219 may control information about end users and providers
that utilize the services provided by the interaction
infrastructure 102. The control information may include information
that authenticates the identities of end users and/or providers and
that specifies authorized actions with respect to various system
resources and services.
[0137] In some embodiments, the identity management engine 219 may
include logic for implementing account features in various
embodiments. By way of example without limitation, the identity
management engine 219 may include logic one or more aspects of:
handling user registration; managing account creation, updates,
authentication, handling; and/or the like. The identity management
engine 219 may be configured for acquiring, processing, formatting,
and/or storing authentication information in the one or more
authentication information repositories 257 (described further
below).
[0138] In some embodiments, the identity management engine 219 may
include a plurality of engines configured to manage different
aspects of interacting with elements of the interaction
infrastructure 102, such as user interactions with applications
serviced by the interaction infrastructure 102. The engines may
include, for example, an authentication access engine 221, a login
engine 222, and a billing engine 223. The different engines of the
identity management engine 219 can define routines, protocols,
standards, and/or the like for interacting with elements of the
interaction infrastructure 102. The authentication access engine
221 may evaluate rules and conditions under which users may access
elements of the interaction infrastructure 102. These rules and
conditions may be user-defined (e.g., by an administrator or
reviewer), learned over time, and/or may be dynamically updated
and/or evaluated based on characteristics of the user or the user's
device attempting to access the interaction infrastructure 102. The
login engine 222 may evaluate the rules and conditions under which
users are able to log in to the interaction system or access
applications associated with the interaction system. Thus, while
authentication access engine 221 may evaluate the rules to
determine which users may access the interaction infrastructure
102, the login engine 222 may evaluate the particular credentials,
profiles, etc. associated with each authenticated user.
[0139] The application services management layer 240 may include
one or more service management engines 224. The service management
engines 224 may include one or more service orchestration engines
226, one or more service provisioning engines 227, and/or one or
more service monitoring engines 228. By way of example without
limitation, in some embodiments, a client device 205 or 207 running
an application 206 or 208 may interact with the interaction
infrastructure 102 by transmitting a service request 201 to the
interaction infrastructure 102 for one or more services provided by
the interaction infrastructure 102. In some embodiments, the
service request 201 may be received via an interface facilitated by
the interface engine 212. The service request 201 may be processed
by the service management engine 224 and, consequent to the
processing, information identifying one or more services and, in
some embodiments, information uniquely identifying a user. The
service orchestration engine 226 may utilize the information to
orchestrate the provisioning of services and resources responsive
to the service request 201. In some embodiments, the service
orchestration engine 226 may orchestrate the provisioning of
services and resources using the service provisioning engine 227.
In certain embodiments, the service orchestration engine 226 may
enable the management of processes associated with each service
request 201 and may apply entity logic to determine whether and how
a service 202 should be provisioned. The service orchestration
engine 226 may send a request to the service provisioning engine
227 to prompt the service provisioning engine 227 to allocate
resources and configure those resources needed for the service 202.
The service 202 may be tracked by the service monitoring engine
228. In some instances, the service monitoring engine 228 may be
configured to collect usage statistics for the services 202.
[0140] FIG. 2C shows a diagram of another portion 200-3 of the
architecture stack 200 of the interaction infrastructure 102, in
accordance with certain embodiments of the present disclosure. In
particular, the portion 200-3 at least in partially includes the
data acquisition layer 225, the aggregation and transformation
layer 260, and the transformed data layer 275. The data acquisition
layer 225 may receive data from components 229. In various
embodiments, the components 229 may correspond to any one or
combination of data sources disclosed herein and/or the like, with
aggregation being facilitated in some embodiments with any one or
combination of interfaces 205, 207, 111, 114 and/or client devices
205, 207. In some embodiments, the components 229 may include
complimentary layers to facilitate data transmission, such as a
transmission layer, generation layer, and/or a receiving layer to
communicate and/or receive data via the data acquisition layer 225.
In various embodiments, the input from the components 229 may
correspond to any one or combination of raw data, unstructured
data, structured data, information, and/or content which may
include media content, text, documents, files, instructions, code,
executable files, images, video, audio, and/or any other suitable
content suitable for embodiments of the present disclosure. For
example, data from 20, 200, or any number of different sources may
be merged together with data generated internally, data previously
received, data from third parties, etc. The data could relate to
end users, providers, entities, geographic locations, demographic
information, and/or the like. For example, the aggregation and
transformation layer 260 may identify which data and records are
about the same entity and may merge attributes from different
sources into one composite object that can be used by the
application services as a basis for services provided.
[0141] The aggregation and transformation layer 260 may provide a
pipeline that processes data input from the components 229, applies
rules, transforms the data, feeds the transformed data to the
transformed data layer 275 and/or the application services
management layer 240. The aggregation and transformation layer 260
may include one or more aggregation and/or transformation engines
231. In various embodiments, the aggregation and/or transformation
engine 231 may correspond to an integral engine or separate engines
working in conjunction. The aggregation/transformation engine 231
may transform, translate, or otherwise adjust data collected.
[0003] In some embodiments, two or more of the components 229 may
generate data according to different formats. The data can then be
transformed, translated, or otherwise adjusted by the engine 231.
For example, acquired data may be converted from a first format to
a second format using one or more conversion rules, which may be
user-defined, heuristic, and/or machine-learned. In some
embodiments, the transformation engine 231 may perform similar
operations with respect to other data generated by elements of the
interaction infrastructure 102.
[0142] In some embodiments, the aggregation and/or transformation
engines 231 may include one or more transformational adaptors 232.
In some embodiments, one or more transformational adaptors 232 may
be associated with the components 229 to effect the
transformations. The transformational adaptors 232 may be
implemented, in various embodiments, in hardware and/or software.
In some embodiments, a transformational adaptor 232 may include a
hardware device and/or software component that transforms,
translates, converts, or otherwise adjusts the acquired data. In
various embodiments, the adjustment operations may be executed
within the data acquisition layer 225 and/or the transformation
layer 260.
[0143] A consolidation engine 233 may process manifold data sets
that may, for instance, come from different sources or the same
source, for example, by way of one or more updates to data
previously provided by a particular source, and the consolidation
engine 233 may consolidate the data sets to form a composite data
set. The consolidation may include organizing, categorizing,
qualifying, and/or comparing the sets of information; detecting,
identifying, and/or handling errors/discrepancies; and/or otherwise
processing the data sets. In some embodiments, the consolidation
engine 233 may identify subset of entities that are more important
than the rest, may process data to identify relations to at least
one entity of the subset of entities, and may process data having
such relation first. In some embodiments, the consolidation engine
233 may only consolidate the data having such relation and may
disregard and/or dispose of data that does not possess such
relation.
[0144] With certain embodiments, a data integrity engine 234 with
one or more processors may check data sets to ensure quality of the
data. The data integrity engine 234 may assess each piece of
information relating to an aspect (e.g., data relating to a listing
of information for a entity, such name, location, reviews, ratings,
etc.) and may assign a weight to the information according to a
score. Any suitable scoring system may be used. Missing
information, for example, could have a lower score than non-missing
information; and the missing information could be scored even
lower, the more important the information is to the aspect.
Information may be weighted according to the source. For example,
in some instances, information relating to a company that is
gathered from the company's website may be weighted higher or lower
relative to information gathered from a third party's website;
tracking data gathered from an end-user device, for example, may be
considered more reliable than corresponding/conflicting information
from a third party directory service. Scoring profiles (e.g.,
compiled for end users, providers, entities, etc.) based the
information based upon the underlying reliability of information
may avoid provisioning of misdirected, redundant, unwanted, and/or
unnecessary services.
[0145] In certain embodiments, the data integrity engine 234 may
examine items of information and assign scores according to how
important such information is to services, generally. The data
integrity engine 234 may take into account service categories. Data
pertinent to service categories may be prepared as a basis for
provisioning services corresponding to particular categories. In
certain embodiments, the data integrity engine 234 may adjust
scoring of information in view of a specific services and/or
specific categories of services. In certain embodiments, the data
integrity engine 234 may examine items of information in view of a
specific services and/or specific categories of services upfront,
thereby rendering subsequent readjustment unnecessary. Based on the
scoring, certain data may be discarded or flagged for possible
follow-up and/or prompting for further information and/or
clarifying information may be identified, generated, and/or
provided. Accordingly, composite content can be made more reliably
with possible follow-up and/or prompting for a data source to link
to for more missing information.
[0146] In various embodiments, a rules engine 237 may be configured
to create and manage entity rules, condition-response rules,
alert/reports rules, data-formatting rules, data-sharing rules,
transmission rules, aggregation rules, user authorization rules,
and other similar rules. Such rules may be user-defined, fixed,
heuristics, learned by elements of the interaction infrastructure
102, and any combination of the foregoing. In some embodiments, the
rules engine 237 may be included in the consolidation engine 233.
In some embodiments, the rules engine 237 may be separate from the
consolidation engine 233.
[0147] A build engine 236 may assess quality of the data and/or the
data sources. The build engine 236 may build one best data set that
relates to a particular entity. In some embodiments, the build
engine 236 may build multiple high-quality data sets that relate to
a particular entity, but are tailored for different purposes (e.g.,
different locations, publisher channels, medial channels, and/or
the like).
[0148] A feed engine 239 may be configured to process received
input 238 from the aggregation/transformation engine 231. In some
embodiments, the feed engine 239 may be integral with the
aggregation/transformation engine 231. The feed engine 239 may
generate one or more feeds 241 transferred to the transformed data
layer 275 (e.g., for storage) and/or the application services
management layer 240 (e.g., for more immediate use, by the
publication management layer 255 or another application service).
In some embodiments, the feed engine 239 may generate a single
feeder 241--a universal feed object--to feed the transformed data
layer 275 and/or the application services management layer 240. The
feed engine 239 may feed transformed data (which may include
transformed information and/or transformed content in some
embodiments).
[0149] In some embodiments, the feed engine 239 may implement a
feeding process that feeds transformed data (which may include
information and/or content in some embodiments) based on a last
finishing point of a previous feeding process. The feed engine 239,
in some embodiments, may push the transformed
data/content/information into one or more temporary indexes. In
some embodiments, the feed engine 239 may further transform the
transformed data/content/information into a feed object with a
data-interchange format that facilitates parsing. The feed engine
239 and/or the aggregation/transformation engine 231 may translate
the data into understandable data, information, and/or content. The
transformed data, information, and/or content may be directed to
certain tables and/or data stores 268 based on the type of and/or
an entity category to which the data, information, and/or content
relates. For example, in some embodiments, the master data
management system 265 may manages provider content and feeds into
search indexes and the publishing system.
[0150] The feeding process may include multiple processes, in some
embodiments. For example, the feed engine 239 may spin out two
processes: one process for communicating with a search server
system 267(a); and one process for communicating with a document
server system 267(b). The search server system 267(a) and/or the
document server system 267(b) may process the temporary index and
determine which data is absent from the data stores 268. Consequent
to determining which data is needed, the data may be fed to the
data stores 268.
[0151] In some embodiments, the data may be feed to the search
server system 267(a) and/or the document server system 267(b) on a
periodic basis (e.g., every 15 minutes or any other time period).
The search server system 267(a), in some embodiments, may only
retain in its search indexes information needed for retrieving
content objects (e.g., documents) and ranking the content objects.
Thus, with such embodiments, other information not necessary for
retrieval and ranking (e.g., images corresponding to an entity).
The document server system 267(b) may have every entity attribute
indexed for information retrieval. This bifurcation may allow for
the interaction infrastructure 102 to perform super-fast retrieval.
The search server system 267(a), in some embodiments, may perform
matching, sorting, and/or the like, and hence may be CPU heavy. The
document server system 267(b), in some embodiments, may be a disk
I/O intense system and can handle those kinds of loads.
[0152] FIG. 2D shows a diagram of another portion 200-4 of the
architecture stack 200 of the interaction infrastructure 102, in
accordance with certain embodiments of the present disclosure. The
portion 200-4 may, in some embodiments, correspond to portions of
the application services management layer 240 and the master data
management layer 265; and, in accordance with some embodiments, at
least part of the application services management layer 240 may at
least partially correspond to the search engine services layer 245.
As depicted in FIG. 7, the server system 242 may include one or
more communication servers. The server system 242 may include one
or more web and/or application servers 242(a), one or more email
gateways 242(b), one or more instant messaging gateways 242(c), one
or more telephone gateways 242(d), one or more other gateways
242(e), such as television gateways, and/or one or more other types
of servers, such as an application gateway (not shown) to interface
with different servers. Some embodiments may use one type of
communication server 242, such as a web server 242(a), to receive
search requests and another type of communication server 242 to
provide the search results. Some embodiments may use different
types of communication servers 242 to service different types of
client devices 205, 207.
[0153] The web and/or application server(s) 242(a) (referenced
hereafter as a web server 242(a)) may include one or more web
server and/or one or more application servers, such as mobile app
servers. In some embodiments, a web 242(a) may communicate with a
client device 205, 207 via HyperText Transfer Protocol (HTTP)
and/or other types of communication protocols, such as File
Transfer Protocol (FTP), Wireless Application Protocol (WAP), etc.
A web and/or application server(s) server 242(a) may provide static
web pages, dynamic web pages, and/or web services. In some
embodiments, a web server 242(a) may provide web applications to a
client device 205, 207 for execution in a web browser running on
the client device 205, 207; and the web applications may include
scripts, such as Java, JavaScript, etc., for execution within an
isolated environment in a browser. In some embodiments, the web
server 242(a) may provide rich-client applications to the client
device 205, 207; and the rich-client application may be programmed
in traditional programming languages to have full access to
functions of the operating system running on the client device 205,
207.
[0154] In some embodiments, the communication servers 242 provide a
user interface for user interaction with content objects. For
example, the web servers 242(a) may provide a user interface via
static web pages, dynamic web pages, and/or web services, etc. For
example, the web servers 242(a) may provide content objects with
links to detail information pages of the provider information 249,
such as a map, entity hours, driving directions, etc. The web
servers 242(a) may provide user interfaces for the users to rate
the content, provide reviews, view reviews from other users, etc.
The web servers 242(a) may provide user interfaces to make
reservations or to make purchases via the content objects. The web
servers 242(a) can track various different types of user
interactions with the content objects to determine or estimate the
level of user interest in the content. The web servers 242(a) may
provide rich client applications for execution in the mobile
computing device to provide the user interfaces.
[0155] The communications server(s) 242 may be communicatively
coupled to one or more information handling engines 243 that may
provide functionality when executed by one or more servers to
provide enhanced service handling features described herein. In
some embodiments, one or more of the engines 243 and/or other
modules may be servers communicating with other server(s) of the
interaction infrastructure 102. The server communication may be
over a network, such as an internal network, a local area network,
a wide area network, an intranet, Internet, and/or the like. Any
one or combination of the various servers may run on common or
separate computers. In some embodiments, there may be one or more
layers of application servers between communication servers and the
data stores 268 to process the entity logic and data access of the
rich client applications.
[0156] The information handling engines 243 may include one or more
of a location engine(s) 244, a search engine(s) 246, a geo-aware
spellchecking engine(s) 246A, a geo-aware autosuggestion engine(s)
246B, an area selector(s) 247, and/or a sort engine(s) 248 to
process the search request and present search results based on the
information stored in one or more data repositories 268. Other
engines 243 may include and/or utilize the search engine 246 in
various embodiments. In some embodiments, the search engine 246 may
include logic for implementing searching the data stores 268
according to a search request. The searching may be in response to
information received over the network 108 from a user. Responsive
to a query, the search engine 246 may search, retrieve, modify,
and/or cause transfer of particular information from one or more
information repositories.
[0157] The one or more data repositories 268 may include provider
information 249 about commercial entities or public end-user
information, or other types of searchable end-user information. The
one or more provider information repositories 249 may retain any
local provider information (e.g., listings of provider information)
suitable for embodiments of this disclosure, such as entity,
product, and service information. In certain embodiments, the local
provider information may correspond to directory information of the
kind that may be available via Yellow Pages services and the
like.
[0158] Provider information 249 of entities or people, such as
restaurants, car dealers, retailer locations, gas stations, parking
lots, plumbers, and the like, may have street addresses or other
location parameters, such as longitude and latitude coordinates,
stored as locations in one or more location information
repositories 251. The provider information 249 may include
addresses, telephone numbers, descriptive content, notifications,
and/or end-user information, etc. Provider information 249 may be
associated with locations 251. The locations 251 may be part of the
provider information 249, or associated with the provider
information 249. In some embodiments, the provider information 249
may include information related to entity entities at corresponding
locations 251. The entities may be entities or people. Some of the
entities may pay fees to promote their content. Some of the
entities may have free promotion. In some embodiments, the provider
information 249 may be accessible to the public or to registered
members.
[0159] In some embodiments, the data repository(ies) 268 may
include one or more end-user information repositories 252. In some
embodiments, a client device 205, 207 may store end-user
information 252. In some embodiments, both the client device 205,
207 and the online data repository(ies) 268 store the end-user
information 252 for a particular end user. In some embodiments,
when there is a data communication connection between the client
device 205, 207 and the online data repository(ies) 268, the client
device 205, 207 and the online data repository(ies) 268 may
synchronize their copies of the end-user information 252 for the
end user. The end-user information 252 may be associated with the
corresponding end users. In some embodiments, an end user may
create corresponding end-user information 252. The web servers
242(a) may generally limit the access to the end-user information
252 to those who created the corresponding end-user information
252.
[0160] In various embodiments, the data repository(ies) 268 may be
implemented in various ways. For example, one or more data
processing systems may store the information related to the
provider information 249, the locations 251, and the end-user
information 252. For example, one or more relational or
object-oriented databases, or flat files on one or more computers
or networked storage devices, may store the information related to
the provider information 249, the locations 251, and the end-user
information 252. In some embodiments, a centralized system stores
the information about the provider information 249, the locations
251, and the end-user information 252; alternatively, a
distributed/cloud system, network-based system, such as being
implemented with a peer-to-peer network, or Internet, may store the
information about the provider information 249, the locations 251,
and the end-user information 252.
[0161] In various embodiments, one or more of the location engine
244, the search engine 246, the geo-aware spellchecking engine
246A, the geo-aware autosuggestion engine 246B, the area selector
247, the sort engine 248, and/or other modules may be stored in the
one or more memories and may include one or more software
applications, executable with the processors, for receiving and
processing data requests. In some embodiments, one or more of the
location engine 244, the search engine 246, the geo-aware
spellchecking engine 246A, the geo-aware autosuggestion engine
246B, the area selector 247, the sort engine 248, and/or other
modules may be servers communicating with the communication
server(s) 242. The server communication may be over a network, such
as a local area network, a wide area network, an intranet,
Internet, and/or the like. Any one or combination of the various
servers may run on common or separate computers. In some
embodiments, there may be one or more layers of application servers
between the communication server 242 and the data stores 268 to
process the entity logic and data access of the rich client
applications. Alternatively, application servers may be integrated
with the communication servers 242, such as the web servers 242(a).
Certain embodiments are not limited to a particular type of
connections among the communication servers 242, the location
engine 244, the search engine 246, the geo-aware spellchecking
engine 246A, the geo-aware autosuggestion engine 246B, the area
selector 247, the sort engine 248, the data repository(ies) 268,
and/or other modules.
[0162] In some embodiments, one computer system implements one or
more of the servers 242, the location engine 244, the search engine
246, the geo-aware spellchecking engine 246A, the geo-aware
autosuggestion engine 246B, the area selector 247, and the sort
engine 248. Alternatively, different processes running on one or
more shared computers may implement some of the components 242,
244, 246, 246A, 246B, 247, and/or 248. For example, one computing
module, thread, or process may implement multiple of the
components. In some embodiments, special purpose data processing
systems implement the one or more of the components, such as using
Application-Specific Integrated Circuit (ASIC) or
Field-Programmable Gate Array (FPGA). In some embodiments,
processes running according to software instructions on general
purpose data processing systems, such as general purpose personal
computers or server computers, can implement the components. Thus,
the implementations are not limited to hardware, software, or
particular combinations of hardware and software.
[0163] One or more of the location engine 244, the search engine
246, the spellchecking engine 246A, the geo-aware spellchecking
engine 246A, the geo-aware autosuggestion engine 246B, the sort
engine 248, and/or other modules may be configured to perform any
of the steps of methods according to the present disclosure. In
some embodiments, the location engine(s) 244 may include one or
more engines and may use GPS coordinates, cellular tower
triangulation techniques, Wi-Fi-based location information,
carrier-provided location information, and/or other location
determination systems to identify a location of the client device
205, 207. In some embodiments, the location engine 244 determines a
location of interest to the end user related to a search request.
In some embodiments, the location engine 244 determines a location
of interest to the end user related to a phone call initiated with
the client device 205, 207. The location of interest may be based
on a location of the client device 205, 207. In some embodiments,
the end user may explicitly specify the location of interest in a
search request; and the location engine 244 extracts the location
of interest from the search request. In some embodiments, a
location of interest may be based on end-user information 252
stored for a particular end user and associated with identification
information of the end user or the client device 205, 207. In some
embodiments, the end user may specify some or all of the end-user
information 252.
[0164] In some embodiments, the location engine 244 may
automatically identify the location of interest based on
determining the current location of the client device 205, 207 that
is used to submit a search request and/or initiate a phone call.
For example, the location engine 244 may determine the location of
the client device 205, 207 based on a connection point the client
device 205, 207 used to access the network 108 (e.g., based on the
location of a wireless network access point, a base station of a
cellular communication system, or a connection point to a wired
network). In some embodiments, the client device 205, 207
automatically determines its current position (e.g., via a
satellite positioning system, or a cellular positioning system) and
transmits the determined or estimated position to the web server
242(a) with the search request, or provides the position in
response to a request from the location engine 244.
[0165] In some embodiments, the search engine 246 may retrieve
content from the data stores 268 according to a search request. In
some embodiments, the search engine 246 may include or otherwise be
configured to use the geo-aware spellchecking engine 246A, and/or
the geo-aware autosuggestion engine 246B. In some embodiments, the
geo-aware spellchecking engine(s) 246A may be used with the string
corresponding to the search request to identify corrections for
misspellings in search strings and/or to otherwise account for
spelling variations in order to provide results with a greater
degree of relevance. In some embodiments, the geo-aware
spellchecking engine(s) 246A may be used with the string
corresponding to the search request to identify corrections for
misspellings in search strings and/or to otherwise account for
spelling variations in order to provide results with a greater
degree of relevance. In some embodiments, the geo-aware
autosuggestion engine 246B may be used with the geo-aware
spellchecking engine(s) 246A, may include the geo-aware
spellchecking engine(s) 246A, and/or may be otherwise configured to
account for geo-aware spelling variations and to provide such
geo-aware features in conjunction with the geo-aware suggestion
features described herein.
[0166] In some embodiments, the sort engine 248 may rank content
objects pertaining to providers in the search results according to
the distance between the location of interest and the locations 251
corresponding to the provider, or according to current levels of
user interest in the retrieved content. The web servers 242(a) may
track various different types of user interactions with the content
objects to determine or estimate the level of user interest in the
content objects. The sort engine 248 may rank the content objects
according to other criteria, in accordance with other embodiments
described herein. In various embodiments, the search engine 246 may
be configured to search for and/or correlate user data, provider
data, location data, and/or other data, in accordance with various
embodiments described herein. In some embodiments, the sort engine
248 may be used to provide sorting features in conjunction with the
geo-aware suggestion features described herein.
[0167] In various embodiments, the area selector 247 may be
configured to select areas of interest, in accordance with various
embodiments described herein. In some embodiments, the area
selector 247 may select a first geographic area based on the
location of interest identified by the location engine 244. The
search engine 246 may then retrieve a first set of content objects
(which could include service provider information in some
embodiments) that have corresponding location(s) within the
selected first geographic area and that satisfies the search
criteria. In some embodiments, if sufficient results are not found
for the first geographic area, a second geographic area may be
selected in an iterative process, which second area may or may not
include the first geographic area, for searching. The first
geographic area could correspond to a service area in some
embodiments. In some embodiments, the search engine 246 may search
for providers in a target area to obtain a set of search results;
the area selector 247 may select geographic areas and selects
groups of results that are within the selected geographic areas
respectively. In some embodiments, the geo-aware autosuggestion
engine 246B may be used with the area selector 247, may include the
area selector 247, and/or may be otherwise configured to provide
for such area selection features in conjunction with the geo-aware
suggestion features described herein.
[0168] In some embodiments, the client device 205, 207 includes a
web browser which allows the end user to submit a search request to
one of the web servers 242(a) for location dependent information,
such as a listing 252 of entities or people, such as restaurants,
car dealers, retailer locations, gas stations, parking lots,
plumbers, and/or the like. Alternatively or additionally in some
embodiments, the client device 205, 207 includes a mobile
application which allows the end user to submit a search request to
one of the web servers 242(a) for location dependent information.
Alternatively, the client device 205, 207 may provide the search
request via other communication channels, such as email, short
message service (SMS), instant messaging (IM), telephone
connection, etc. For example, the client device 205, 207 may
provide the search request to an email gateway 242(b) via email, or
to an IM gateway 242(c) via instant messaging, or to a telephone
gateway 242(c) via a telephone call, or to a television gateway
242(e) via an interactive television system. Some embodiments may
use other types of gateways, such as gateways for SMS. Thus, the
disclosure is not limited to the examples or combinations
illustrated.
[0169] Certain embodiments may provide for associating listing
information 249, location information 251, and prefixes 249' for
the listings of provider information. One or more indexes 253 for
the associated provider information 249, location information 251,
and prefixes 249' may be built, updated, and maintained in some
embodiments. In some embodiments, one or more inverted indexes 253
may be implemented. The one or more inverted indexes 253 may store
mapping for the associated provider information 249, location
information 251, and prefixes 249'. The one or more inverted
indexes 253 may allow for faster information retrieval with search
engine(s) 246 according certain embodiments.
[0170] In some embodiments, particular words may be stored in
indexes 253. In some embodiments, each word may be linked to one or
more documents, collections, files, fields, database
structure/elements, or other forms of listing information that
contain those words. In some embodiments, one or more inverted
lists for each n-gram corresponding to the words may be created and
may be associated with the words. For example, consider the string
of "Max Bar & Grill," which can be decomposed into 2-gram sets
such as {`ma`, `ax`, `x#`, `#b`, . . . } where # stands for a
space; into 3-gram sets such as {`max`, `ax#`, `x#b`, . . . };
and/or into other n-grams sets. In some embodiments, the
decomposition may include word-level decomposition. Using the same
example string of "Max Bar & Grill," various n-gram sets could
include {`max`, `bar`, `grill`, `max bar`, `bar &`, `&
gril`, `max grill`, `bar & grill`, . . . }, for example.
[0171] An inverted list for a given n-gram may include any and/or
all instances of strings from a plurality of strings that contain
the n-gram. In some embodiments, a list may include identifiers of
strings, in lieu of actual strings, for mapping to actual strings.
This may improve efficiency. The string identifiers could be unique
identifiers.
[0172] In some embodiments, the indexes 253 may allow for
approximate string matching at least partially based on
decomposition of strings, such as into n-grams or words, and
building inverted lists based on the decompositions. In some
embodiments, inverted lists may be based on tokens or other
identifiers associated with the n-grams or words. In some
embodiments, similarity of strings may be measured in terms of
similarity of the respective n-grams, words, and/or identifiers. In
some embodiments, the indexes 253 may include a multiplicity of
possible variations for various strings. For example, the example
string of "Max Bar & Grill" can have multiple corresponding
strings at the word level, such as "mac's bar & grill," "mack's
bar & grill," "mac's bar 'n grill," "max bar 'n grill," "macs
bar & grill," "maxbar grill," "maxbargrill," etc. Thus,
misspellings and spelling variations may be anticipated. Stemming
may be used to allow for variations such as "sport bar" instead of
"sports bar." Including misspellings and spelling variations may
allow for the capture of the relevant information. The same example
string of "Max Bar & Grill" can have multiple corresponding
strings at the character level for various n-gram sets in some
embodiments. Accordingly, the indexes 253 may allow for prefix
matching that is not too strict and, more generally, the indexes
253 may allow for fuzzy search engine capabilities.
[0173] Various embodiments may employ various similarity measures
that may be tailored to facilitate linking to the indexes and/or
retrieval of documents and/or listing information retained in any
other suitable form, collection, file, field, database
structure/element, etc. For example, TF/IDF (term frequency/inverse
document frequency) may be used to assess the significance of a
particular word/n-gram with respect to a particular document and/or
with respect to particular strings. The IDF for each n-gram in one
or more strings, such as strings within a database, dataset, or
table within a database, may be determined. The IDF of a token or
string is the inverse of the total number of times that this token
or string appears in a data collection, such as a database. In some
embodiments, an IDF may indicate a weight for weighted similarity
measures.
[0174] In some embodiments, the search engine may employ similarity
measures between multiple strings to allow for fuzzy searching. The
search engine may process one or more characters corresponding to
user input of a search string and parse the search string into sets
of n-grams compared the search string with index information. For
example, the characters of an incomplete user-entered search string
could be "macs b". The characters could be processed and decomposed
into n-grams similar to the examples given above. The sets of
characters could be compared to index entries to assess similarity
using any suitable algorithm. Some embodiments may identify
intersections between multiple sets and assigned a similarity score
based on the extent of n-gram intersections between the search
string and index entries, with a greater extent of an intersection
of common characters indicating a greater degree of potential
similarity between corresponding sets. For example, the search
string "macs b" may be identified as a having a high extent of
intersection with one or more index entries for "Max Bar &
Grill," which may include the variant "macs bar & grill."
[0175] In some embodiments, the string length may be taken into
account as a qualification for similar measures in order to allow
for anticipatory/predictive auto-suggestion features discussed
herein. In other words, the shorter length of the incomplete search
string "macs b" with respect to the longer length of the index
entries for "Max Bar & Grill" may be accounted for when
assessing similarity. The disparity of lengths may not prevent
identification of similarity. Hence, the high extent of
intersection with n-grams of similar length and ordering associated
with the n-grams of the first portion(s) of "Max Bar & Grill"
may be identified even though the incomplete search string "macs b"
may not have a high extent of intersection with subsequent
portion(s) of "Max Bar & Grill." However, comparable string
lengths may also be considered in assigning greater similarity
scores. For example, the incomplete search string "macs b" may have
high similarity with index entries for "Max Bar & Grill," but
also with index entries for "Mac's Bar." In such instances, the
aspect of comparable lengths of the search string and "Mac's Bar"
may be recognized as indicating even greater similarity and thus
the similarity score between the two may be higher than the
similarity score between the search string and "Max Bar &
Grill."
[0176] In some embodiments, a similar order of the intersecting
sets may be taken as an additional indication of similarity. For
example, a user-entered search string with "grill macs" may have a
certain extent of character intersection with index entries
corresponding to one entity, "Max Bar & Grill," and may have a
certain extent of characters section with index entries
corresponding to another entity, "Grill Max," however the orders of
the intersecting sets may be recognized as being different with
respect to these example cases. The ordering of n-grams of the
search string "grill macs" has a greater correspondence to the
ordering of n-grams of "Grill Max" than it does with respect to
"Max Bar & Grill." Accordingly, the search string "grill macs"
may be accorded a greater similarity score with respect to "Grill
Max" and a lesser similarity score with respect to "Max Bar &
Grill."
[0177] The above examples consider a entity name, however various
embodiments may employ the same methods with respect to other types
of listing information. For example, category and/or keyword
strings can be decomposed in similar manner. Furthermore, entity
names may be associated with various categories and/or keywords.
For example, in some embodiments, sets corresponding to a given
entity may include associated categories and/or keywords. Shingles
of words associated with listings, service areas, and popular
queries may be stored. In some embodiments, sets corresponding to a
given entity may be linked to other sets of categories and/or
keywords, for example, via pointers and/or other look-up tables. It
should be understood that any suitable relational database approach
may be used to associate the various sets and/or members
thereof.
[0178] As addressed above, certain embodiments may provide a
spellchecker service that is geo-sensitive. For example, for a
search in the area of Monrovia, Calif., the geo-aware spellchecker
246A may recognize that an entry of "Plummer" should not be
corrected to "Plumber." To facilitate the geo-sensitive
spellchecking, words corresponding to listings, and variations of
the words, may be stored and linked to corresponding location
information. The linking may be provided by way of the one or more
indexes 253, with the word variations and locations being stored in
inverted index(es) in some embodiments. Accordingly, with the word
variations, the indexes 253 may store corrections for misspelled
search strings in order to account for spelling variations.
However, not all corrections make sense for a particular area, as
in the example given above. To address that reality, the indexes
253 may be configured such that the linked location information
allows for spellchecking tailored to a location of interest. The
geo-aware spellchecker 246A may determine whether one or more
corrections or an original query makes more sense in a particular
area. Based on that determination, corrections which do not make
sense in that area may be filtered out. Accordingly, the accuracy
of spelling corrections may be improved, and false positives may be
minimized.
[0179] The geo-aware spellchecker 246A may receive the search
string and may identify one or more potential corrections for the
search string. The geo-aware spellchecker 246A may look up the
search string and the one or more potential corrections in the
index(es) 253, comparing the search string and the one or more
potential corrections to listing information for the identified
location. If the search string is identified as a possibility for
the particular location, then that may be an indication that the
search string should not be corrected. If, however, the search
string is not identified as a possibility for the particular
location, then that may be an indication that the search string
should be corrected. In some embodiments, a decision tree may be
employed to check the search string first, then the most likely
applicable potential correction, then the next most likely
applicable potential correction, and so on until a positive
indication is found in the index(es) 253. In some embodiments, the
geo-aware spellchecker 246A may identify one or more potential
corrections for the search string first in a geo-oblivious manner,
and then analyze the potential corrections for applicability to an
identified location. In some embodiments, the geo-aware
spellchecker 246A may only identify a limited set of one or more
potential corrections for the search string that are applicable to
an identified location.
[0180] Certain embodiments may provide a clustering-based approach
to facilitate the geo-sensitive spellchecking Words corresponding
to listings, and variations of the words, may be stored and linked
to corresponding location information, where the location
information may include location identifiers, such as latitude and
longitude coordinates, for the listings. For example, entity names
may be stored with coordinates for the entities. Then, clusters may
be formed based on the location information. For example, when
displayed on a map, entities with a given entity name (such as a
chain of restaurants) may have multiple locations. Using any
suitable clustering algorithm, one or more boundaries may be drawn
or otherwise defined to surround one or more clusters of the
entities.
[0181] The corresponding clusters of data may be used for
verification of a search string and one or more potential
corrections for the search string. The geo-aware spellchecker 246A
may receive the search string and may identify one or more
potential corrections for the search string. The geo-aware
spellchecker 246A may look up the search string and the one or more
potential corrections in the clustered data, comparing the search
string and the one or more potential corrections to listing
information in the cluster that corresponds to the identified
location. Stated otherwise, the geo-aware spellchecker 246A may
check if a word and/or n-gram is found in the cluster. If the
search string is identified as a possibility for the particular
location, then that may be an indication that the search string
should not be corrected. If, however, the search string is not
identified as a possibility for the particular location, then that
may be an indication that the search string should be corrected. In
some embodiments, a decision tree may be employed with the cluster,
as discussed above.
[0182] As addressed above, certain embodiments may provide an
autosuggestion service that is geo-sensitive. The autosuggestion
service may provide type-ahead suggestions that are geographically
relevant. As a user types a search query, the user may be presented
with the type-ahead suggestions that are relevant to user's current
geography and/or another geography of interest. Though reference is
made herein to type-ahead suggestions and in some embodiments one
or more suggestions could appear in the query field as a type-ahead
suggestion, the term type-ahead suggestion could include other
manners of presentation, such as over at least a portion of the
query field, or beside the query field so that a user may accept a
suggestion via selection of a space key, selection of an enter key,
or any other suitable manner of selection. In some embodiments, the
search engine 246 may configured with the geo-aware autosuggester
246B to effect a geo-aware autosuggest search engine. In some
embodiments, the search engine 246 may include the geo-aware
autosuggester 246B. In some embodiments, the search engine 246 may
not include, but may be configured to work in conjunction with, the
geo-aware autosuggester 246B. In various embodiments, the geo-aware
autosuggester 246B may be integral with or independent of the
search engine 246. In various embodiments, a geo-aware
autosuggester 246B could be implemented separately or without the
spellchecking module 246A. In some embodiments, the geo-aware
spellchecking module 246A could be configured as a geo-aware
autosuggester 246B such that autosuggestion features are an
extension of spellchecking features.
[0183] The geo-aware autosuggester 246B could receive a series of
search string characters and perform a lookup with the reception of
each character or set of multiple characters. The lookup could be
performed with one or more indexes 253. In some embodiments, one or
more filters 254 could be used in conjunction with the one or more
indexes 253. To facilitate the geo-aware autosuggestion, words
corresponding to suggestions/listings, and variations of the words
in some embodiments, may be stored and linked to corresponding
location information. For example, suggestions/listings
corresponding sets of words and/or n-grams may be linked to
location information in the indexes 253.
[0184] The autosuggestion service may provide suggestions that are
relevant to a geographical area(s) of interest. The suggestions may
correspond to listings that in close proximity to an area of
interest, as providing suggestions that are too far away from the
area of interest may negatively impact the user experience. In
providing suggestions, the autosuggestion service may allow for a
quick response time so that suggestions are provided between key
presses of a user. By way of example, the autosuggestion service
may provide suggestions on the order of milliseconds or tens of
millisecond in response to each character input. Given such
constraints, it may be advantageous to divide geographical areas
into multiple smaller areas. A code may be assigned to each small
area, and that area code may be assigned to the suggestions
relevant to that area.
[0185] Accordingly, the location information may include location
identifiers. Linked information may be distinguished, segregated,
and/or categorized based on location in any suitable manner, with
any suitable location identifiers being used to link information to
corresponding areas. In various embodiments, the location could
have any suitable level of specificity, e.g., including a county, a
municipality, zip code, school district, entity directory service
area, and/or the like. For example, a zip code, a collection of zip
codes, one or more listing service directory codes (which may
correspond to particular telephone directory service areas, which
service areas could be defined by zip code(s)), and/or the like may
be used as a basis for linking information to a location.
[0186] FIG. 2E shows a diagram of another portion 200-5 of the
architecture stack 200 of the interaction infrastructure 102, in
accordance with certain embodiments of the present disclosure. The
portion 200-5 may, in some embodiments, correspond to portions of
the application services management layer 240 and the master data
management layer 265; and, in accordance with some embodiments, at
least part of the application services management layer 240 may at
least partially correspond to the customized orchestration layer
250.
[0187] The customized orchestration layer 250 may include one or
more of the information handling engines 243. The engines 243 may
include one or more information orchestration engine(s) 256. In
some embodiments, the information orchestration engine(s) 256 may
include logic for implementing any features of personalized
orchestration of entity information and/or user-specific services
in various embodiments disclosed herein. In some embodiments, the
information orchestration engine(s) 256 may facilitate an
application on the end-user device to provide any such features. In
some embodiments, the information orchestration engine(s) 256 may
be incorporated in the application.
[0188] In certain embodiments, the information orchestration
engine(s) 256 may be configured to compile keyword criteria, for
example, in an ontology, and could include an ontology reasoner or
semantic reasoning module to make logical inferences from a set of
facts in the ontology. Accordingly, the information orchestration
engine(s) 256 may correspond to a reasoning engine configured to
effect one or more features described herein. A pattern-based
reasoner could be employed to use various statistical techniques in
analyzing interest data in order to make inferences based on the
analysis. A transitive reasoner could be employed to infer
relationships from a set of relationships related to interest data.
In certain embodiments, the information orchestration engine(s) 256
may include logic for implementing workflow features in various
embodiments.
[0189] In some embodiments, the information orchestration engine(s)
256 may include logic to implement and/or otherwise facilitate any
taxonomy, classification, categorization, correlation, mapping,
qualification, scoring, organization, and/or the like features
discussed herein. In some embodiments, the information
orchestration engine(s) 256 may include a matching engine 256(a)
configured to facilitate one or more such features. For example,
the matching engine 256(a) may be or include a classification
engine configured to classify each of a plurality of entities into
at least one category of a set of categories that represent
classifications of entities based at least in part on one or more
sets of attributes defined for classifying various entities. For
example, information with respect to a particular entity may be
analyzed in order to identify one or more entity attributes. The
matching engine 256(a) can receive entity information, identify
attributes of the entity based at least in part on the entity
information, and match the entity to one or more categories based
on category information retained in a repository. The entity may be
matched to one or more categories that each represent
classifications of entity sharing common attributes. In some
embodiments, one or more taxonomies that map particular profile
information to particular categories may be used in correlating
entity profile information with one or more categories. The entity
could be classified according to products and/or services that the
entity provides. The entity could be classified according to
location, for example, a market that the entity serves and/or a
physical site of the entity. The entity could be linked to location
identifier(s) (such as a directory code(s) relevant to the entity
listing of the suggestion); geo coordinates corresponding to the
entity (e.g., latitude and longitude); and/or the like.
[0190] As another example, the matching engine 256(a) may be or
include a classification engine configured to classify each of a
plurality of end users into at least one category of a set of
categories that represent classifications of end users based at
least in part on one or more sets of attributes defined for
classifying various end users. As a further example, the matching
engine 256(a) may be configured to process first information
enabling unique identification of a particular end user, process
second information about a first location corresponding to the end
user, and match the end user to a first category from the set of
categories.
[0191] In some embodiments, the matching engine 256(a) may be
configured to match the user to one or more entities based at least
in part on correlating categories. The matching could, in some
embodiments, be based at least partially on comparing user
attributes/categories with entity attributes/categories. For
example, they may be matched according to preferences, certain
biographical information, demographic information, interests,
location information, etc.
[0192] Any suitable correlation process may be employed. A scoring
system could be correlated to the category scheme in some
embodiments, such that certain scores correspond to matches of
certain categories. Some embodiments may score a match with a
numerical expression, for example, a match score, with higher
scores being assigned to higher correlations of user
attributes/categories with entity attributes/categories. A high
correlation may be identified using any suitable qualification
scheme (e.g., a score threshold, a score ranking, etc.).
[0193] In some embodiments, the information orchestration engine(s)
256 may include one or more harvesting engines 256(b). In some
embodiments, the harvesting engine 256(b) may include logic for
implementing information logging features in various embodiments.
In some embodiments, the harvesting engine 256(b) may be configured
to gather data about an identified end user from one or more data
sources. By way of example without limitation, the harvesting
engine 256(b) could process data pulled and/or pushed from various
entities. The harvesting engine 256(b) could handle process,
extracting, formatting, and/or storing/recording data including
data for indicia of interest, preference data, taxonomy data,
mapping data, and/or the like. In some embodiments, the harvesting
engine 256(b) may work in conjunction with the service monitoring
engine 228; in some embodiments, the harvesting engine 256(b) may
correspond in whole or in part to the service monitoring engine
228. The harvested data may then be analyzed to determine one or
more attributes of the first end user.
[0194] In some embodiments, the information orchestration engine(s)
256 may include interest data analytics modules may include logic
to retrieve, process, derive, compile, aggregate, handle, store,
report, and/or present information relating to interest data. In
some embodiments, the information orchestration engine(s) 256 may
include one or more end-user data analytics engines 256(c)
configured to facilitate one or more such features. In some
embodiments, one or more data analytics engines 256(c) may include
logic to retrieve, process, derive, compile, aggregate, handle,
store, report, and/or present information relating to end-user
data. The performance analytics engine(s) 256(c) may be configured
to present any desirable information in any desirable manner. With
respect to a particular provider, the logging engine(s) 256(b) and
end-user data analytics engine(s) 256(c) may facilitate various
features of one or more provider interfaces, in accordance with
certain embodiments herein.
[0195] In some embodiments, the information orchestration engine(s)
256 may include one or more recommendation engines 256(d). The
recommendation engine 256(d) may be configured to analyze end-user
information 252 for particular end users and aggregated, classified
provider information 249 to identify a set of one or more
recommendations (e.g., of offers, entities to add to a collection,
etc.). The recommendation engine 256(d) may generate one or more
recommendations. Certain embodiments may identify recommendations
based at least partially on similarities of characteristics of a
first end user and characteristics of other users having
associations with entities (e.g., having added the entities to
their collections). Any suitable algorithm for assessing similarity
may be employed. Some embodiments may identify intersections
between multiple sets of characteristics. Having set intersections
identified, the intersections may be compared. A greater extent of
an intersection may be an indication of a greater degree of
similarity between the users. In some embodiments, the sets may be
ranked according to the extent of the intersections.
[0196] In some embodiments, the data stores 268 may include one or
more authentication information repositories 257 may retain any
authentication information suitable to facilitate security for
embodiments of this disclosure. The authentication information
repositories 257 may include database(s), database management
system(s), server(s) to facilitate management/provision/transfer of
authentication information, and/or the like. The repositories 257
may retain authentication information of one or more particular end
users, providers, and/or other data sources. The authentication
information may include information to check credentials of end
users, providers, and/or other data sources that may use one of
their corresponding interfaces to seek access, transfer
information, and/or make entity-related transactions with the
interaction infrastructure 102. The authentication information may
be used to provide security for transactions, restrict the access
granted to a certain set of information and/or features, implement
certain control and/or features for certain parties, and/or the
like.
[0197] In some embodiments, the one or more data stores 268 may
include one or more taxonomy information repositories 258 to retain
any suitable information associated with taxonomy feature in
accordance with various embodiments disclosed herein. For example,
one or more taxonomy information repositories 258 may retain
mapping information, classification information, scoring criteria,
and/or the like. Information retained in one or more taxonomy
information repositories 258 may be used to classify user interest
data/indicia, classify entities, map user interests, entities,
and/or interest categories, and/or otherwise correlate and organize
information in accordance with various embodiments disclosed
herein.
[0198] As described above, the one or more provider information
repositories 249 may retain provider information of particular
providers. The repositories 249 may retain any information related
to providers, including entities and people, which may have street
addresses or other location parameters, such as longitude and
latitude coordinates, maps, driving directions, and/or the like,
stored as locations in one or more location information
repositories 251. For example, one or more provider information
repositories 249 may retain any information related to provider
identification information, provider profiles, provider
certification information, entity description, product
descriptions, service descriptions,
ratings/reviews/comments/preference indicia associated with
providers, provider websites, provider authentication information,
provider statuses, provider relationships, organization details,
payment methods, accounting information, credit information, asset
information, collateral information, address information, contact
information, entity hours, availability, user account information,
descriptive content, notifications, and/or the like.
[0199] In some embodiments, provider information may include local
graph information 249(a). The local graph information 249(a) may
include mapping information about a provider's connections to
collections, windows, end users, and/or the like via the
orchestration service. The local graph information 249(a) may
include classification information about a provider and relation to
user interest data and entity categories. Generally, the local
graph information 249(a) may include any information to facilitate
provider inclusion in the orchestration platform in accordance with
various embodiments described herein.
[0200] Provider information may include analytics information
249(b). The analytics information 249(b) may include any
performance information related to particular providers, including
any end-user data analytics related to particular providers.
Provider information may include offer information 249(c) retained
for particular providers. The offer information 249(c) may include
offers that particular providers have created, entity rules
associated with provisioning offers to end users, and/or the like.
Provider information may include linked account information 249(d).
The linked account information 249(d) may include information about
a provider's account(s) that are linked with the orchestration
system, such authentication information for linked accounts, which
accounts may include email accounts, short messaging accounts,
online social/entity networking accounts, and/or the like. The
analytics information 249(b), the offer information 249(c), and the
linked account information 249(d) may include any information to
facilitate various features of one or more provider interfaces, in
accordance with certain embodiments herein.
[0201] The one or more end-user information repositories 252 may
retain any suitable information associated with users in accordance
with various embodiments disclosed herein. The end-user information
may include end-user identification information, payment methods,
accounting information, contact information, user account
information, and/or the like. One or more end-user information
repositories 252 may retain any information related to end-user
location information 252(a), curation information 252(b), interest
information 252(c) related to end user (which may include
information related to indicia of interest), linked account
information 252(d), and/or the like. The curation information
252(b) may include local graph information, which may include
information about providers of interest, providers that have been
added to a user's collection, geo-specific criteria for end user
collections/profile, entity information otherwise associated with
the end user (which may include collection followings, e.g.), notes
by the end user, photos and/or other images associated with the end
user, preferences of the end user, arrangement/organizational
particulars for entity information associated with the end user,
end-user requests, and/or any suitable information to facilitate
any one or combination of the personal curation features described
herein. The linked account information 252(d) may include
information about an end user's account(s) that are linked with the
orchestration system, end-user notification profiles, end-user
authentication information, and/or any information to facilitate
various features of one or more end-user interfaces, in accordance
with certain embodiments herein.
[0202] In some embodiments, a client device 205, 207 may store
end-user information 252. In some embodiments, both the client
device 205, 207 and the online data stores 268 may store the
end-user information 252 for a particular end user. In some
embodiments, when there is a data communication connection between
the client device 205, 207 and the online data stores 268, the
client device 205, 207 and the online data stores 268 may
synchronize their copies of the end-user information 252 for the
end user.
[0203] FIG. 4 is a block diagram that illustrates an example method
400 of certain aspects of a personalized business information
orchestration, in accordance with certain embodiments of the
present disclosure. According to certain embodiments, the method
400 may begin as indicated by block 402. Teachings of the present
disclosure may be implemented in a variety of configurations. As
such, the order of the steps comprising the method 400 may be
shuffled in any suitable manner and may depend on the
implementation chosen. Moreover, while the following steps may be
separated for the sake of description, it should be understood that
certain steps may be performed simultaneously or substantially
simultaneously.
[0204] One aspect of personalized business information
orchestration may correspond to an end-user onboarding phase. The
onboarding may include application initialization stage, as
indicated by block 402. In some embodiments, the application could
correspond to a webpage. In some embodiments, the end user could be
using a mobile computing device. In some embodiments, a mobile
application configured to run on a mobile computing device may be
provided for the end user's mobile computing device. For example,
the mobile application may be made available from the system 102 or
any website for download to the mobile computing device;
alternatively, it may be pre-installed on the mobile computing
device and stored in the device's memory and/or computer-readable
media. An end user installing a mobile application may correspond
to initializing a client application on a computing device in some
embodiments.
[0205] The end-user interface provided by the platform may
facilitate the onboarding phase. In various embodiments, an
end-user interface may include providing one or more display
screens that may each include one or more user interface elements.
An end-user interface may include any text, image, and/or device
that can be displayed on a display screen for providing information
to a user and/or for receiving user input. An end-user interface
may include one or more widgets, text, text boxes, text fields,
tables, grids, charts, maps, hyperlinks, buttons, lists, combo
boxes, checkboxes, radio buttons, and/or the like.
[0206] FIGS. 8A, 8B, 8C, 8D, and 8E are screenshots illustrating
example end-user interfaces 800, in accordance with certain
embodiments of the present disclosure. FIG. 8A illustrates a
graphical user interface 802 that may be used in implementations of
certain embodiments of the present disclosure. FIG. 8A shows a
screenshot, which may be a partial screenshot, of a search
interface 802 that may be displayed via a mobile application or any
suitable end-user interface 205 in various embodiments. In some
embodiments, a webpage could implement a same or similar search
interface, for example.
[0207] The search interface 802 can be displayed at a user device
300, for example. A query field 804 may be configured for input of
keyword information for a search by a user, for example, via text
entry and/or voice entry. In some embodiments, the search interface
802 may also include a location field 806 for location information
to indicate a location of interest related to the keyword
information for the search input by the user, for example, via text
entry and/or voice entry. The location field 806 could
automatically indicate a default location for the user
automatically determined based any suitable location identification
method, such as one or more of the location identification methods
disclosed herein, including user history, a user profile, and/or
the user's current location as detected by GPS, cellular
positioning, network access point, and/or the like.
[0208] The search interface 802 can present user-selectable options
808 for quick searches according to any suitable category. The
search interface 802 can present user-selectable options 810
related to one or more personalized collections of business
information. The options 810 could correspond to an initialization
process for a user to set up one or more personalized collections
of business information; the options 810 could correspond to a
navigational feature that enables the user to navigate to one or
more personalized collections that have already been set up.
[0209] Referring again to FIG. 4, the onboarding phase of
personalized business information orchestration may include a user
profile stage, as indicated by block 404. A user profile may be
created along with initialization of an application or embodiments
for along with registering as a user via webpage in some
embodiments. The user profile may be created automatically for the
user, and user may be able to thereafter customize the profile. A
user profile may include persistent information that is maintained
about an end user. A user profile may include any data stored in an
end-user information repository whether or not it is part of the
profile as shown to an end-user via an end-user portal.
[0210] A personalized collection utility may include various
features for identifying a user's interests. In some embodiments,
as indicated by block 406, one or more questions may be presented
to the user to gauge a user's interests. In certain embodiments, an
automated question flow may present a series of questions presented
to the user, the answers to which, as provided by user selections,
may indicate user interests.
[0211] In some embodiments, organization of business information
into collections may be based on default criteria and/or
user-specified criteria. As some potential non-limiting examples of
collections, there may be a home collection, a garden collection, a
pet collection, a family collection, a health collection, a kids
collection, a collection customized to a specific project, etc. A
collection may allow for retrieval of listings at any time.
[0212] FIG. 8B illustrates a graphical user interface 822 for a
personalized collection utility that may be used in implementations
of certain embodiments of the present disclosure. FIG. 8B shows a
screenshot, which may be a partial screenshot, of an interface that
may be displayed via a mobile application or any suitable end-user
interface 205 in various embodiments. In some embodiments, a
webpage could implement a same or similar interface, for example.
The personalized collection utility may provide one or more ways in
which a user may organize the user's business relationship
information. The personalized collection utility may automatically
manage, update, and maintain relationship information in order to
make the user's life a lot easier. Certain embodiments allow saving
of listings information into one or more collections 824, and
certain embodiments may automatically organize a user's listings
into collections 824. By saving of listing information for later
use, a user may readily retrieve listing information for businesses
of interest.
[0213] In the example depicted, options or various collections 824
are presented, including a food collection option 826, a home
collection option 828, a car collection option 830, and a shopping
collection option 832. The options may be user-selectable options
that enable a user to navigate to business information associated
with each collection 824. A collection 824 may allow for retrieval
of listings and/or other business-specific information at any time.
In some embodiments, certain collection options could be presented
to the user as a default, which the user may thereafter
customize.
[0214] Referring again to FIG. 4, the onboarding phase of
personalized business information orchestration may include a
collection creation stage, as indicated by block 408. In some
embodiments, a default set of collections could be presented to the
user. In some embodiments, collection creation could include
correlating responses, which were received from the user per the
question flow, to interest categories/collections, as indicated by
block 410. The most appropriate set of collections determined based
on the responses may be suggested to the user, or the application
could simply be configured to include the set of collections, and
the user may thereafter customize the collections in any suitable
manner.
[0215] As indicated by block 412, options for customization of
collections may be presented to the user. And, as indicated by
block 414, the collections may be populated with business
information. Certain embodiments may provide the option for a user
to create a custom collection. For example, a user could create a
custom collection for a kitchen remodeling project. Providers that
are helping, and/or could potentially help, the user with the
project could be associated with the collection. Features could
also be provided to the user to allow the user to make and retain
notes related to the project, such as notes on the providers,
indicia of whether the user likes particular providers or not,
which providers have been contacted, information obtained from
providers, which providers have been selected, etc.
[0216] FIG. 5 is a block diagram that illustrates an example method
500 of certain aspects of a personalized business information
orchestration, in accordance with certain embodiments of the
present disclosure. According to certain embodiments, certain
aspects of the method 500 may be implemented in addition to or in
alternative to certain aspects of the method 400. As indicated by
block 502, indicia of user interests may be gathered. The
personalized collection utility may include various features for
identifying potential indicia of user interests.
[0217] In some embodiments, as indicated by block 504, one or more
questions may be presented to the user to gauge a user's interests.
This may correspond to block 406 of the method 400. Accordingly, an
automated workflow may include a series of questions presented to
the user, the answers to which, as provided by user selections, may
indicate user interests.
[0218] Some embodiments may provide for porting and categorization
of previously identified businesses of interest to the user from a
user-created repository of information on businesses of interest,
as indicated by block 506. Some embodiments may provide for options
for user initiation of porting and categorizing; some embodiments
may perform the process automatically. The application implementing
the personalized collection utility may be configured with a
plug-in, module, API, and/or otherwise to gather information from
the end-user device and/or relate that information to the
businesses of potential interest to the user.
[0219] In some embodiments, the personalized collection utility may
include features for automatically identifying potential businesses
of interest to a specific user based at least in part on user
history information, as indicated by block 508. A particular user
could have a history and/or profile associated with using search
features facilitated by the business information handling system
102, for example, via a client application, a webpage, a mobile
application, and/or the like. For example, businesses of potential
interest may be identified from web browsing history information
retained on the user computing device. Not only may businesses
associated with the history and/or profile be identified, but also
attendant business-specific information may be identified for
population of collections. Some embodiments may provide for options
for user initiation of gathering indicia from user history
information; some embodiments may perform the process
automatically.
[0220] In some embodiments, the personalized collection utility may
include features for automatically identifying potential businesses
of interest to a specific user based at least in part on business
contacts of the user, as indicated by block 510. Some embodiments
may provide for options for user initiation of gathering indicia
based on business contacts; some embodiments may perform the
process automatically. For example, business contacts retained on
the user computing device (such as business contacts in an address
book, a phone book, etc.) may be harvested.
[0221] Once one or more business contacts are identified based on
harvesting of the user computer device and/or account, the backend
system 102 may search for business information based on the
identified business contact, supplying the application with
pertinent updated information. In various embodiments, if the
backend system 102 cannot confirm the identified business contact,
the contact may be discarded or indicated as a potential business
of interest needing clarification from the user. And more
generally, in various embodiments, various indicia of interest may
be captured, searched, correlated to logged business information,
verified, updated, and/or used to gather additional related
business-specific information by the application and/or the backend
system 102.
[0222] In some embodiments, the personalized collection utility may
include features for automatically identifying potential businesses
of interest to a specific user based at least in part on user
interactions with businesses, as indicated by block 512. Some
embodiments may provide for options for user initiation of
gathering indicia based on user interactions with businesses; some
embodiments may perform the process automatically. Some embodiments
may identify businesses of potential interest based on applications
installed on the user computing device, such as mobile applications
that are associated with particular businesses and/or business
types. Some embodiments may identify businesses of potential
interest based on phone call and/or messaging history information
retained on the user computing device and/or available from other
data sources. Some embodiments may identify businesses of potential
interest based on email contact with businesses and/or business
representatives. Some embodiments may identify businesses of
potential interest based on calendar items related to appointments
with businesses (such as hair appointments, nail appointments,
dental appointments, etc.).
[0223] Some embodiments may identify businesses of potential
interest based on user indications of preference (such as positive
rating business, an indication of liking the business, friending or
otherwise linking to a business, sharing business information with
others, etc.) that the user has made via webpages and/or social
media. Such indications of preference may be garnered from
information associated with application on the user's computing
device and/or via other data sources 110. The personalized
collection utility may include features for automatically
identifying potential businesses of interest to a specific user
based at least in part on one or more other accounts of the user.
The user's orchestration account could be linked (e.g., via API) to
one or more other accounts of the user, including an account
associated with online social/business networking services (which
may include microblogging/short messaging services), an email
account, and/or any other suitable data source 110. In some cases,
the user may be prompted to login to the user's other account(s) to
allow for the harvesting. In some cases, previously provided
authentication information stored by the system 102 may be used so
that logging in is not necessary to enable the harvest. Businesses
of interest could be identified by approval/disapproval indicators,
which may be in form of likes, dislikes, thumbs-up, thumbs-down,
star-scale ratings, number-scale ratings, fan indications, affinity
group association, messages to businesses, and/or the like. The
approval/disapproval indicators could be those associated with the
user's profile and/or profiles of friends/associates/connections of
the user.
[0224] In some embodiments, the gathering of indicia of interest
may support the generation of user profiles, and could be used to
refine user profiles. In some embodiments, user profiles may be
transferred from the application to the information handling system
102. In other embodiments, only information related to the profiles
may be transferred to the backend system 102. The information
handling system 102 may have profiles for businesses. As indicated
by block 514, one or more collections may be created based on the
gathered indicia of interest. As indicated by block 516, the
gathered indicia of interest may be correlated to interest
categories/collections. In some embodiments, the business profiles
may include or be linked to one or more taxonomies that map
particular businesses/business categories, particular
interests/interest categories and/or particular questions for
presentation to users.
[0225] As indicated by block 518, options for customization of
collections may be presented to the user. As indicated by block
520, one or more collections-specific that questions may be
presented to the user for identification of collection-specific
businesses of interest. User-selectable options corresponding to
interest categories may be presented for user selection. For
example, options corresponding to categories such as my kids, my
home, my pets, etc. may be presented to the user. The
user-selectable options may allow the user to drill down into
particular interest categories. For example, once a user taps into
an individual collection, one or more questions may be presented to
the user relating to the individual collection to help user set up
that collection. Referring to FIG. 8B, for example, say a user taps
the individual collection 828 relates to the user's category of "my
home." The user may be presented with a collection-specific
graphical user interface 842, as illustrated by FIG. 8C, which
shows a screenshot, which may be a partial screenshot for a
personalized collection utility that may be used in implementations
of certain embodiments of the present disclosure.
[0226] As indicated by 844, one potential question presented the
user could be "Who's your plumber?" The question could be presented
with options 848 for a number of actual plumber names, plumber
business names, and/or other plumber listings for the user to
select. The options 848 presented with the question could be
identified based on gathered indicia of businesses of interest to
the user and/or options near the location of the user, such as the
nearest three or so plumbers. Though not depicted, the nearby
options could be indicated on a map presented to the user with the
interface 842. A text entry field 844 could allow the user to enter
an indication of a plumber in response to the question. Along with
such questions, a user-selectable option to skip 846 a given
question or a series of questions may be presented. Referring again
to FIG. 5, one or more businesses of interest may be associated
with one or more collections based on user responses to the
collection specific questions, as indicated by block 522.
[0227] In some embodiments, information harvested regarding a user
may be used to infer potential businesses of interest to the user,
as indicated by block 524. And such potential businesses of
interest may be suggested to the user, as indicated by block 526.
For example, if interest data indicates that a user has a pet,
local businesses related to pets and/or that otherwise would only
be of interest if one has a pet could be identified/suggested as
potential businesses of interest. Similarly, if interest data
indicates that a user is a parent, businesses that would only be of
interest to parents could be identified/suggested as potential
businesses of interest. As indicated by block 528, business
information corresponding to businesses/potential businesses of
interest may be organized into collections as discussed herein.
[0228] FIG. 6 is a block diagram that illustrates an example method
600 of certain aspects of a personalized business information
orchestration, in accordance with certain embodiments of the
present disclosure. According to certain embodiments, the method
600 may begin as indicated by block 602. Teachings of the present
disclosure may be implemented in a variety of configurations. As
such, the order of the steps comprising the method 600 may be
shuffled in any suitable manner and may depend on the
implementation chosen. Moreover, while the following steps may be
separated for the sake of description, it should be understood that
certain steps may be performed simultaneously or substantially
simultaneously.
[0229] As indicated by block 602, an end-user may identify/confirm
business information of interest. In some cases, a user may be
performing a search with the application. FIG. 8D illustrates a
graphical user interface 862 for searching for business
information, in accordance with certain embodiments of the present
disclosure. FIG. 8D shows a screenshot, which may be a partial
screenshot, of an interface that may be displayed via a mobile
application. In some embodiments, a webpage could implement a same
or similar interface. Responsive to a search request by an end
user, a set of businesses may be selected by the system 102 as
corresponding to the user's search criteria, including location.
The set of businesses may be compiled and presented to the consumer
with as search results 864. Along with each search result 864, a
user-selectable option 866 may be presented to the user so that
upon user selection, e.g., a single click, a particular business
may be added to the user's collections. Thus, in the example case,
a specific business may already be identified by the system 102
prior to being presented to the user. In some cases, however, a
specific business may need to be confirmed by the user, for
example, when a suggestion has been identified based on gathered
indicia of interest, and a potential business of interest is
presented to the user.
[0230] As indicated by block 604, in some embodiments, the business
information of interest may be correlated to a specific business if
necessary. For example, when the business information of interest
is not specific, is ambiguous, and/or corresponds to multiple
businesses, a specific business may need to be identified based on
the business information. The business information of interest
could include one or more of gathered indicia of interest,
responses to questions presented to the user, and/or interest
categories.
[0231] As indicated by block 606, business-specific information may
be associated with a particular collection. In some embodiments,
the association may be according to a collection specified by the
user, as indicated by block 608. In some embodiments, a
user-selectable option may be presented to the user upon
identification of a business of interest. For example, after a user
selects an option such as option 866, a prompt could be presented
to the user to indicate to which of the user's collections the
particular business should be linked. In some embodiments, a
user-selectable option could be presented for the particular
business to be automatically correlated and linked with the
appropriate collection. In some embodiments, the automatic
correlation and linking of the particular business with the
appropriate collection could be by default such that the user need
not be prompted. Accordingly, as indicated by block 610, the
business identifier or other business-specific information may be
automatically correlated with a germane collection. In some
embodiments, the user may be notified of the automatic correlation,
and, as indicated by block 612, a user-selectable option may be
presented to customize the association with the particular
collection, in some embodiments.
[0232] As indicated by block 614, additional information pertinent
to the specific business may be linked to the collection for
presentation to the user. FIG. 8E illustrates a graphical user
interface 882 for specific business information saved or savable in
a collection, in accordance with certain embodiments of the present
disclosure. FIG. 8E shows a screenshot, which may be a partial
screenshot, of an interface that may be displayed via a mobile
application. Business listing information 886 may be linked to the
collection. The business listing information 886 may include
address information, directions, ratings information, map
information, business details, user reviews, coupons, etc. An
indicator 884 may indicate that the specific business is saved in a
collection or could be a selectable option to add the listing
information for the specific business in a collection.
[0233] Referring again to FIG. 6, as indicated by block 616,
business-specific information associated with a collection may be
updated based on information from the information handling system
102. Business listing information associated with a collection may
be automatically updated by the information handling system 102
such that, when listing information is retrieved from a collection,
the listing information may be updated information. Thus, a
collection allows for the maintenance of listing information of
interest to provide a user with the most up-to-date listing
information for the businesses that matter to the user. And, thus,
if a provider associated with a collection has moved or changed
phone numbers, the user will not be left with obsolete information
(as the user would otherwise be if such information was recorded
into an address book) because the change may be captured so that
the collection would be automatically updated with the new
information.
[0234] FIG. 7 depicts a functional block diagram of certain aspects
of personalized business information orchestration 700, in
accordance with certain embodiments of the present disclosure.
Various embodiments may employ any one or combination of various
methods of correlation of interest data, interest categories, and
businesses.
[0235] Interest data may include any suitable information that may
be captured via an interest data capture process 702 to indicate,
infer, and/or determine interest categories and/or businesses of
interest. As discussed herein, certain embodiments may use a client
application 351 installed on the user's computing device to
facilitate data capture. In some embodiments, the client
application 351 may qualify captured data in part or in whole
and/or send captured data to the information handling system 102
for qualification.
[0236] Having interest data, the information handling system 102
and/or the application 351 may implement a qualification process.
Some embodiments may qualify an interest according to a graduated
scale. Any suitable scale may be used in various embodiments. In
some embodiments, a scale could entail a categorization scheme 714,
with any suitable categories. In some embodiments, a taxonomy
scoring system 712 could be correlated to the category scheme, such
that certain scores may correspond to certain categories so that,
based on a given set of interest data, a high correlation score to
a particular category may indicate the category is more
appropriate. Some embodiments may score with a numerical
expression. Accordingly, a taxonomy score may indicate which
categories are more/most likely to be appropriate for a user, thus
providing a quantitative estimate of a user interest. By way of
example without limitation, a scale could include a range of scores
from 0 to 100, or from 0 to 1,000, with the high end of the scale
indicating greater probability. Some embodiments may use methods of
statistical analysis to derive a score. Various embodiments may
determine a score based on any one or more suitable
quantifiers.
[0237] Some embodiments may employ a decision tree, checklist,
workflow, and/or the like to capture various aspects of interest
data and assess those aspects to infer interest qualification. Such
a decision tree, checklist, and/or workflow may incorporate any one
or combination of the depicted aspects and/or similar aspects in
any desired order, according to various embodiments. Interest data
can be consolidated and processed to yield a taxonomy score
712.
[0238] Certain embodiments may provide for keyword processing 704
of gathered interest data, such as any data related to indicia of
interest discussed herein. In some embodiments, an impression
engine, which could be included in the engine(s) 243, could perform
keyword identification. The call impression engine could be
configured to recognize evidence of interest potential. Taxonomy
scores 712 may be based at least in part on keywords gathered.
[0239] The impression engine may identify keywords as distinctive
markings and could compile the keywords for the purposes of
characterization from the perspective of interest potential. The
keywords could be correlated with keyword criteria 708 to
characterize the data from the perspective of interest potential
and to generate correlation results 708 that can be taken into
account with scoring 712. In some embodiments, the correlation
results 708 can be taken into account in conjunction with other
indicia 710, which could correspond to any one or combination of
the other indicia of interest potential discussed herein such as
location information and/or the like. As discussed herein, various
embodiments may employ any one or combination of methods of
capturing location information, including but not limited to,
gathering location information via any one or combination of the
user's computing device, such as the device GPS capabilities,
access points, third parties, receiving explicit location
information with one or more search requests, inferring location
information from one or more search requests, and/or the like.
[0240] FIG. 9 is a screenshot illustrating an example end-user
interface 900, in accordance with certain embodiments of the
present disclosure. FIG. 9 shows a screenshot, which may be a
partial screenshot, of the end-user interface 900 that may be
displayed via any suitable end-user interface 205, which may
correspond to a webpage or mobile application in various
embodiments. The end-user interface 900 may correspond to an
end-user's personal account that would be accessible to the
end-user after login and authentication.
[0241] The end-user interface 900 may present user identification
information 902 that may retain in the one or more repositories
268. In various embodiments, user identification information 902
may include, for example, the user's name/alias, one or more images
associated with the user (such as, images uploaded by the user,
more or less generic images selected by default, and/or images
pulled from other data sources, such as the user's linked online
social media account(s)), and/or the like.
[0242] The end-user interface 900 may be presented responsive to a
request for user's personalized business information transmitted
from the end-user computing device, such as a login request. The
system 102 may access the user's personalized business information
retained in the one or more repositories 268. In some embodiments,
certain personalized business information may be retained locally
on the end-user computing, and the local information may be
synchronized/updated based on the information retained in the one
or more repositories 268. In other embodiments, personalized
business information may be freshly transmitted, in whole or in
part, from the system 102 to the end-user computing device.
[0243] The user's personalized business information may be provided
in according with the user's curation information. The personalized
curation information may include geo-relevant graph information
specific to the user. The geo-relevant graph information may
include collection information that specifies one or more
collection characteristics. The collection characteristics may
include any suitable parameters defining aspects of the user's
collections, including one or more of collection themes, associated
business categories, information about location(s) of interest to
the user, businesses windows mapped to the collections, arrangement
information specifying a visual arrangement of collections to
presented to user, custom content added and/or modified by the user
and/or other users (such as notes, images, graphical
customizations, editorial customizations, etc.), privacy
attributes, and/or any other collection characteristics described
herein.
[0244] The geo-relevant graph information may include window
information that specifies one or more window characteristics. The
window characteristics may include any suitable parameters defining
aspects of the windowed information provided to the user, including
one or more of specific businesses mapped to a given window,
geo-specific criteria for the specific businesses, custom content
added and/or modified by the user and/or other users (such as
notes, images, graphical customizations, editorial customizations,
etc.), privacy attributes, and/or any other window characteristics
described herein.
[0245] In some embodiments, the system 102 may access a set of
business information retained in the one or more repositories 268,
the set of business information being related to businesses
specified by the geo-relevant graph information. The system 102 may
window the set of business information to at least partially form
one or more windowed sets of information. The windowing could
include one or more of identifying selecting, processing,
compiling, arranging, and/or providing any pertinent business
information for a particular business of interest described
herein.
[0246] For example, in various embodiments, the windowing could
include using geo-specific criteria to furnish information for a
particular business location (e.g., one out of multiple location
options, say, for a business chain or other business that has
multiple sites), a particular provider and/or contact (e.g., one
out of multiple provider and/or contact options for a particular
business), and/or the like. The windowing could include selecting
only particular information items that pertain to a particular
window. In some cases, a user could modify the type of content
desired for a particular business, and particular information items
could be furnished accordingly. The windowing could include
checking the set of business information for updated information
(such as changes in contact information, location information,
review information, and/or any other pertinent information).
[0247] In some embodiments, the windowing could include gathering
user-generated content pertaining to a particular business,
discussed further herein. In some cases, user-generated content was
previously provided by the end user and retained by the system 102.
In some cases, user-generated content was previously gathered,
pushed, and/or pulled from data sources 110 and retained by the
system 102. In some cases, user-generated content is actively
gathered, pushed, and/or pulled from data sources 110 on an
as-needed basis to freshly provide the content with the windowed
set of information and/or to update/check content previously
retained and that is to be provided with the windowed set of
information.
[0248] In some embodiments, windowed sets of information may be
formed and retained by the system 102 in anticipation of a request
to provide the information to the user. In some embodiments,
windowed sets of information may be formed responsive to a request.
In some embodiments, previously formed windowed sets of information
may be updated responsive to a request. In various embodiments,
window information components may be compiled prior to transmission
to an end-user computing device and/or may be transmitted
separately.
[0249] In the example depicted, the end-user interface 900 may
present the user's current collections 904, the curation of which
is facilitated by the platform. The user's current collections 904
may be indicated in any suitable manner, including with images,
color coding, alphanumeric indicia, and/or the like. A sorting
feature 918 may allow for presentation of one or more
user-selectable options to sort the collections 904 in any suitable
manner, including according to activity (e.g., activity by the
user, a collaborator, a business, business information updating via
the system 102, review activity, activity by other users registered
with the orchestration service and/or other users interacting about
the particular businesses via online social media services, and/or
the like), latest updates, latest additions of businesses to a
collection, alphabetically according to collection name, number of
businesses associated with a collection,
collaborative/non-collaborative characteristic, public/non-public
characteristic, and/or the like.
[0250] In some embodiments, like the example depicted, numbers of
businesses associated with each collection may be indicated. For
example, twenty-one businesses are indicated as associated with the
collaborative collection directed to the Santa Monica Restaurant
theme, in the collaborator section 908 and in the collection
section 904 with indication of the Santa Monica Restaurant
collection 914. And, generally, with presentation of collections
904, whether collaborative or not, numbers of businesses associated
with each collection 904 may be indicated as in the depicted
example (e.g., the Car collection is textually indicated as having
seven associated businesses) or in any other suitable manner.
[0251] One or more user-selectable options may be available to the
user to designate whether a collection is public or private. A
private designation could be a default in some embodiments. If a
collection is designated as public, the collection could be
viewable/searchable to other users. In some embodiments,
collections may be graphically distinguished in any suitable manner
based on being public or private. The example depicted portrays
illustrative graphical private collection indicators 924 and public
collection indicators 926. A collection could also be designate as
viewable/searchable to a select group of other users. For example,
the select group could include other users individually selected by
the user, other users who are also friends/associates via an online
social/business networking service, other users who associated with
a certain affinity group, and/or the like.
[0252] The end-user interface 900 may include one or more social
panes 906. The one or more social panes 906 could include a
collaborator section 908 for embodiments that provide the option
for the user to allow one or more collaborators to have access to
one or more collections. For example, a husband and wife may both
curate a Kitchen Remodel collection, like the depicted example, in
view of their kitchen remodeling project. As another example, a
user may collaborate with another in planning a trip, say a tour of
the West Coast, visiting whiskey bars along the way. To that end,
the tourists could curate a West Coast Whiskey Bars collection,
like the depicted example. Accordingly, the collaborator section
908 could include information about one or more collaborators that
have access to one or more collections of the user.
[0253] The end-user interface 900 may be configured to indicate,
not only collaborators, but also the particular collaborative
collections. In the example depicted, Angela M. is indicated in the
collaborator section 908 as a collaborator with Ricardo on a
kitchen remodel collection and a Santa Monica Restaurant
collection. Collaborative collections may be graphically
distinguished from non-collaborative collections. For example, a
graphical indicator 916 corresponding to the Santa Monica
Restaurant collection may indicate the collaborative nature of the
collection. However, collections may be distinguished in any
suitable manner, including with images, color coding, alphanumeric
indicia, and/or the like.
[0254] One or more user-selectable options may be provided to
navigate to a collaborative or non-collaborative collection. For
example, the user may tap or click into one of the collaborative
collections 904 that is designated as being collaborative. FIG. 10
shows a screenshot, which may be a partial screenshot, of the
end-user interface 900-1 that may be displayed after
navigating/drilling down into a collaborative collection 1002. The
example depicts a Kitchen Remodel collection 1002 relating to a
remodeling project. The collection 1002 may include one or more
curated information windows 1008, each corresponding to a
business.
[0255] Each information window 1008 may present any suitable
listing information for the respective business. In some
embodiments, the listing information may be retained on the backend
system 102 and provided to the user portal on demand. In some
embodiments, the listing information may be retained on the user
device 205 and updated by the backend system 102 on any suitable
basis, including, for example, based on one or more of user login,
user access of particular collections, launch of the application, a
batch process, a real-time update when new information is
available, and/or the like. In some embodiments, an information
window 1008 may include advertisements from a business, images
associated with a business, options for video/audio from a business
for presentation to the user, a video/audio/textual chat option to
connect with a business, a select-to-call option to connect with a
business, and/or the like. An information window 1008 may include a
directions feature 1012 configured to provide directions and/or
mapping information consequent to user selection. The information
may be provided in conjunction with a mapping application, resident
on the device 205 and/or network-facilitated.
[0256] An information window 1008 may include a notes feature 1010
configured to allow the user to make and retain notes related to
the provider, such as notes on the providers, indicia of whether
the user likes particular providers or not, which providers have
been contacted, information obtained from providers, which
providers have been selected, etc. Any suitable content could be
added in accordance with various embodiments. A user could add
photos, for example. Say, a user has a photo of a desired kitchen
design that the user wants to mimic for the user's kitchen remodel;
the user could upload the photo to a kitchen remodel collection. In
some embodiments, a user could import a photo from another account
of the user, say a photo-sharing/repository account, an online
networking services account, etc. The user could link to the other
account as described herein, and a data collection utility provided
by the orchestration account may be configured to port the photo(s)
to the user's collection/window.
[0257] As another example, photos of one or more of a service need,
a completed service, a service in progress, receipt(s), warranties,
invoices, and/or the like could be uploaded to the orchestration
account. Each photo may be time-stamped by the system 102 and
retained in the one or more repositories 268 for later access and
retrieval by the user. Accordingly, the platform may provide a way
to have a filing system directed to services--a record system for
the user. As described herein, a vendor could be a collaborator or
could be otherwise enabled to view certain collections/windows of
the user. In this manner, certain embodiments may provide an
additional means to facilitate ongoing engagement with local
vendors.
[0258] An information window 1008 may include a share feature 1014
configured to share an information window 1008 with others in one
or more ways. For example, the share feature 1014 may include one
or more user-selectable options to propagate the information window
1008 to another collection in some embodiments. Say, for example,
that the user decides a particular business is appropriate for
another collection of the user, the user can add the corresponding
information window 1008 to the other collection via the share
feature 1014.
[0259] As another example, the share feature 1014 may include one
or more user-selectable options to share the information window
1008 with another user of the online orchestration service in some
embodiments. In some embodiments, entire collections can be shared.
The end-user interface 900-1 may include one or more collection
share options 1020 configured to allow sharing of collection
information in any suitable manner.
[0260] A window and/or collection could be shared with another user
of the online orchestration service, for example, via a
notification to an account associated with another user. Responsive
to a share selection, the platform may send a notification to an
account associated with another user. The notification could be
provided via the other user's account. By way of example, the
end-user interface 900-1 may include notification features 1016
that allow a user to be apprised of new notifications received as
directed to the user, and allow the user to view the
notification(s) upon user selection of one or more notification
options. Thus, in the example depicted, the user, Ricardo, could
receive a notification 1016, which could be a result of another
user sharing an information window 1008 and/or collection 1002.
[0261] In various embodiments, the shared information could be at
least partially viewed and/or incorporated into user's account with
viewing of the notification 1016, with viewing a message
corresponding to the notification 1016, and/or with selection of
one or more user-selectable options provided consequent to the
notification 1016. The presentation of shared information could be
by way of summary information that summarizes and/or characterizes
information from/relating to the shared collection. For example,
summary information about the shared information could be generated
and included for viewing with viewing of the notification 1016
and/or a message corresponding to the notification 1016. In some
embodiments, the shared information could be viewed, at least in
part, with selection of one or more user-selectable options
provided with the notification 1016 and/or a message corresponding
to the notification 1016. In some embodiments, one or more
user-selectable options may be provided for incorporating the
corresponding collection/information window into a collection of
the user.
[0262] The share feature 1014, 1020 may include one or more
user-selectable options to share the information window 1008 and/or
collection 1002 with others via any suitable means of notification.
For example, text messages, voice notifications, push
notifications, e-mails, social/business networking services account
postings/messages, alerts with the application, and/or other any
suitable means could be employed to allow for the presentation of
collection/window information. In some embodiments, the user's
orchestration account could be linked (e.g., via API) to one or
more other accounts of the user, say, an email account, for
example. The end-user interface 900-1 may include linked account
features 1018 that may allow for notifications of any
communications received via the other account and/or may provide
one or more user-selectable options to launch and/or otherwise
access the other account.
[0263] The user's orchestration account could link to any suitable
account of the user, including an account associated with online
social/business networking services and/or any other suitable data
source 100. And, thus, a posting about the business could be made
in association with the user's account and/or another's account
responsive to the user selection of the share option. In some
cases, the user may be prompted to login to the user's
social/business networking media account to make the posting. In
some cases, previously provided authentication information stored
by the system 102 may be used so that logging in is not necessary
to make the posting in the other account. The share feature 1014,
1020 may be configured to facilitate the setup of the information
sharing, whether it be a networking services account posting, an
email, a text message, or otherwise, and present the communication
setup for previewing and dispatch by the user. A link or other
user-selectable option could be shared to allow for the
viewing/incorporation of further collection information. In some
embodiments, users who are not yet registered with the service
could be invited to do so in conjunction with a collection sharing
communication.
[0264] In some embodiments, a snapshot of a collection or a single
window could be shared. The snapshot could take any suitable form,
include an image, a text file, and/or the like. A share feature
1014, 1020 could present an option to send a snapshot, and,
consequent to user selection, could convert a collection/window to
a snapshot form and proceed with communication in a manner
discussed above.
[0265] FIG. 11 shows an example 1100 of sharing collection
information via social/business networking services account
postings, in accordance with certain embodiments. Say, for example,
the user, Ricardo, is asked about who did the work on his kitchen
remodel. The user can share information about his Kitchen Remodel
Collection via a posting 1102 to his social media account. The
posting 1102 may include summary information 1104 about the
collection. The posting 1102 may include one or more
user-selectable options to view more collection information, to
view collection information via the online orchestration service,
to login/register with the orchestration service, and/or the
like.
[0266] For example, one or more user-selectable options may be
provided to navigate to a public profile accessible via the
orchestration platform. FIG. 12 shows a screenshot, which may be a
partial screenshot, of a public profile 1000-2 that may be
displayed after selection of a link made available with posting
1102. The example depicts Ricardo's public Kitchen Remodel
Collection 1102-1. The collection 1102-1, having been designated as
public, could be a landing page viewable, for example, as a result
of a user selection of a link from a posting 1102.
[0267] In some embodiments, one or more user-selectable options may
be presented depending on the viewer. For example,
login/registration options 1202 may be provided. For a registered
user, a follow option 1206 may be provided to enable the user to
follow Ricardo's collection. After the user opts to follow the
collection, update notifications may be sent to the user based on
subsequent actions taken with respect to the collection, such as
collection curation, annotation, augmentation, and/or any
modification of interest taken.
[0268] For a registered user, a copy option 1208 may be provided to
enable the user to copy the collection 1102-1 to the user's set of
collections. Once copied over to the user's collection set, the
copy could become the user's collection. The user may then use and
modify the collection as desired.
[0269] Referring again to FIG. 11, in some embodiments, user
feedback from the social/business networking services may be
captured by the system 102. For example, information about user
approval/disapproval indicators 1106, which may be in form of
likes, dislikes, thumbs-up, thumbs-down, star-scale ratings,
number-scale ratings, and/or the like, could be captured. Captured
user feedback could be processed and reflected back through the
orchestration services platform. Thus, a certain collection and/or
business may have accumulated user feedback from other fora and
such feedback could be indicated via the user's collection(s)
and/or information window(s) in any suitable manner.
[0270] Referring again to FIG. 10, the interface 900-1 may indicate
user feedback data in any suitable manner. For example, an
information window 1008 may include one or more user review
indicators 1022. Similar review features could be provided on a
collection basis, in addition or alternative to an individual
business basis. The one or more user review indicators 1022 may
include composite and/or segregated review information garnered
from reviews via the listing service of the platform, online
social/business networking service(s), the orchestration service,
and/or any suitable data source(s) 100. In various embodiments, the
system 102 may actively monitor, gather, push, and/or pull user
feedback data from such sources in any suitable way. As a
particular example of gathering user feedback on businesses, in
many cases, businesses associated with the system 102 may have
individual business pages setup for public viewing/interfacing via
a one or more online social/business networking services and/or
other data sources 100. In some cases, the system 102 may
facilitate setup of such business pages for the businesses. User
feedback data from such sources may be monitored, gathered, and/or
pulled by the system 102.
[0271] When presented via the interface 900-1, the source of
composite review information could be distinguished. For example,
review information coming from the listing service could be so
indicated, review information coming from social media could be so
indicated, etc. Moreover, the types of review information could be
differentiated. For example, say user feedback from one social
media site includes feedback in the form of "like" indications; an
information window 1008 could indicate the number of likes that the
business received via that social media site over any time
period(s) of interest (e.g., the past year, six months, month,
week, day, hour, etc.). Thus, certain embodiments may provide for
temporal windowing may allow a user to see businesses trending in
the user's neighborhood, city, and/or other local area.
[0272] The example depicts the collection 1002 configured as having
one collaborator, as indicated by 1004. A collaborator could be
another user of the online orchestration service in some
embodiments. In some embodiments, users who are not yet registered
with the service could be invited to do so in conjunction with an
invitation from a registered user to be a collaborator. One or more
user-selectable options 1006 could be presented via the end-user
interface 900-1 to allow the user to enlist collaborators, who may
be registered users or who may not be registered. Responsive to
enlist option selection, the platform may send a notification to an
account associated with an invitee. In some embodiments, where an
invitee is a registered user, the notification could be provided
via the invitee's accounts. The end-user interface 900-1 may
include notification features 1016 that allow a user to be apprised
of new notifications received as directed to the user, and allow
the user to view the notification(s) upon user selection of one or
more notification options. Thus, in the example depicted, the user,
Ricardo, could receive an invitation via a notification 1016.
However, any suitable means of notification may be employed. For
example, text, voice, e-mail, alerts with the application, and/or
the like could be sent. In some embodiments, the user's
orchestration account could be linked (e.g., via API) to another
account of the user, say, an email account, for example. The
end-user interface 900-1 may include linked account features 1018
that may allow for notifications of any communications (which
communications are not limited to collaboration and registration
invitations) received via the other account and/or may provide one
or more user-selectable options to launch and/or otherwise access
the other account. A notification could include a link or other
communication reference referring back to the platform, prompting
the invitee to respond. For example, the notification could provide
a link for users to register and/or login to the platform to
respond. In some embodiments, the invitee may respond via the same
medium in which the notification was sent (e.g., text, voice,
e-mail, etc.), and the system 102 may process the response,
extracting requested information.
[0273] Some embodiments may allow the user to determine a level of
access granted to a collaborator. In some embodiments, the access
could be read-only access. Thus, the user could specify that one or
more other users may only be allowed to view a certain collection.
In addition to viewing access, the level of access could include
write access. A collaborator could have editing access and/or
access to add content such that the collaborator may add notes,
photos, preference indicia, ratings indicia, additional business
selections/information, etc. Accordingly, any changes that one
collaborator makes to a collection may be reflected in the
collection as viewed by one or more other collaborators.
[0274] A collaborator could be a service provider associated with
one or more of the businesses designated in the collaborative
collection. For example, a user might want a general contractor to
be a collaborator on a project, which general contractor could be
associated with a designated business or could be independent.
Accordingly, such collaborators could help coordinate a project or
otherwise provide input on a project. And, more generally beyond
the example of a general contractor, any desired business provider
could be a collaborator and be enabled to provide input.
[0275] Referring again to FIG. 9, the one or more social panes 906
could include a friends section 918 for embodiments that provide
for interaction between the orchestration service and one or more
online social media services (e.g., via API). A user may have the
option to associate the user's orchestration account with one or
more social/business networking services. One or more
user-selectable options and workflows may be provided for the user
to provide necessary authentication information for the user's
other networking account(s) and to associate the other networking
account(s). In some embodiments, the system 102 may retain the
authentication information and link to the data sources 110 to
coordinate interface with the other accounts, gather information
from the user's particular account(s), and provide information for
presentation via the end-user interface 900. Consequent to such
association, the friends section 918 could identify friends and/or
others that are linked to the user via social/business networking
services. Additional information, such as whether certain
friends/associates are logged in to the orchestration service
and/or social/business networking services, could be presented via
the friends section 918. Those friends/associates that have
orchestration accounts could be distinguished from those that do
not in any suitable manner.
[0276] In some embodiments, one or more user-selectable options may
be provided to navigate to another user's account. The friend
indicators in the friends section 918 could in include such
options, for example. In addition or alternative, a search
interface could be provided to search for other user accounts. FIG.
13 shows a screenshot, which may be a partial screenshot, of the
end-user interface 900-3 that may be displayed after navigating to
another user's public collections, for example, by selecting an
option 1302 from the social panes 906. The example depicts public
collections 1304 of another user, Jason. Accordingly, only those
collections 1304 which have been designated as public would be
viewable.
[0277] Referring again to FIG. 9, the one or more social panes 906
could include a collection following section 920. The collection
following section 920 may identify public collections that the user
has selected to follow. Additional information, such as update
information or any other suitable information pertaining to the
followed public collections, could be indicated, as well. Update
notifications could be general or could be specific, indicating,
for example, that business information has changed (new telephone
number, new reviews, new ratings, a change in ratings of the
business by third party organizations, a change in business
profiles/webpages, etc.)
[0278] The user may be presented with options to search 922 for
public collections of others. The search could be geo-aware such
that public collections associated with the user's general vicinity
could be searched. The option to search another vicinity of
interest to the user could also be provided so that the user may
indicate a different vicinity of interest. In some embodiments,
options to input a trip, by starting point, endpoint, route, and/or
otherwise may be provided so that the user could search for
collections relevant to the trip. For example, a user may be
interested in a tour of California wineries and may so indicate in
order to search for collections pertaining thereto. Public
collections could be selected for presentation to the user based at
least in part on one or more of business location(s) in relation to
a location of interest to the user, relevance of a business to an
identified interest of the user, how many users are following the
collections, positively trending collections with respect to a
particular time period(s) (which trending could be based on
collection additions, collection followings, ratings, and/or any
suitable basis), activity in the collections, ratings of the
collections, and/or the like. Certain public collections could be
selected for presentation to the user as suggestions, though the
user may not have actively searched for the public collections.
Having found a public collection of interest, one or more
user-selectable options may be presented to the user to peruse,
share, incorporate into the user's collection(s) (selectively or in
whole), and/or follow the collection.
[0279] FIG. 14 shows a screenshot, which may be a partial
screenshot, of a search interface 1400 that may be displayed via a
mobile application, webpage, or any suitable end-user interface
205, in accordance with certain embodiments of the present
disclosure. A search feature 1402 may be provided with one or more
of the end-user interfaces 800, 900, and/or the like. The search
feature 1402 could be made available to registered users,
non-registered users, and/or non-logged-in users. The search
feature 1402 may include a query field and a location field, and
may be the same or similar to search interface features described
herein. Responsive to a search request by an end user, a set of
businesses may be selected by the system 102 as corresponding to
the user's search criteria, including location. The set of
businesses may be compiled and presented as search results
1404.
[0280] In some embodiments, interest data, user preferences,
curation characteristics, collection characteristics, demographic
characteristics, business characteristics, profile
types/characteristics, and/or the like that correspond to
particular end users could be characterized by the system 102 and
retained as user-specific profiles associated with various criteria
(e.g., keyword criteria, taxonomy criteria, categorization
criteria, etc.) that allow for correlation of multiple end users
based on end-user characteristics. The system 102 could anonymize
any of such information and could provide anonymous depictions of
user preferences and profile types to help personalize the
experience for a given end user and help find businesses that other
users like the given end user enjoyed. User-selectable options for
user-specific profile types, criteria, and/or any suitable
characterization of other users could be presented via the search
interface 1400 to allow for searching. For example, a user could
search for other users that have interest in pets, children, or any
suitable interest category, and be presented with anonymized search
results for the user to see what businesses are of interest to
those other users. A user could refine a search by demographic
characteristics, location characteristics, interest data, user
preferences, curation characteristics, collection characteristics,
business characteristics, profile types/characteristics, and/or the
like. In some embodiments, the system 102 may automatically search
on behalf of the user, without user selection, and present search
results as suggestions to the user. The search results could
anonymously indicate any suitable characterization of the other
users.
[0281] In some embodiments, certain public collections could be
selected for presentation to the user with the search results 1404.
In some embodiments, the collection could be selected as
suggestions, though the user may not have actively searched for the
public collections. One or more user-selectable options may be
presented to the user to peruse, share, incorporate into the user's
collection(s) (selectively or in whole), and/or follow the
collection.
[0282] In some embodiments, with respect to particular business
listing in the search results 1404, an indicator 1406 may indicate
whether a particular business listing is in a collection by other
users and may further indicate a number of users who have added the
particular business listing to a collection. Such information
indicated by the collection addition indicators 1406 may lend a
measure of credibility and trustworthiness to a business; an
addition to one's collection indicates a willingness/desire to
engage with a business.
[0283] Some embodiments may provide a map view 1414 of search
results. The map view 1414 could indicate search results depicted
in a vicinity of a reference location 1416 that corresponds to the
location of interest. Collection addition indicators 1418 could be
positioned on the map view 1414 to indication business locations
corresponding to the search results. The collection addition
indicators 1418 may each indicate a number of users who have added
a particular business listing to a collection. In some embodiments,
the collection addition indicators 1418 may correspond to a set of
the most relevant search results, and relatively less relevant
search results could be indicated by different collection addition
indicators 1420. The indicators 1418 and 1420 could be graphically
distinguished in any suitable manner, including with images, shape
differentiation, color differentiation, alphanumeric indicia,
and/or the like. One or more of the indicators 1418 and 1420 could
correspond to user-selection options that allow a user to view
further details and/or adding businesses to collections consequent
to selection of a particular indicator. In some embodiments, the
map view 1414 and/or a similar map interface may be provided to
allow for interactive searching and adjustment in order to find
businesses of interest for addition to collections.
[0284] In some embodiments, one or more user-selectable options may
be provided for refining location criteria for the collection
addition indicia. For example, a user may be able to indicate a
range, such as a radius of X miles from specified location of
interest. In some embodiments, a user could indicate an area of
interest with any suitable parameters, e.g., including one or more
counties, municipalities, zip codes, distances from reference
points, etc. In some embodiments, a user-selectable map interface
may be presented, enabling user to define an area by selecting one
or more points on the map interface. For example, predefined
service areas, such as zip codes and/or the like, could be
presented on the map for selection. The map interface could allow a
user to define a perimeter of a service, e.g., by drawing on the
map with a line drawing tool, cursor, finger/stylus contact with a
touch interface, selection of perimeter boundaries such as roads,
rivers, etc. Hence, collection addition indicia may be
location-specific and refined to any suitable degree of granularity
to provide enhanced relevance.
[0285] A user logged in to the orchestration platform could have a
linked social/business networking services account. And, in some
embodiments, with respect to a particular business listing in the
search results 1404, an indicator 1408 may indicate whether a
particular business listing has been added by others who are
friends/associates/connections of the user via an online
social/business networking service, other users who associated with
a certain affinity group, and/or the like. Thus, certain
embodiments may surface user-generated content from social graphs
in order add a trust factor for consideration of particular
businesses, if applicable. The network-specific addition indicators
1408 may be differentiated from more general collection addition
indicators 1406 in some embodiments in order to add trustworthiness
differentiation, as an addition of a business to personal
collection by social media friends may be considered as an
endorsement and may further allow reaching out to the others for
further information if desired.
[0286] User-selectable options may be presented to the user with
search results to allow a drill-down to more specific information
for a particular business. FIG. 15 shows a screenshot, which may be
a partial screenshot, of a search interface 1400-1 with
business-specific information 1502 that may be displayed responsive
to user selection, in accordance with certain embodiments of the
present disclosure. With respect to a particular business, the
business-specific information 1502 may include any one or
combination of information items and/or features described herein.
A user-selectable option 1504 may be presented to the user so that
upon user selection, e.g., a single click, a particular business
may be added to the user's collections. A collection addition
indicator 1506 may indicate whether a particular business listing
is in a collection by other users and may further indicate a number
of users who have added the particular business listing to a
collection. A network-specific indicator 1508 may indicate whether
a particular business listing has been added by others who are
friends/associates of the user via an online social/business
networking service, other users who associated with a certain
affinity group, and/or the like. In some embodiments, the
network-specific indicator 1508 may include images of the
friends/associates scraped from the social/business networking
service.
[0287] The business-specific information 1502 may include a
friends/associates review window 1510 that surfaces review content
by the user's friends/associates gathered from one or more online
social/business networking services. The system 102 may actively
monitor, gather, push, and/or pull review content from one or more
online social/business networking services in any suitable way. In
some embodiments, like the example depicted, the review window 1510
may surface individual review content, that is, content from an
individual friend/associate of the user. The review content may
include any one or combination of reviewer identification
information, ratings, review comments, preference indicia, date
information, and/or the like. The review content may be gathered
from business pages associated with the one or more online
social/business networking services in some cases. In some
embodiments, review content may be gathered from business websites,
with the reviewers being correlated to the user as being related
via the online social/business networking services.
[0288] FIG. 16 shows a screenshot, which may be a partial
screenshot, of an end-user interface 1600 that may be displayed via
a mobile application, webpage, or any suitable end-user interface
205, in accordance with certain embodiments of the present
disclosure. The end-user interface 1600 may be similar to other
interfaces described herein and may include any one or combination
of features of other interfaces described herein. In some
embodiments, the end-user interface 1600 may include one or more
targeted advertising windows 1602.
[0289] The targeted advertising window 1602 may allow for
presentation of advertising offers that are targeted to the user.
The targeted advertising window 1602 may allow for a business to
have an option of deciding to which consumer to send offer
information and/or which offer information to send. With some
embodiments, a targeted advertising option may be made available to
businesses that have been added to a collection of the user. In
some embodiments, the targeted advertising could be customized to
the consumer by the business. Thus, a business could develop and/or
maintain a relationship with the user after the collection addition
by pushing a special offer to the user. For example, say a
particular business has been added to a collection, but no further
engagement between the consumer and the business has ensued. Noting
this, the business may wish to have the option to direct one or
more offers to the consumer in order to incentivize further
engagement. Similarly, say a particular business has been added to
a collection and has done business with the consumer, the business
may wish to have the option to follow up with the consumer with
directed offers to maintain and/or develop the relationship with
the consumer. Perhaps, the business has not had contact with the
consumer in a while; noting this, the business may wish to send a
special offer to the consumer. The targeted advertising information
could include one or more of an electronic coupon (which could
correspond to a savable and/or printable discount coupon),
advertising information, promotion information, offer information,
business card information, any suitable business-related
information, and/or the like. In various embodiments, in addition
or alternative to the targeted advertising window 1602, an
advertiser may have any one or combination of options for
presenting offers, including via email, text messaging, a mobile
app, a website, linked online social/business networking
service(s), regular mail, push notifications, telephonic
notification, etc.
[0290] In some embodiments, the end-user interface 1600 may include
one or more selected business windows 1604. The selected business
windows 1604 may present certain business information windows for
businesses that the user has not already added to a collection.
With some embodiments, as in the example depicted, business
information may be selected for presentation as the most popular
businesses based on total collection additions. Business windows
could be selected for presentation based at least in part on one or
more of business location(s) in relation to a location of interest
to the user, relevance of a business to an identified interest of
the user, a number of collection additions by other users with
respect to particular businesses, a number of collection additions
by other users who are related to the user via online
social/businesses networking service(s), trending of such
collection additions with respect to a particular time period(s),
ratings of businesses, and/or the like. The selected business
windows 1604 may include collection addition indicators 1606, as
described herein. Along with each selected business window 1604, a
user-selectable option 1608 may be presented to the user so that
upon user selection, e.g., a single click, a particular business
may be added to the user's collections. In some embodiments, the
selected business windows 1604 may be selected regardless of what
has already been added to the user's collections, and whether a
particular business has been added to the user's collections could
be graphically indicated in any suitable manner (e.g., though not
depicted as such, an indicator 1608 for a business already in the
user's collections could be different than an indicator 1608 for a
business not already added).
[0291] In some embodiments, the end-user interface 1600 may include
one or more selected coupon windows 1610. In some embodiments, the
selected coupon windows 1610 may present certain coupon information
for businesses near a location of interest to the user. In some
embodiments, the system 102 could select the coupon information by
actively monitoring location of interest data of the user and
correlating that data to coupon information retained by the system
102. In some embodiments, coupon information could be correlated to
businesses already added to the user's collections in order to
apprise the user of pertinent offers relating to those businesses
of interest. In some embodiments, the system 102 could monitor
location of interest data for the user and notify businesses
already added to the user's collections of an opportunity to direct
coupon information to the user. Responsive to the notification, a
business could provide coupon information to the system 102 for
presentation to the user. In some embodiments, the system 102 may
gather, push, and/or pull coupon information from businesses,
business websites, and/or any suitable data source 110 in any
suitable way, and then provide pertinent coupon information to
users via one or more selected coupon windows 1610. The selected
coupon window 1610 could be configured to provide an electronic
coupon that could be savable and/or printable. Along with each
selected coupon window 1610, a user-selectable option 1612 may be
presented to the user so that, upon user selection (e.g., a single
click), the coupon may be saved in association with the user's
account. If the corresponding business is already added to the
user's collections, the coupon information could be retained and
accessible in association with the corresponding business in the
appropriate collection. In some embodiments, if the corresponding
business is not already added to the user's collections, selection
of the option 1612 could also add the corresponding business to the
user's collections, in conjunction with retaining the coupon
information for later access in association with the corresponding
business.
[0292] In some embodiments, the end-user interface 1600 may include
an activity reporter 1614. The activity reporter 1614 could include
one or more widgets, in some embodiments. The activity reporter
1614 may be configured to a report activity about the orchestration
platform as the activity is occurring in real-time and/or at a high
speed. The activity reporter 1614 may report any suitable
information regarding any suitable activity, such as collection
additions, new users joining the orchestration service, new
reviews, new businesses joining the service, new followings of
public collections, etc.
[0293] In some embodiments, the end-user interface 1600 may include
an editorial section 1616 that may surface editorial content. As in
the example depicted, the editorial section 1616 could expose
promotional/editorial material that incorporates links to a public
collection. The public collection could correspond to a collection
associated with a celebrity, and could be tied to one or more
endorsements. The public collection could be made available for
public viewing, following, sharing, and/or copying.
[0294] FIGS. 17A, 17B, and 17C are screen displays illustrating
example end-user interfaces 1700, in accordance with certain
embodiments of the present disclosure. The end-user interfaces 1700
may be displayed via a mobile application or any suitable end-user
interface 205 in various embodiments. The end-user interfaces 1700
may be similar to other interfaces described herein and may include
any one or combination of features of other interfaces described
herein. In some embodiments, the end-user interfaces 1700 may
include one or more popular collections windows 1702. In various
embodiments, the system 102 and/or the end-user device 300 may be
configured to identify location information corresponding to the
current or recent location of the end-user device 300 and/or user,
and use the location information as a basis for identifying
geo-aware selections for indication via the end-user interfaces
1700. In addition or alternative to the location information and
relative business location(s) as bases, collections may be selected
for presentation to the user based at least in part on relevance of
a business to an identified interest of the user, relevance of a
business to an identified demographic aspect of the user, how many
users are following the collections, positively trending
collections with respect to a particular time period(s) (which
trending could be based on collection additions, collection
followings, ratings, and/or any suitable basis), activity in the
collections, ratings of the collections (which could include user
votes for collections), instances of sharing of the collections,
copies of the collections, and/or the like. Thus, certain
embodiments may provide for temporal windowing may allow a user to
see businesses trending in the user's neighborhood, city, and/or
other local area.
[0295] As indicated by collection 1704, certain collection may not
be created by and users but may be created and curated by staff of
the orchestration service in some embodiments. In conjunction with
such staff-curated collections, feedback from the crowd/community
may be solicited. For example, incentives may be provided so that
users provide feedback on certain collections corresponding to
geographical area and business category. In some cases, users may
be enticed to add businesses to such a collection. Those that
bubble to the top of such a collection (e.g., in terms of ratings,
additions, shares, copies, and/or the like) may be given greater
visibility in the collection and/or otherwise via the orchestration
service features.
[0296] In some embodiments, celebrity collections may be available
for public viewing, following, sharing, and/or copying. In some
embodiments, particular businesses, which may include individual or
groups of service providers, may have collections tailored for
clients. For example, a real estate agent may curate a collection
of local vendors tailored for sharing with clients that have bought
or in the process of buying a house in a particular area. Such a
collection could include recommended vendors that could be of use
to such clients, such as an inspector, a handyman, a pool service,
utility providers, lawn care service, housecleaning service, etc.
Additionally, the real estate agent may want to have multiple
collections tailored to various categories of clients--clients in
certain metropolitan areas, neighborhoods, income classes, etc.
[0297] In some embodiments, the system 102 may track instances of
collection sharing in order to track referrals. Say, for example, a
real estate agent shares a collection with a client, and the client
contacts a merchant via the shared collection, for example, via a
communication reference provided via the collection, which
reference could be a click-to-call reference, click-to-message
reference, click-to-email reference, click-to-chat reference,
and/or the like. The application and/or system 102 could monitor
for such communications made via the collection. The system 102,
being notified of such communications, may retain tracking
information, which could be used as a basis for rewarding the real
estate agent for the referral. In some embodiments, for example, an
account of the real estate agent could be automatically credited
with a referral reward in any suitable form for the lead that was
delivered. Beyond the example of a provider having an incentive to
provide referrals, the end user could similarly be incentivized to
give referrals by sharing of collection/window information. Such
incentives may be based on end-user qualification, scoring, and
monetization discussed herein.
[0298] In some embodiments, a network-specific indicator 1706 may
indicate whether a particular collection has been added by others
who are friends/associates of the user via an online
social/business networking service, other users who associated with
a certain affinity group, and/or the like. The network-specific
indicator 1706 may identify one or more of the friends/associates.
In some embodiments, the end-user interfaces 1700 may provide
collection-specific detail information 1708, copy options 1710,
and/or follow options 1712, as described herein. The end-user
interfaces 1700 may provide one or more collection share options
1714 configured to allow sharing of collection information in any
suitable manner, as described herein. For example, as indicated in
FIG. 17C, a collection could be shared via social/business
networking services account postings, and the collection share
options 1714 may facilitate that. In some embodiments, the
collection share options 1714 may include user-selectable options
1716 to restrict the posting to a certain audience. Additionally,
the user-selectable options 1716 may provide the option to
geographically restrict the posting to an audience associated with
a certain geographical area. The system 102 may, for example, only
make the posting to those friends/associates who have associated
locations, as indicated by a social/business networking service,
within a particular vicinity corresponding to the user-specified
location.
[0299] FIG. 18 illustrates one embodiment of a merchant dashboard
1800 for an advertising platform that may correspond to a provider
interface(s) 700, in accordance with certain embodiments of the
present disclosure. The merchant dashboard 1800 may provide a
particular merchant (i.e., a provider) access to demographic
information about orchestration service users that have added the
merchant's business to their collections. In some embodiments, the
dashboard 1800 may correspond to a home page that a provider might
see upon initialization of an app or logging on to the platform.
After a provider logs in, different data points that can be of use
to provider may be presented via the dashboard 1800. The dashboard
1800 may include any software process or module operable to present
and receive information to/from a provider, allow a provider
monitor advertising information, select different types of
advertising data, identify desired metrics, automatically generate
dashboard views, customize dashboard views, and/or the like. The
dashboard 1800 may provide a graphical user interface (GUI) that
includes any number and type of user-selectable options to
facilitate various embodiments. In various embodiments, one or more
user-selectable options may include one or more of a screen-labeled
function key, an icon, a button, a soft button, a window, a menu, a
control widget, a scroll bar, a slider, a listbox, and/or the like.
In various embodiments, one or more user-selectable options may be
selectable via one or more of touch, push, movement-based
selection, and/or any suitable navigation feature. The example of
the dashboard 1800 is not limiting, but may be illustrative of a
mobile application and/or web interface 105 and/or 107.
[0300] In some embodiments, the dashboard 1800 may expose purchase
consideration data 1802 about users who have added the particular
merchant to their collections. A purchase consideration metrics
feature may be configured to present access to details regarding
any suitable aspects of consumer data capture and consumer
qualification. FIG. 19 depicts a functional block diagram of
certain aspects of end-user qualification 1900, in accordance with
certain embodiments of the present disclosure. Various embodiments
may employ any one or combination of various methods of qualifying
end users. In some embodiments, an end-user may be simply
identified as one having, or not having, made a purchase, engaged
services, and or otherwise conducted business. In some embodiments,
providers may be charged by the orchestration or other service
based at least in part on such an identification.
[0301] Captured data may be used to qualify and users. End-user
data may include any suitable information that may be captured to
indicate, infer, and/or determine which end-users are likely to
bring in business and/or actually have brought in business. An
end-user's interactions with the orchestration platform can be
broken down and assessed based on any one or combination of various
factors, such as, for example, duration of various directed
interactions, locations of the end user relative to business
locations, demographic information of the end user,
collection/window development by the end user, content added by the
end user, communications with merchants, keyword analysis
user-generated content and/or communications, and/or the like.
Based on such indicia, an end user can be qualified.
[0302] Some embodiments may employ a decision tree, checklist,
workflow, and/or the like to capture various aspects of consumer
qualification data and assess those aspects to infer consumer
qualification. Such a decision tree, checklist, and/or workflow may
incorporate any one or combination of the depicted aspects and/or
similar aspects in any desired order, according to various
embodiments. End-user qualification data can be consolidated and
processed to yield an end-user qualification score. Any one or
combination of types of end-user data may be captured, analyzed,
and qualified.
[0303] The system 102-2 may receive and process data regarding an
end user in implementing the end-user data capture process 1902. In
some embodiments, the system 102-2 may analyze any information
received from an end user, which information may be associated with
the end-user account and retained by the system 102-2 to provision
orchestration service features to the end user. As discussed
herein, certain embodiments may use a client application installed
on the end-user computing device 205 to facilitate data capture.
The end-user data capture process 1902 may include any one or
combination of various embodiments as discussed herein that gather
information.
[0304] Having end-user data, the system 102-2 may implement a lead
qualification process 1904. The system 102-2 may be configured to
qualify end users in whole or in part. Though certain aspects of
end-user qualification 1900 are depicted as being performed by the
system 102-2, the processes for qualifying end users may, in some
embodiments, be performed in whole or in part by a client
application 351 installed on the end-user computing device 205
and/or the provider computing device 207.
[0305] Some embodiments may qualify an end-user according to a
graduated scale. Any suitable scale may be used in various
embodiments. In some embodiments, a scale could entail a
categorization scheme 1906, with any suitable categories. For
example, as depicted in FIG. 18, categories 1804 such as very high,
high, medium, and low could be used to segment end users by
purchase consideration.
[0306] Referring again to FIG. 19, in some embodiments, a scale
could entail an end-user scoring system 1908. The end-user scoring
system 1908 could be correlated to the category scheme in some
embodiments, such that certain scores correspond to certain
categories. Some embodiments may score an end user with a numerical
expression, for example, an end-user score. An end-user score may
be an assessment of an end-user's potential to engage a merchant
and conduct business. Accordingly, an end-user score may indicate
which end users are more likely than others to bring in business,
thus providing a quantitative estimate of the probability that a
given end user will provide business. By way of example without
limitation, a scale could include a range of end-user scores from 0
to 100, or from 0 to 1,000, with the high end of the scale
indicating greater probability. Some embodiments may use methods of
statistical analysis to derive an end-user score. Various
embodiments may determine an end-user score based on any one or
more suitable quantifiers.
[0307] In some embodiments, the system 102-2 may implement an
end-user data logging process 1910 which gleans data pertinent to
qualification from end-user data associated with the end-user
account. The system 102-2 may generate and maintain an end-user
qualification profile that may include any suitable qualification
information corresponding to a particular end user. As indicated by
block 1912, any suitable end-user qualification information of
interest may be surfaced, for example, by way of the merchant
dashboard 1800. For example, information about end users that have
added a particular provider to collections could be compiled,
analyzed, formatted, and/or otherwise processed to window any
analytics of interest.
[0308] In some embodiments, the system 102-2 may implement business
rules 1914 to take action based at least in part on the end-user
qualification. The provider advertising with the
orchestration/listing service could be charged based on the
end-user qualification 1916 in some embodiments. The account
management/billing module(s) 112(f) could implement a code system
by which a provider is charged based on the end-user qualification.
For example, a provider could be charged differently based on
whether end-users are more or less qualified. The charging process
could be a performance-based system where charges based on an
addition of a provider to an end-user collection and/or based on
end-user actions taken with respect to the particular provider
thereafter.
[0309] In some embodiments, the charges could be based on end-user
score. Charges could be proportional to end-user score in some
embodiments. Charges could be applied contingent on one or more
thresholds. For example, a minimum threshold could be employed,
where an end-user score not meeting the minimum threshold could
result in no charge. An end-user score above the minimum threshold
could result in a charge. The charge could be based on one or more
score bands, for example, one or more score bands above the minimum
threshold. By way of example, an end-user score above a 50% minimum
threshold could be correlated to quartile bands. A discounted
charge could be applied based on an end-user score correlated to a
50-75% band. A full charge could be applied based on an end-user
score correlated to the 75-100% band. Some embodiments could
implement a proportional charge, such as an end-user score
correlated to 75% could result in a charge of 75% (or some other
proportion) of the full charge.
[0310] FIG. 20 depicts a functional block diagram 2000 of certain
aspects of end-user data capture, analytics, and qualification, in
accordance with certain embodiments of the present disclosure. The
criteria for qualifying consumers may take into account the extent
of end-user interaction. A greater extent of interaction could
increase a ranking assigned to a particular user. The user
interaction considered may include one or more of interaction
directed to the merchant, the business area of the merchant, and/or
other merchants related to the merchant's business area. The
criteria for qualifying consumers may take into account the extent
of user interaction with a collection and/or information window
associated with the merchant, the business area of the merchant,
and/or other merchants related to the merchant's business area. The
qualification of a particular consumer may also be weighted as a
result of keywords being used in communication and/or commentary
associated with a collection and/or window related to the
merchant--e.g., the keywords may indicate a user ready to buy,
engage services, and/or otherwise conduct business. The
qualification of a particular consumer may be weighted more heavily
as a result of indicia that the consumer made a purchase, engaged
services, and or otherwise conducted business.
[0311] As indicated by block 2002, in some embodiments, location
information may be captured to provide an indication of the end
user's location. As discussed herein, various embodiments may
employ any one or combination of methods of capturing location
information, including but not limited to, gathering location
information via any one or combination of the end-user
orchestration platform profile, the communication device 205, 300,
such as the device GPS capabilities, access points, third-party
data sources, determining the area code associated with the device,
differentiating between whether a caller uses a landline or
wireless network, receiving explicit location information with one
or more search requests, inferring location information from one or
more search requests, and/or the like. Gathering of location
information may be facilitated by the application 351 of the
end-user device sending tracking information to the system 102. In
some embodiments, gathering of location information may be
performed before an end user places a call, for example, via the
mobile application. Various location quantifiers could be assigned
to a user based on the business of interest. For example, with some
businesses, proximate location of an end user is important, say,
for a plumber for example. With other businesses, proximate
location of an end user may not be so important, or the fact that
an end user travels frequently may be more important some
businesses, for example, businesses which tailor to travelers. As
an example, a number of points could be assigned to the end user
based on an identification of the importance of proximity to the
business/category of interest and the location information gathered
for the end user.
[0312] In some embodiments, as indicated by block 2004, an end
user's interaction on the orchestration platform may be captured as
data of interest. For example, as indicated by blocks 2006 and
2008, in some embodiments, end-user interaction with the mobile
application 351 and/or website provided by the system 102 may be
captured. As indicated by block 2010, the user interaction may
involve one or more searches. A user, for example, may spend
significant time searching for businesses relating to a certain
category. As indicated by block 2012, the amount of time and/or the
number of searches may be taken into account as an indicator of
relatively greater interest. The time spent searching a particular
category of service providers and/or the number of searches could
be correlated to an increased indicator of interest in any suitable
manner. Merely by way of example, a number of points could be
assigned to an end user based on the time spent searching and/or
the number of searches. Various interest quantifiers could be
assigned to an end user based on search time in a proportionate
manner. For example, a number of points could be assigned for every
minute of search time. Various interest quantifiers could be
assigned to an end user based on the user meeting any one or
combination of various thresholds of search time. As an example, a
number of points could be assigned after the end user accrues 5
minutes of search time.
[0313] As indicated by block 2014, in some embodiments, a search
pattern may be taken into account as lead data of interest. The
search focus or non-focus may be considered. Certain embodiments
could differentiate between searches to detect a pattern of
searches corresponding to a given category of searches. For
example, an end user might spend 5 minutes of searching, viewing
results, linking to provider websites, reading reviews, etc., all
related to a particular category of service providers, say plumbers
in a particular geographic area. Such search time could be
distinguished from non-focused searching, such as searching related
to various categories, which might not be related. In such cases,
no additional points or a lower number points may be assigned.
[0314] As indicated by block 2016, in some embodiments, end-user
curation may be taken into account as end-user data of interest.
End-user curation 2016 may be assessed in terms of curation time
2018. For example, time spent arranging and customizing a
collection and/or information window maybe taken as a higher level
of interest and be assigned points accordingly. Time spent
accessing, editing, and/or augmenting a collection and/or
information window may be taken as an indication of interest and be
assigned points accordingly. End-user curation 2016 may be assessed
in terms of curation instances 2020. For example, instances if
arranging, customizing, editing, and/or augmenting a collection
and/or information window may be gauged to determine interest.
End-user curation 2016 may be assessed in terms of user-added
content 2022. User-added notes and/or reviews, for example, could
be assigned certain points, with more extensive notes/reviews being
assigned a greater amount of points. As another example, instances
of user-added photos and/or images may be assigned points
accordingly. User-added photos and/or images that correspond to
receipts, invoices, warranties, etc. may be identified as evidence
that the end-user has transacted business with a merchant, thus
evincing a greater level of interest. Other user-added content that
could be assessed may include any other suitable user added content
discussed herein, including ratings indicia, preference indicia,
etc.
[0315] As indicated by block 2024, in some embodiments, an end
user's interaction with one or more other merchants via the
orchestration platform could be assessed and assigned points
accordingly. For example, if a user adds a merchant as a
collaborator or otherwise allows a merchant to view a collection,
then that situation may be taken as an indicator of a high level of
interest. As another example, if a user communicates with a
merchant via the platform (e.g., via a type of click-to-contact
link, chat window, email, text, and/or like means that is
facilitated by the orchestration platform and/or links thereto),
that likewise can be taken as an indicator of interest. An end
user's interaction with one or more other merchants could be
assessed based on instances, repeated engagements with specific
merchants, frequency of interaction (with merchants of a certain
business type, e.g.), duration of interaction, type of interaction,
and/or the like.
[0316] As indicated by block 2026, in some embodiments, an end
user's collection/window share activity could be assessed and
assigned points accordingly. Instances of sharing could be assessed
based on numbers of occurrences 2028, form of sharing 2030, the
size of the audience 2032 to whom the information shared, the
platform 2034 to which the information shared, feedback on shares
2036 by others (e.g., in the form of preference indicia, reviews,
re-shares, etc.), and/or like. As indicated by block 2038, in some
embodiments, an end user's collaborator activity could also be
assessed, with instances/numbers of collaborators being taken into
account.
[0317] As indicated by block 2040, in some embodiments, an end
user's public collection share activity could be assessed and
assigned points accordingly. Instances of collection publicizing
could be assessed based on numbers of occurrences, numbers of
followers, instances of copying, feedback on public collections by
others (e.g., in the form of preference indicia, reviews, etc.),
and/or like.
[0318] With regard to any of these bases for qualification or
similar bases, scoring or otherwise assigning significance to such
bases may be implemented to any suitable level of granularity. For
example, with respect to feedback on shares 2036, type of feedback
and extent of feedback can be differentiated and accorded various
levels of significance. As a specific example, a simple indication
that a friend/connection of the end user likes something that the
end user shared on a social/business network may be accorded less
significance than a re-share and/or comment by a friend/connection.
Similarly, not all comments need be treated the same. In some
abundance, keyword analysis such as described herein may be used to
assess the significance of comments made by
friends/connections.
[0319] Accordingly, various embodiments according to the present
disclosure may provide for windowing end-user analytics that can
provide market insights to providers. Moreover, various embodiments
may qualify end-user aspects of the orchestration platform so that
expansion, collaboration, sharing, and/or other use of the
orchestration platform may be monetized (e.g., based on end-user
qualification analytics). Such monetization can be used to
incentivize sharing, marketing efforts, endorsement efforts, and/or
other use of the orchestration platform. And, the incentive
position may take the form of a reward system, be it monetary or
otherwise.
[0320] Referring again to FIG. 18, the purchase consideration data
1802 about end users who have added the particular merchant to
their collections could be presented based on the end-user
qualification information analytics. The purchase consideration
data 1802 could correspond to any time period(s). Additionally, the
purchase consideration data 1802 could compare to past data. The
past data could also be presented, however, like in the example
depicted, differential information 1806, such as percentage
increases/decreases, could be presented. In addition to segmented
analytics information about multiple end users, any suitable
information about individual end users, such as a qualification
score, underlying qualification data, and/or the like, could be
viewable, for example, responsive to user selection of one or more
user-selectable options.
[0321] Other end-user analytics that could also be presented may
include purchase information 1808. For example, the purchase
information 1808 may take into account purchases made by respective
end users. A last purchase of each respective end user may be taken
into account, and a user distribution of numbers of end users 1810
who have made last purchases over any suitable time period of
interest 1812 may be presented, like in the example 1808 indicated.
In various embodiments, the purchases considered could be purchases
made with the particular merchant, with other competitor merchants
that end users have added to a collection and that are in the same
business category of the merchant, and/or with other
collection-added merchants generally.
[0322] The dashboard 1800 may provide one or more user-selectable
time options. A time period selection feature may be configured to
allow for selection of a time period for which to view certain
performance metrics. Past performance, current performance, and
projected options may be provided. Past performance could show
performance metrics for past week, month, billing period, three
months, six months, year, etc. Current performance could show
real-time performance in the context of recent activity such as the
last hour, day, week, etc. Projected performance could show
extrapolation of past and/or current performance data into future,
such as any coming time period. Projected performance could be
based on any suitable factor, including aggregate performance of
competitors in the market, publisher/platform performance, market
data for a particular location, and/or the like.
[0323] Other end-user analytics that could also be presented may
include reach information 1814. The reach information 1814 may
include information about the number of users reached. The reach
information 1814 could indicate one or more of users reached by a
particular merchant, by merchants corresponding to a particular
category (e.g., a service category, a product category, any
suitable business category, etc.), by merchants corresponding to a
particular locale, and/or the like. Such reach information 1814
could be graphically differentiated along any suitable lines. The
reach information 1814 could be refined to expose reach information
for any suitable time period, which time period could be
user-selectable. The reach information 1814 could be differentiated
based on specific platforms used. For example, users reached via
the orchestration platform could be distinguished from users
reached via social network connections. The reach information 1814
could include any share activity described herein. The reach
information 1814 could reflect users who have specifically added a
particular merchant to a collection. The reach information 1814
could also reflect users who have visited a particular merchant
website, contacted a particular merchant, and/or otherwise linked
to a particular merchant via the orchestration platform. Any one or
combination of reach information 1814 items could be qualified
according to any suitable bases, e.g., demographic information,
visit number, value of customer, potential value of customer,
quality of leads, social network connections, customer score, etc.
And, such qualification could be graphically
presented/distinguished in any suitable manner.
[0324] Other end-user analytics that could also be presented may
include share activity information 1816. Any suitable share
information may be gathered, analyzed, and windowed. The share
activity could correspond to sharing of window information for a
particular merchant, which could correspond to sharing based on an
individual window and/or sharing based on a collection that
includes window information for the particular merchant. The share
activity could correspond to sharing between users of the
orchestration platform. The share activity could correspond to
sharing by a user of the orchestration platform to a non-user via
any one or combination of the various means described herein. In
the example depicted, the share activity information 1816 may
correspond to sharing via one or more social networks.
[0325] The share activity information 1816 may be segmented by
geography, like in the depicted example. While the example depicts
segmentation by state, any suitable geographic segmentation may be
employed in various embodiments, including neighborhood, city,
metro area, county, and/or the like. In some embodiments, one or
more user-selectable options may be provided for user-specified
geos of interest to analyze data corresponding to the
user-specified geos. For example, a user may be able to indicate a
range, such as a radius of X miles from specified location of
interest. In some embodiments, a user could indicate an area of
interest with any suitable parameters, e.g., including one or more
counties, municipalities, zip codes, distances from reference
points, etc. In some embodiments, a user-selectable map interface
1818 may be presented. Some embodiments may enable a merchant user
to define an area by selecting one or more points on the map
interface 1818. For example, any predefined service areas, such as
zip codes and/or the like, could be presented on the map for
selection. The map interface could allow a user to define a
perimeter of a service, e.g., by drawing on the map with a line
drawing tool, cursor, finger/stylus contact with a touch interface,
selection of perimeter boundaries such as roads, rivers, etc.
Hence, share indicia may be location-specific and windowed in any
suitable degree of granularity to provide enhanced relevance.
[0326] In the example 1818 depicted, user-selectable options may be
presented for selecting share activity information by state.
Consequent to user selection, geo-specific information 1820 may be
presented. The geo-specific information 1820 may include any
suitable details regarding the share activity. The share activity
details may include one or more of platforms 1822 to which shares
were directed, locations 1824 associated with the sharing end user,
dates 1826 on which the shares occurred, times 1826 at which the
shares occurred, distinctions 1828 as to whether the shares were
individual business shares or collection shares, information on
re-shares 1830, specifics as to collections shared 1832 (which may
include one or more of comments received, ratings received,
approval/disapproval indicia received, re-shares be a particular
platforms, etc.), and/or the like. The share information presented
with the merchant dashboard 1800 may be presented in any suitable
manner. User-selectable options may be provided for
exporting/converting the share information, in whole or in part,
and to any desired format, including spreadsheets and other
commonly used document formats.
[0327] FIG. 21 illustrates one embodiment of an offer manager 2100
for an advertising platform that may correspond to a provider
interface(s) 700, in accordance with certain embodiments of the
present disclosure. The offer manager 2100 may be provided in
conjunction with the merchant dashboard 1800. The offer manager
2100 may allow for the creation of an advertising profile and may
be configured to facilitate marketing automation. With an
advertising profile, a merchant may be able to indicate specific
offer information for provisioning to end users of the
orchestration platform. An advertiser profile may include
persistent offer provisioning information that is maintained for
subsequent offer provisioning based on one or more trigger events.
An advertiser profile may be retained in the one or more
repositories 268.
[0328] One or more user-selectable options 2102, which may include
workflows, may be provided via the offer manager 2100 to allow a
merchant to create and/or designate certain offer information. In
some embodiments, one or more templates 2104 may be provided for
selection and/or input of desire details. Various coupon templates
could be provided by the system 102 and presented to allow a choice
of one or more templates. The various coupon template options could
differ in terms of style, content, form, and/or the like. A coupon
template 2104 could include fields for entry of information by the
merchant. For example, the merchant may have an option to designate
a service and/or product, offer/discount information, start date,
expiration date, terms and conditions, and/or any suitable
information to facilitate offer information provisioning. In some
embodiments, the system 102 may at least partially populate a
template with merchant information based at least in part on
listing information and/or previous offer information already
retained for a specific merchant. For example, a template could be
pre-populated with merchant information such as business name,
business location, and/or the like. In cases where there are
multiple options for a given advertiser (say, multiple locations,
multiple goods/services, and/or the like), the system 102 could
identify those options and facilitate user-selectable options for
the merchant to designate.
[0329] In some embodiments, a merchant may upload information for
use in offer provisioning, and the offer manager 2100 could be
configured to provide user-selectable options to facilitate such
uploading. A merchant could upload any suitable offer information
in any suitable form in various embodiments. For example, a
merchant could upload an electronic coupon, images and/or other
graphical/video data, audio data, and/or the like. Such uploaded
data could correspond to any suitable advertising content.
[0330] In some embodiments, a merchant may be provided with options
to designate certain business rules 2106 for offer information
provisioning. Such business rules 2106 could specify one or more
temporal conditions, such that provisioning may depend on one or
both of temporal condition(s) and trigger events. Temporal
conditions could include one or more of time parameters, day
parameters, date parameters, location parameters, and/or the like
that could be conditions for offer provisioning. Business rules
2106 specifying time parameters could include, e.g., rules for
handling provisioning in view of a time of day when a trigger event
occurs. Business rules 2106 specifying day parameters could
include, e.g., rules for handling provisioning in view of a day of
the week when a trigger event occurs. Business rules 2106
specifying date parameters, e.g., could include rules for handling
provisioning in view of a date on which a trigger event occurs. Any
suitable interface features, including input fields, telephone
dialer inputs, IVR inputs, and/or user-selectable clock, calendar,
and/or like GUI components could be provided to faciliate
advertiser specification of business rules in various
embodiments.
[0331] Business rules 2106 specifying location parameters could
include, e.g., rules for handling provisioning in view of a
location identified for an end user. Accordingly, with an
advertiser profile, a merchant may be able to indicate specific
areas for which particular offer provisioning to be targeted. In
various embodiments, a target area could be specified in any
suitable manner, including, for example, by one or more counties,
municipalities, zip codes, distances from reference points, etc. In
some embodiments, a user-selectable map interface may be presented
as described herein.
[0332] Business rules 2106 specifying trigger event(s) 2108 could
include, e.g., rules for handling provisioning in view of any one
or combination of events associated with an end user's
orchestration account. For example, trigger events 2108 could
include one or more of an end user adding a business to a
collection, a forming of a new collection around a theme, an
addition of collaborator (e.g., adding a merchant as a
collaborator), otherwise allowing a merchant to have access to a
collection/window, a sharing of a collection and/or business window
with another orchestration service user, a sharing of a collection
and/or business window with a linked account (e.g., email, text
message, online social/business networking services--one or more of
which could be differentiated with distinct rules for handling
sharing with distinct accounts), a copying/following of a
collection, making a collection/window public, adding content to a
collection/window, a time period since a last activity with respect
to a business window, an end user's search relevant to a merchant
not already added to the end user's collection, an end user's
search relevant to a merchant already added to the end user's
collection, a search for other merchants (e.g., a search relevant
to a business already added to a collection of an end user, which
search could potentially turn up competitors), and/or the like. In
some embodiments, one or more trigger events 2108 could include
location parameters to allow for provisioning in view of a location
identified for an end user.
[0333] Business rules 2106 specifying a form of provisioning 2110
could include, e.g., rules for provisioning offer information via
one or more of text messages, voice notifications, push
notifications, e-mails, social/business networking services account
postings/messages, alerts with the application, and/or other any
suitable means. The offer manager 2100 may be configured to present
an offer that a merchant has set up for previewing 2112. In some
embodiments, the system 102 may subsequently use any one or
combination of merchant-specific business rules 2106 to identify
appropriate offer information options for one or more of a
particular end user, trigger event, and/or conditions. In some
embodiments, the system 102 may be configured to automatically
provide offer information to an end user based on the
merchant-specific business rules 2106 on behalf of the particular
merchant without further merchant intervention. In some
embodiments, the system 102 may be configured to present
automatically identified offer information (i.e., identified based
on the merchant-specific business rules 2106) for merchant
selection so that the merchant may have the choice as to whether to
dispatch the offer information.
[0334] In some embodiments, the system 102 can select pertinent
offer information for transmission, select a delivery manner/form,
and/or transmit pertinent offer information responsive to a trigger
event based at least in part on the advertiser profile. In some
embodiments, the system 102 may be configured to provide one or
more offer information options to a merchant based on the
merchant-specific business rules 2106. Accordingly, the system 102
can filter various offer information provisioning options with the
merchant-specific business rules and present an appropriate subset
of those options to a merchant for merchant selection.
[0335] In some embodiments, the offer manager 2100 may include a
dashboard summary 2114 configured to present information and
user-selectable options for offers retained by the system 102 for
the merchant. The dashboard summary 2114 may present information
such as offer creation date 2116, offer identification information
2118, specific form of provisioning 2120, offer status 2122, offer
expiration 2124, and/or any other appropriate offer information. In
some embodiments, the offer manager 2100 may be configured to
present offer suggestions. The offer suggestions could prompt the
merchant to create offers that the merchant has not already
created. For example, offer manager 2100 may identify potential
trigger events related to the merchant (e.g., an end user adding
the merchant to a collection), and may query the merchant to
whether create an offer in view of the potential trigger
events.
[0336] Accordingly, certain embodiments may provide a merchant with
a way to communicate with end users that are not only potential
customers, but also potential promoters of the merchant. Certain
embodiments may allow a merchant to market events, product
offerings, and/or service offerings to end users.
[0337] FIG. 22 shows a block diagram of a method 2200 of assisting
a user to identify one or more businesses of interest, in
accordance with certain embodiments of the present disclosure. One
or more engines 243 may be configured to harvest and qualify
end-user data. According to certain embodiments, the method 2200
may begin as indicated by block 2202.
[0338] Teachings of the present disclosure may be implemented in a
variety of configurations. As such, the order of the steps
comprising the method 2200 and other methods disclosed herein may
be shuffled in any suitable manner and may depend on the
implementation chosen. Moreover, while the following steps (and
those of other methods disclosed herein) may be separated for the
sake of description, it should be understood that certain steps may
be performed simultaneously or substantially simultaneously.
[0339] As indicated by block 2202, end-user data may be gathered.
The end-user data gathering may include capturing interest data, as
indicated by block 2204. The capturing of interest data may include
any one or combination of interest data capturing features
disclosed herein.
[0340] The end-user data gathering may further include capturing
demographic data, as indicated by block 2206. The capturing of
demographic data for particular end users could be a part of
interest data capturing. Any suitable demographic information could
be harvested in various embodiments, for example, information about
income level, education level, lifestyle, age, family/household,
home ownership, etc. In some instances, demographic data could be
provided by an end user as part of profile setup and/or development
with the platform. Demographic data could be inferred from interest
data and/or collection information, in some embodiments. For
example, a user who has a collection directed to children or who
has added a particular child-directed business to a collection
(e.g., a pediatric dentist) could be taken as an indication that
the user has or is otherwise associated with one or more children.
In some embodiments, demographic data could be harvested from
accounts that a user has linked with the system. In some
embodiments, demographic data could be gathered from one or more
third-party data sources 110.
[0341] The end-user data gathering may further include capturing
other consumer-specific data, as indicated by block 2208. Any
suitable consumer specific information could be harvested in order
to allow for characterization of a particular user. For example,
such consumer-specific information could include information on
whether the consumer is proximate to life milestones such as a
graduation, a new job, a wedding, childbirth, purchasing a home,
etc. Consumer-specific information could include particular
purchases or buying habits of the consumer, in some embodiments.
Consumer-specific information could be inferred from interest data
and/or collection information, in some embodiments. In various
embodiments, demographic data could be harvested from accounts that
a user has linked with the system and/or gathered from one or more
third-party data sources 110.
[0342] As indicated by block 2210, particular end users may be
qualified based at least in part on the end-user data gathered. The
consumer data may be analyzed with respect to individual users. One
or more engines 243 may be configured to classify end users into
one or more categories. In some embodiments, the engines 243 may
include a classifying engine to classify end users into one or more
categories. In some embodiments, the orchestration engine 256 may
be or include a classifying engine. A classifying engine may
classify each of a plurality of end users into at least one
category of a set of categories that represent classifications of
end users based at least in part on one or more sets of attributes
defined for classifying various end users.
[0343] The end-user qualification may include any one or
combination of qualification features disclosed herein. As
indicated by block 2212, an end-user may be classified into one or
more categories based at least in part on the end-user data. Any
suitable categories may be employed for characterization of end
users. By way of example, and users may be categorized according to
interests, demographics, consumer habits, life stages/milestones,
and/or the like to any suitable degree of granularity.
[0344] As indicated by block 2214, information relating to business
recommendations may be gathered. Such information may include
information pertinent to end users having indicated a preference
for particular businesses. Preference indicia may include users
having indicated a preference for particular businesses, ratings
for particular businesses, and/or the like. Business recommendation
information may be aggregated from the platform. For example, such
information could include instances of businesses being added to
collections, being shared, being copied, being rated, and/or the
like.
[0345] In addition or alternative, business recommendation may be
aggregated from outside the platform. Some embodiments may identify
business recommendation information based on user indications of
preference (such as positive rating business, an indication of
liking the business, friending or otherwise linking to a business,
sharing business information with others, etc.) that the user has
made via webpages and/or social media. Business recommendation
information could be identified by approval/disapproval indicators,
which may be in form of likes, dislikes, thumbs-up, thumbs-down,
star-scale ratings, number-scale ratings, fan indications, affinity
group association, messages to businesses, and/or the like. The
approval/disapproval indicators could be those associated with the
user's profile and/or profiles of friends/associates/connections of
the user.
[0346] Information relating to business recommendations may further
include location information pertinent to the businesses and/or
users associated therewith. Information relating to business
recommendations may further include the date and/or time
information associated with the pertinent activities (e.g.,
additions to collections, shares, likes, etc.). The information may
include any suitable information pertaining to explicit and/or
implicit indicia of preference for businesses, interest in
businesses, ratings of businesses, and/or like, such as the
examples disclosed herein.
[0347] As indicated by block 2216, information relating to business
recommendations may be qualified. As indicated by block 2218,
businesses may be classified into one or more categories based at
least in part on the information relating to business
recommendations. Information about recommendations could be
gathered, analyzed, and classified according to any suitable
bases.
[0348] As indicated by block 2220, one or more indexes may be
created based at least in part on similarities between businesses.
The one or more indexes may link businesses based on the
classifications and associated recommendation-specific information.
By way of example, the one or more indexes may associate businesses
based at least in part on any one or combination of the
following.
[0349] Information with respect to a particular business may be
analyzed in order to identify one or more business attributes. In
some embodiments, the system may include a matching engine that can
receive business information, identify attributes of the business
based at least in part on the business information, and match the
business to one or more categories based on category information
retained in a repository. The business may be matched to one or
more categories that each represent classifications of business
sharing common attributes. In some embodiments, one or more
taxonomies that map particular profile information to particular
categories may be used in correlating business profile information
with one or more categories. The business could be classified
according to products and/or services that the business provides.
The business could be classified according to location, for
example, a market that the business serves and/or a physical site
of the business. The business could be linked to location
identifier(s) (such as a directory code(s) relevant to the business
listing of the suggestion); geo coordinates corresponding to the
business (e.g., latitude and longitude); and/or the like.
[0350] The indicia of preference for each business may be
quantified and qualified according to the form of preference
indicia (e.g., additions to collections, shares, likes, etc.). The
various forms could be qualified differently to assess varying
degrees of preference. For example, sharing a business that a user
has added to a collection could indicate a greater degree of
preference than simply adding the business to the collection.
Likewise, a user actually communicating and/or engaging with the
business may indicate a greater degree of preference than simply
adding the business to the collection.
[0351] Aggregated recommendations may be classified according to
user types/categories. In a set of embodiments, one or more
collaborative filtering algorithms may be employed to define
similarities between businesses based at least in part on
demographic and/or consumer data. Businesses may be classified
according to demographic data for particular end users that have
indicated preferences for the businesses. For example, types of
users that predominantly recommend certain businesses may be
identified based at least in part on income level, education level,
lifestyle, age, family/household, home ownership, etc. Types of
users that predominantly recommend certain businesses may be
identified based at least in part on user proximity to life
milestones (such as a graduation, a new job, a wedding, childbirth,
purchasing a home, etc.) and/or particular purchases or buying
habits.
[0352] Information about user identifications associated with
preference indicia with respect to businesses may be retained. For
example, information about multiple relationships between user
identifications may be retained. Such relationships could include
relationships of users of the orchestration platform, of a social
network, of a business network, of an affinity group, and/or the
like. Accordingly, various embodiments aggregate recommended
businesses and user identifications of people that recommend
businesses in any one or combination of forums. The relationship
information could include relationship graphs about relationships
between user identifications via the orchestration platform and/or
other forums. For example, the relationship information could
indicate which users are related as collaborators on the platform,
which users are related based on followings via the platform, which
users are related as friends or connections via the platform and/or
the other forums, which users are related as indirect connections
through intermediate users, which users are members of affinity
groups, etc. Mapping of related user identifications may be
retained to facilitate identification of multiple user
identifications associated with a particular user. For example, a
user of the orchestration platform may have one user identification
for logging into the platform and a different user notification for
logging into a linked account.
[0353] In some embodiments, one or more of the data repositories
and/or indexes may be updated periodically. Updating may occur at
any suitable time. Updating may capture one or more of listing name
changes, new business openings, business closings, preference data
changes, and/or the like.
[0354] Certain embodiments may ensure or improve data integrity
based on assessing frequencies for particular preferences over
time. For example, preference distribution can change over time.
There can be seasonal distribution changes, weekly distribution
changes, and daily distribution changes. Analyzing the
distributions may identify popular changes over a particular time
period, such as the last 60 or 90 days. For example, analyzing the
distributions may identify: how many preferences are indicated for
a particular business in a particular area; how many businesses
correspond to a particular user types in a particular area; how the
changes impact the collaborative filtering analysis; and/or the
like.
[0355] FIG. 23 is a block diagram that illustrates an example
method 2300 of certain recommendation features for particular end
users, in accordance with certain embodiments of the present
disclosure. One or more engines 243 may be configured to facilitate
the recommendation features. As indicated by block 2302, end-user
information for a first end user may be analyzed with respect to
qualified business information to identify a set of one or more
businesses based at least in part on the end-user qualification.
The user may be identified based on user identification information
and/or device identification information for a device that may be
associated with a user.
[0356] Information related to the user and/or specific to the user
may be gathered and analyzed in view of the one or more indexes to
match the user with a set of one or more recommendations. Analysis
of information about an identified user could entail comparing the
user information to information about other users (e.g., to
determine user similarities) in order to recommend businesses
(e.g., others' favorite or otherwise preferred businesses) for the
identified user to review.
[0357] In some embodiments, the one or more engines 243 (e.g., a
recommendation engine 2402 discussed further herein, which may
include a matching engine) may be configured to match the user to
one or more businesses based at least in part on correlating
categories. The matching could, in some embodiments, be based at
least partially on comparing user attributes/categories with
business attributes/categories. For example, they may be matched
according to preferences, certain biographical information,
demographic information, interests, location information, etc.
[0358] Any suitable correlation process may be employed. A scoring
system could be correlated to the category scheme in some
embodiments, such that certain scores correspond to matches of
certain categories. Some embodiments may score a match with a
numerical expression, for example, a match score, with higher
scores being assigned to higher correlations of user
attributes/categories with business attributes/categories. A high
correlation may be identified using any suitable qualification
scheme (e.g., a score threshold, a score ranking, etc.).
[0359] As indicated by block 2304, one or more recommendations for
the user may be generated as to at least one business from the set
of one or more businesses. The one or more engines 243, for
example, may be configured to assess matches of the user and one or
more businesses. A recommendation could be based on the highest
correlation between the user and a business. As part of generating
the recommendation, descriptive content indicative of a business
may be selected, as indicated by block 2306. As indicated by block
2308, the descriptive content may be transmitted to a computing
device and/or account associated with the user.
[0360] As indicated by block 2310, one or more user-selectable
options to indicate an interest in the recommended business may be
presented for selection by the user. Options could be provided for
a user to add the recommended business. Descriptive content
indicative of the recommended business may be provided with one or
more user-selectable options and/or may be revealed with user
selection of an option. Options could also be provided to allow the
user to indicate disinterest in the recommendation and/or further
recommendations.
[0361] In some embodiments, descriptive content could be anonymized
so that one or more specific recommendations are offered to an
individual user without revealing identities of other users from
whom the one or more specific recommendations are derived. Though
anonymized, a specific recommendation could be offered with a
general characterization of the other users. As one example out of
many possibilities, a recommendation for a dog owner in Glendale,
Calif., could indicate that other dog owners in Glendale have a
preference for a particular veterinarian.
[0362] In some embodiments, descriptive content may not be
anonymized. Certain users of the platform may have public
recommendation information. Real estate agents, for example, may
curate a collection of local service providers relevant to those
who have bought or in the process of buying a house in a particular
area (such as recommended inspectors, handymen, and the like) and
may wish to have such recommendations public. Accordingly,
recommendations may not necessarily be anonymized.
[0363] In some embodiments, the recommendation may include a
customized collection of advertising information for businesses.
The customized collection may be automatically generated by the
system for an individual user based on the analysis. The customized
collection may be presented to the user as a curated collection
with user-selectable options that allow the user to select and/or
de-select recommended businesses for retention in association with
the user. For example, the user may select one or more recommended
businesses for additions to a new or existing collection of the
user. As another example, the user may select a recommended
collection for addition as a new collection or for addition to an
existing collection.
[0364] As indicated by block 2312, end-user actions may be
monitored consequent to the recommendation being provided. Any one
or combination of actions and determinations may be correlated to
indicia of greater or lesser interest in any suitable manner (e.g.,
based on a scoring scheme). As indicated by block 2314, an
indication/disinterest of user interest by the user responsive to
the recommendation may be processed. The user adding the
recommended business to a collection may be taken as an indication
of user interest. Alternatively, the user may indicate disinterest
in the recommendation and/or further recommendations by selecting
the appropriate option.
[0365] As indicated by block 2316, the end-user responses to
recommendations could be monitored for implicit indicia of user
interest. For example, it may be determined whether the user
ignores the recommendation for a particular period of time. If the
user has not taken action with respect to the recommendation after
a threshold of time, such inaction may be taken as an indication of
disinterest.
[0366] As another example, it may be determined whether the user
ultimately removes the recommended business from a collection after
having added the business. This may be deeded as an indication of
disinterest in the business. Other examples may include monitoring
for indications that the user engages with the business (e.g.,
through communication links provided by the platform), develops
notes regarding the business, enlist collaborators for a collection
including the business, and/or shares the business information with
others, which actions may be taken as indications of interest in
the business.
[0367] As indicated by block 2318, profile information associated
with the user may be adjusted based at least in part on the
monitoring. For example, the profile information may be updated in
view of positive responses to the recommendation (e.g., adding the
recommended business to a collection, engaging with the business,
sharing the business information, etc.). Thus, in certain
instances, additional recommendations can be made for the user
periodically or at any suitable frequency, taking into account the
addition of the business to the user's collection, as indicated by
block 2320.
[0368] The profile information could be updated in view of negative
responses to the recommendation. The system can disable the
recommendation features based on the explicit rejection of the
recommendation feature by the user. Instances of the user
indicating disinterest in particular recommended businesses may be
considered for future recommendations to adjust to the user
preferences.
[0369] The system could also take into account implicit negative
responses. For example, repeated instances of the user ignoring a
certain number of recommendations may be taken as a lack of
interest in recommendations, generally, and the generation of
further recommendations could be halted indefinitely or for certain
period of time, so as not to provide unwanted features to the user
of the platform. A threshold number of ignored recommendations over
a certain period of time, without the user having taken any action
on any recommendation, could be employed to determine when to halt
the recommendation provisioning process with respect to the
particular user.
[0370] FIG. 24 depicts a functional block diagram of certain
aspects of recommendation generation 2400, in accordance with
certain embodiments of the present disclosure. Various embodiments
may employ any one or combination of various methods of determining
recommendations for particular end users based at least in part on
user characteristics. In a set of embodiments, recommendations
could be based at least in part on demographic information.
Recommendations could be based at least in part on any suitable
consumer-specific information that may be cluster-based consumer
data and/or user-targeted consumer data. In some embodiments, one
or more aspects of the functional model 2400 may correspond to
assessing/ranking/scoring relevance of recommendations in various
embodiments discussed herein. In some embodiments, the functional
model 2400 may be implemented as a decision tree.
[0371] One or more engines 243 may be configured to provide a
recommendation engine 2402. The recommendation engine 2402 may
analyze end-user information 2404 for a first end user and
aggregated, classified business information 2406 to identify a set
of one or more businesses. The recommendation engine 2402 may
generate one or more recommendations, which may correspond to block
2304 of FIG. 23.
[0372] Certain embodiments may identify recommendations based at
least partially on similarities of characteristics of a first end
user and characteristics of other users from whom the business
information 2406 has been derived. Any suitable algorithm for
assessing similarity may be employed. Some embodiments may identify
intersections between multiple sets of characteristics. Having set
intersections identified, the intersections may be compared. A
greater extent of an intersection may be an indication of a greater
degree of similarity between the users. In some embodiments, the
sets may be ranked according to the extent of the intersections.
Any one or combination of the following aspects of end-user
information 2404 and aggregated, classified business information
2406 may be used by the recommendation engine 2402 generate
recommendations.
[0373] In some embodiments, end-user location information 2408 may
be processed. The location information 2408 may correspond to
location information for the user previously retained in
conjunction with the platform as an area of interest for the user,
such location information having been identified by the user and/or
derived from user selections made with the platform. In some
embodiments, the location information 2408 may include location
information gathered by the system via the end-user computing
device 205. Thus, the user's location may be updated, for example,
as the user travels to various locations. While the user may
generally be associated with a specific locale, certain embodiments
may provide recommendations that are directed to a different
location to which the user travels. The recommendation engine 2402
may use the end-user location information 2408 with location
filtering 2422 to identify location-relevant business
recommendations. Recommendations could be scored based on proximity
to a relevant location of interest of the user.
[0374] In some embodiments, end-user platform interaction 2410 may
be processed by the recommendation engine 2402. This may correspond
to the data capture and analysis of user interaction further
described herein. The end-user platform interaction 2410 may
include information on end-user collections 2412 and end-user
interest information 2414. For example, the current state of one or
more of the user's collections could be analyzed as input to
determine businesses already associated with the collections,
similarities with businesses not currently associated with the
collections, similarities with other users, and/or the like.
[0375] Further, the end-user interest information 2414, described
further herein, may likewise be used as input to determine matching
businesses and users. The end-user collections 2412 and end-user
interest information 2414 may be used by the recommendation engine
2402 in conjunction with collection filtering 2424, which could
include one or more collaborative filtering algorithms and/or
indexes, to determine similarities between the first end user and
other users and their business preferences. For example, say a set
of collection/interest information for the first end user includes
five characteristics, recommendation engine 2402 may determine that
a threshold number of other users sharing those five
characteristics have indicated a preference for a particular
business in the relevant location that the first end user has not
already included in a collection. Recommendations could be scored
based at least in part on the extent of common characteristics
shared by the first end user and the other users.
[0376] In the case that it is determined that the user travels to a
new location that is different from a location with which the user
is generally associated, it may be further determined whether
businesses in the user's current collections have additional
business sites in the new location. For example, a user may have a
business already in the user's collection that is a part of a chain
of businesses that includes an additional site in the user's
current location. In some embodiments, an identification of the
additional site in the new location may trump other recommendations
such that the additional site may be selected as a top
recommendation for the particular user. In other embodiments, the
additional site may not automatically trump other recommendations
but may be scored, perhaps relatively highly, along with other
recommendation possibilities. In some embodiments, the additional
site is a recommendation possibility may be further qualified based
on other criteria, such as frequency of user visits to the business
in the previous location (e.g., a chain business may be scored
highly if the user frequently visited the business in the previous
location).
[0377] In some embodiments, end-user relationship information 2416
may be processed by the recommendation engine 2402. The
recommendation engine 2402 may select businesses based at least in
part on the end user relationship information 2416 and relationship
filtering 2426. Recommendations could be selected based at least in
part on a number of recommendations derived from users within a
certain degree of closeness to the first end user in one or more
relationship graphs about relationships between user
identifications via the orchestration platform and/or other forums.
Recommendations could be scored based at least in part on the
relationships between the first end user and the other users, with
various embodiments differentiating degrees of closeness and/or
forums.
[0378] In some cases, only the most relevant relationships to the
first end user are used as a basis for selecting recommendations.
For example, associated user identifications within a predetermined
maximum degree of closeness between the user identifications of the
recommending users and the first end user may be considered for
selecting recommendations. Closeness may be based on the number of
independent relationships between two users. For example, two users
may be directly related though a friendship/connection and may be
considered to have a closer relationship when they are also members
of the same group as compared to two users that do not share a
common group. Furthermore, two users that share multiple common
groups and have friendships or connections on multiple
forums/networks may be considered to be closer than those that have
fewer connections.
[0379] In some embodiments, end-user demographic information 2418
may be processed by the recommendation engine 2402 to select
businesses based at least in part on demographic filtering 2428.
The recommendation engine 2402 may determine a correspondence of
demographic information of the first end user and other users
associated with recommendations. Such determinations may be made
based at least in part on any suitable demographic information,
such as, for example, information about income level, education
level, lifestyle, age, family/household, home ownership, etc. By
way of example, the recommendation engine 2402 may determine based
at least in part on demographic information that the first end user
fits the profile of a relatively young, single male that is a
recent college graduate living in an upscale downtown apartment,
and may identify recommendations of other users that fit that
profile at least to a certain extent. Recommendations could be
scored based at least in part on the extent of common demographic
characteristics shared by the first end user and the other
users.
[0380] In some embodiments, end-user consumer information 2420 may
be processed by the recommendation engine 2402 to select businesses
based at least in part on buying habit filtering 2430. The
recommendation engine 2402 may determine a correspondence of buying
habit information of the first end user and other users associated
with recommendations. By way of example, the recommendation engine
2402 may determine based at least in part on the buying habit
information that the first end-user matches a category
corresponding to a cutting-edge technology consumer that tends to
adopt the latest technology with regard to wireless devices for
communication and home control, and may identify recommendations of
other users of that consumer type. Recommendations could be scored
based at least in part on the extent of common consumer
characteristics shared by the first end user and the other
users.
[0381] In some embodiments, end-user life milestone information
2422 may be processed by the recommendation engine 2402 to select
businesses based at least in part on life milestone filtering 2432.
The recommendation engine 2402 may determine a correspondence of
life milestones of the first end user and other users associated
with recommendations. For example, imminent and/or recent college
graduates may be matched in order to identify recommendations based
at least in part on the similarity. Recommendations could be scored
based at least in part on the extent of common milestone
characteristics shared by the first end user and the other
users.
[0382] In some embodiments, the recommendation engine 2402 may use
time filtering 2434 to take into account relevant time factors with
recommendations. For example, certain recommendations may be more
relevant to particular seasons or times during the year. Proximity
to certain holidays, for example, may be relevant to certain
businesses. In certain embodiments, a time decay factor may be
implemented in order to qualify the relevance of recommendations
based on how recent the preferences were indicated. For example, a
time decay factor may be used with time-based recommendations
(e.g., based on season, holiday, user actions, etc.) so that more
recent preferences may be given more weight than less recent
preferences.
[0383] Correspondence between the end-user information 2404 and
aggregated, classified business information 2406 may be scored in
certain embodiments. For example, weights may be assigned to
intersecting sets of characteristics, and the weights may be taken
into account with an overall relevance score. Any suitable criteria
may be used to identify and assign a weight, and any one or
combination of the weights may be summed or otherwise used at least
as a partial basis for deriving an overall relevance score. Any
suitable scale may be used for the scoring. The recommendation
engine 2402 may use one or more blending algorithms to select
businesses from a rich set of recommendations based at least in
part on the scoring.
[0384] In some cases, only recommendations with a predetermined
minimum number of associated user identifications may be considered
for selection. In some cases, only recommendations having a minimum
number of user recommendations overall and having a minimum number
of recommendations from recommending users within a maximum degree
of closeness to the first end user may be considered for
selection.
[0385] In some embodiments, the recommendation engine 2402 may rank
recommendations according to popularity of the recommendations
(e.g., numbers of users indicating the preferences) and/or
similarity between the first end user and recommenders. In some
embodiments, having identified pertinent recommendations based on
user similarities, subsets of recommendations may be selected based
at least in part on popularity of the recommendations. In some
embodiments, recommendations may first be selected based at least
in part on popularity of the recommendations, and then subsets of
recommendations may be selected based at least in part on user
similarities. Various embodiments may balance popularity of
recommendations and similarity of recommenders to the first end
user in various ways, with various embodiments placing greater
weight on one of those two considerations or equal weight on
both.
[0386] Accordingly, in some embodiments, the engines 243 (e.g., the
orchestration engine 256) may be configured to facilitate
individual selections, by end users, of businesses to retain
information corresponding to the businesses. The engines 243 may
process indicia of selections made by each end user, the indicia
being received via a network. The engines 243 may retain
collections of business information in one or more repositories. In
some embodiments, the engines 243 (e.g., the orchestration engine
256 which may include a classifying engine) may be configured to
classify each end user into at least one category of a set of
categories that represent classifications of end users based at
least in part on one or more sets of attributes defined for
classifying various end users.
[0387] In some embodiments, the engines 243 (e.g., the
recommendation engine 2402 which may include a matching engine) may
be configured to process first information enabling unique
identification of a first end user, process second information
about a first location corresponding to the first end user, and
match the first end user to a first category from the set of
categories. The engines 243 may identify a first set of collection
information associated with a first set of end users that
correspond to the first category and the first location, determine
a recommendation for the first end user based at least in part on
the first set of collection information, the first category, and
the first location, cause indication of the recommendation to a
first end-user computing device, and facilitate selection of the
first business to retain information corresponding to the first
business in association with the first end user. In some
embodiments, the engines 243 (e.g., the recommendation engine 2402
which may include a harvesting engine) may be configured to: gather
data about the first end user from one or more data sources, and
analyze the data about the first end user to determine a first set
of one or more attributes of the first end user. The matching the
first end user to the first category may be based at least in part
on determining that the first set of one or more attributes of the
first end user correspond to the first category, and the first set
of end users that correspond to the first category may share the
first set of one or more attributes in common with the first end
user. In some embodiments, the engines 243 (e.g., the
recommendation engine 2402 which may include a ranking engine) may
be configured to rank a set of businesses associated with the first
set of collection information based at least in part on a first
metric, where the determining the recommendation for the first end
user comprises selecting the first business based at least in part
on the ranking.
[0388] FIG. 25 is a block diagram that illustrates an example
method 2500 of offer provisioning where recommendations include
offers for particular end users, in accordance with certain
embodiments of the present disclosure. The features of method 2500
may be facilitated by the recommendation engine 2402 with the
recommendation generation described above.
[0389] As indicated by block 2502, one or more businesses may be
identified based at least in part on the end-user information 2402
and the recommendation information 2406. As indicated by block
2504, one or more advertising profiles corresponding to the one or
more businesses may be retrieved and processed. With an advertising
profile, a merchant may have previously indicated specific offer
information, such as coupons, for provisioning to end users of the
orchestration platform based on one or more trigger events.
Advertising profiles may be defined via the offer manager 2100 in
some embodiments.
[0390] As indicated by block 2506, one or more business rules may
be identified based at least in part on the one or more advertising
profiles. As previously described, an advertising profile may
include certain business rules 2106 for offer information
provisioning. The business rules 2106 could specify trigger
event(s) 2108 that could include, e.g., rules for handling
provisioning in view of any one or combination of events associated
with an end user's orchestration account. In some embodiments, one
or more trigger events 2108 could include location parameters to
allow for provisioning in view of a location identified for an end
user. The business rules 2106 could specify location parameters
could include, e.g., rules for handling provisioning in view of a
location identified for an end user. The business rules 2106 could
specify one or more temporal conditions, such that provisioning may
depend on one or both of temporal condition(s) and trigger
events.
[0391] In various embodiments, the business rules 2106 could
specify any one or combination of user type aspects of the
recommendation information 2406, such as demographic criteria
and/or buying habit criteria. As indicated by block 2508, in some
embodiments, it may be determined whether the business rules
specify user type criteria. In the case that the business rules do
specify such criteria, it may be determined whether the first end
user satisfies the criteria, as indicated by block 2510.
[0392] However, in the case that the business rules do not specify
such criteria, the criteria could be system-inferred in some
embodiments, as indicated by block 2512. The criteria could be
inferred based at least in part on the aggregated and classified
recommendation information 2406. For example, recommendation
information for a given advertiser may be determined to correspond
to certain demographic and/or buying habit criteria, as previously
described. Even though an advertiser did not specify user type
criteria, the system may determine a high correlation between users
recommending the business and certain user type characteristics.
Thus, as the inferred criteria may be based on recommender that
share similarities with the first end user, the system could assume
that the inferred criteria are satisfied as to the first end user.
Accordingly, an advertiser may target consumers based on specific
user type criteria, or the platform may identify specific user type
criteria for the advertiser as a potential target.
[0393] As indicated by block 2510, it may be determined whether the
conditions specified by the business rules are satisfied. As
indicated by block 2514, it may be determined whether the business
rules specify conditions for provisioning offer information to
users that have not already added the respective business to a
collection. If the business rules do specify such conditions, the
system 102 may automatically provide offer information to an end
user based on the merchant-specific business rules 2106 on behalf
of the particular merchant without further merchant intervention.
The flow may transition to block 2306 of FIG. 23, where descriptive
content that is selected for the recommendation may include the
offer information that an advertiser has specified, and the
descriptive content may be transmitted to the first end user in
accordance with the business rules 2106 specifying a form of
provisioning 2110.
[0394] However, if the business rules do not specify such
conditions, the system 102 may be configured to present
automatically identified offer information (i.e., identified based
on the merchant-specific business rules 2106 and the recommendation
analysis) for merchant selection so that the merchant may have the
choice as to whether to dispatch the offer information, as
indicated by block 2516. In addition to the identified offer
information, any suitable descriptive information pertaining to the
recommendation analysis may be provided. For example, the merchant
may be notified that the first end user matches certain categories
that correspond to the merchants offer, other users that have
recommended the merchant, and/or the like. Accordingly, the
platform may provide recommendations to merchants as to particular
users to whom the merchants may wish to send offer information.
[0395] FIG. 26 is a block diagram that illustrates an example
method 2600 of facilitating features to allow a user of the
platform to direct queries to other users, in accordance with
certain embodiments of the present disclosure. The features of
method 2600 may be facilitated by the one or more engines 243 in
some embodiments, which may be configured to provide a query
engine. As indicated by block 2602, one or more user selectable
options may be provided to facilitate queries directed other
users.
[0396] User-selectable options could be presented in any suitable
manner. For example, user selectable options may be presented with
any one or combination of the user interfaces and/or user interface
features disclosed herein and the like. As indicated by block 2604,
one or more user selections and a user query may be processed.
[0397] As indicated by block 2606, a specific business may be
identified based at least in part on the query in some embodiments,
where the query and/or selections explicitly indicate a particular
business. Certain embodiments may provide features to allow a user
of the platform to ask other users of the platform about a business
that the other users have added to their collections. A user could
identify a particular business via a search interface, a
suggestion, a public collection, a shared window, and/or the
like.
[0398] As indicated by block 2608, in some embodiments, one or more
business categories may be identified based at least in part on the
query. Certain embodiments may provide features to allow a user of
the platform to ask other users of the platform about a business
category and/or something related/relatable to a business category.
For example, a user may enter question, and the platform may parse
the words of the question and relate the keywords of the question
to one or more business categories. Thus, embodiments disclosed
herein with respect to processing interest data and correlating
keywords of the interest data to business categories may also be
applied to correlating user queries to one or more business
categories.
[0399] As indicated by block 2610, a set of users may be identified
as a potential audience for queries. In some embodiments, the set
of users may be identified based at least in part on one or more
user selections that may indicate a desired audience. The set of
users could be restricted to users of the platform in some
cases.
[0400] However, certain embodiments may provide features to allow
for queries to be directed not only to other platform users, but
also to users of one or more networking forms, such as a social
and/or business network. A query could, for example, be directed to
other users related to the querying user via a social graph. The
querying user may be able to select one or more desired audiences
with some embodiments.
[0401] As indicated by block 2612, in some embodiments, a subset of
the users may be identified based at least in part on user
qualification. Any suitable user qualification, such as any one or
combination of the user qualification aspects disclosed herein, may
be used in various embodiments. Users could be selected on the
basis of interaction with the business and/or business category.
For example, the subset of users may be selected based at least in
part on the users having added the business and/or a business in
the particular business category to collections.
[0402] In a set of embodiments, the platform may identify a set of
users as a potential audience for queries based at least in part on
an assessment of the likelihoods that the users will reply to
queries. Users could be selected based at least in part on user
interaction with the platform. Users could be selected based at
least in part on whether the users have engaged the business and/or
business in a particular business category.
[0403] FIG. 27 depicts a functional block diagram of certain
aspects of end-user qualification 2700 to facilitate querying, in
accordance with certain embodiments of the present disclosure.
Various embodiments may employ any one or combination of various
methods of qualifying end users. End-user data may be captured, as
disclosed herein, and used to qualify users to indicate, infer,
and/or determine which end users are likely to respond to
particular queries and/or have a good basis to respond. An
end-user's interactions with the orchestration platform can be
broken down and assessed based on any one or combination of various
factors, such as, for example, duration of various directed
interactions, locations of the end user relative to business
locations, demographic information of the end user,
collection/window development by the end user, content added by the
end user, communications with merchants, keyword analysis
user-generated content and/or communications, and/or the like.
Based on such indicia, an end user can be qualified.
[0404] Having end-user data, the system 102-2 may implement an
end-user qualification process 1904-1. Some embodiments may qualify
an end-user according to a graduated scale. Any suitable scale may
be used in various embodiments. In some embodiments, a scale could
entail a categorization scheme 2706, with any suitable categories
to characterize likelihood of responsiveness and/or response
quality, and could correspond to very high, high, medium, and low
likelihood segments. A scale could entail an end-user scoring
system, as disclosed herein, with an end-user score corresponding
to an assessment of an end-user's potential to respond to
queries.
[0405] The criteria for qualifying consumers may take into account
the extent of end-user interaction. A greater extent of interaction
could increase a ranking assigned to a particular user. The user
interaction considered may include one or more of interaction
directed to the merchant, the business area of the merchant, and/or
other merchants related to the merchant's business area. The
criteria for qualifying consumers may take into account the extent
of user interaction with a collection and/or information window
associated with the merchant, the business area of the merchant,
and/or other merchants related to the merchant's business area. The
qualification of a particular consumer may also be weighted as a
result of keywords being used in communication and/or commentary
associated with a collection and/or window related to the
merchant--e.g., the keywords may indicate a user ready to buy,
engage services, and/or otherwise conduct business. The
qualification of a particular consumer may be weighted more heavily
as a result of indicia that the consumer made a purchase, engaged
services, and or otherwise conducted business.
[0406] In various embodiments, any one or combination of: location
information 1902-1; an end user's interaction on the orchestration
platform 1904-1 (which could also include interaction with
networks, such as business/social networks, through or otherwise
associated with the platform); end-user curation (1916-1) may be
taken into account as end-user data of interest (which may be
assessed in terms of curation time, curation instances, user-added
content, etc.); an end user's interaction with the business and/or
businesses corresponding to the query (1924-1); an end user's
collection/window share activity (1926-1) (which may be assessed in
terms of numbers of occurrences, form of sharing, size of audience,
feedback on shares, etc.); an end user's public collection share
activity (1940-1); an end user's previous responses (2742) to
queries (e.g., instances, response-query ratio, etc.); the recency
of the end user's activities (2744) (which may be assessed in view
of certain time period thresholds); and/or the like could be
assessed and assigned points accordingly, with greater points being
assigned with greater correspondence to the business and/or
business category being queried about. One or more the top-ranked
categories 1906-1 of users may be used to select users as query
recipients, and flow may transition back to block 2610 of FIG. 26.
The selection could be iteratively expanded if sufficient responses
are not received with certain time thresholds.
[0407] With respect to block 2610, users could be selected based at
least in part on explicit and/or implicit indicia of preference for
the particular business and/or category via the platform and/or
other networks. Users could be selected based at least in part on
user type. For example, users having similarities with the querying
user may be identified and selected. The user selection could
include any one or combination of the features disclosed herein
with respect to the recommendation generation 2400 as applied to
facilitate identifying pertinent recipients for a particular end
user's queries, with the end result being an audience selection
rather than a recommended business.
[0408] FIG. 28 depicts a functional block diagram of certain
aspects of query recipient selection 2800, in accordance with
certain embodiments of the present disclosure. One or more engines
243 may be configured to provide a query engine 2802. The query
engine 2802 may analyze end-user information 2404 for a first end
user and aggregated, classified business information 2406 to
identify a set of users. The query engine 2802 may be configured to
provide features similar to the features disclosed with respect to
the recommendation engine 2402, except that the query engine 2802
may first identity users that have indicated preference for the
business and/or business category corresponding to the query and
then may apply the filtering to identify a subset of users as query
recipients.
[0409] Referring again to FIG. 26, as indicated by block 2614, the
query may be conveyed to the identified users. In various
embodiments, the query may be conveyed via any one or combination
of notification means such as those disclosed herein. For example,
social/business networking services account postings/messages,
platform account notifications, pop-ups, and/or other alerts with
the platform application, text messages, voice notifications, push
notifications, e-mails, and/or other any suitable means could be
employed to allow for the presentation of query information.
[0410] As indicated by block 2616, the end-user actions may be
monitored. Responses to the query may be harvested, as indicated by
block 2618. As indicated by block 2620, in some embodiments,
non-responsiveness to the query may likewise be monitored. The
harvesting responses could be provided by way of user selectable
options provided via the platform account and/or the social
business network services, API calls, crawling, pull and/or push
user feedback in any suitable way, and/or the like.
[0411] As indicated by block 2622, responses to the query may be
conveyed to the querying user in any suitable manner. For example,
the responses may be conveyed via any suitable interface of a
platform application, such as a dedicated query results page, an
activity feed, pop-ups, or any other suitable notification means.
In some embodiments, the responses may be quantified according to
any user metrics, and such information may be presented to the
querying user. For example, responses coming from platform users
may be quantified, responses from social network users may be
quantified, etc. Furthermore, descriptive information about the
users, the selection criteria, and/or the like may be presented to
the querying user.
[0412] Referring next to FIG. 29, an exemplary environment with
which embodiments may be implemented is shown with a computer
system 2900 that can be used by a designer 2904 to design, for
example, electronic designs. The computer system 2900 can include a
computer 2902, keyboard 2922, a network router 2912, a printer
2908, and a monitor 2906. The monitor 2906, processor 2902 and
keyboard 2922 are part of a computer system 2926, which can be a
laptop computer, desktop computer, handheld computer, mainframe
computer, etc. The monitor 2906 can be a CRT, flat screen, etc.
[0413] A designer 2904 can input commands into the computer 2902
using various input devices, such as a mouse, keyboard 2922, track
ball, touch screen, etc. If the computer system 2900 comprises a
mainframe, a designer 2904 can access the computer 2902 using, for
example, a terminal or terminal interface. Additionally, the
computer system 2926 may be connected to a printer 2908 and a
server 2910 using a network router 2912, which may connect to the
Internet 2918 or a WAN.
[0414] The server 2910 may, for example, be used to store
additional software programs and data. In some embodiments,
software implementing the systems and methods described herein can
be stored on a storage medium in the server 2910. Thus, the
software can be run from the storage medium in the server 2910. In
another embodiment, software implementing the systems and methods
described herein can be stored on a storage medium in the computer
2902. Thus, the software can be run from the storage medium in the
computer system 2926. Therefore, in this embodiment, the software
can be used whether or not computer 2902 is connected to network
router 2912. Printer 2908 may be connected directly to computer
2902, in which case, the computer system 2926 can print whether or
not it is connected to network router 2912.
[0415] With reference to FIG. 30, an embodiment of a
special-purpose computer system 3000 is shown. The above methods
may be implemented by computer-program products that direct a
computer system to perform the actions of the above-described
methods and components. Each such computer-program product may
comprise sets of instructions (codes) embodied on a
computer-readable medium that directs the processor of a computer
system to perform corresponding actions. The instructions may be
configured to run in sequential order, or in parallel (such as
under different processing threads), or in a combination thereof.
After loading the computer-program products on a general purpose
computer system 3026, it is transformed into the special-purpose
computer system 3000.
[0416] Special-purpose computer system 3000 comprises a computer
3002, a monitor 3006 coupled to computer 3002, one or more
additional user output devices 3030 (optional) coupled to computer
3002, one or more user input devices 3040 (e.g., keyboard, mouse,
track ball, touch screen) coupled to computer 3002, an optional
communications interface 3050 coupled to computer 3002, a
computer-program product 3005 stored in a tangible
computer-readable memory in computer 3002. Computer-program product
3005 directs system 3000 to perform the above-described methods.
Computer 3002 may include one or more processors 3060 that
communicate with a number of peripheral devices via a bus subsystem
3090. These peripheral devices may include user output device(s)
3030, user input device(s) 3040, communications interface 3050, and
a storage subsystem, such as random access memory (RAM) 3070 and
non-volatile storage drive 3080 (e.g., disk drive, optical drive,
solid state drive), which are forms of tangible computer-readable
memory.
[0417] Computer-program product 3005 may be stored in non-volatile
storage drive 3080 or another computer-readable medium accessible
to computer 3002 and loaded into memory 3070. Each processor 3060
may comprise a microprocessor, such as a microprocessor from
Intel.RTM. or Advanced Micro Devices, Inc..RTM., or the like. To
support computer-program product 3005, the computer 3002 runs an
operating system that handles the communications of product 3005
with the above-noted components, as well as the communications
between the above-noted components in support of the
computer-program product 3005. Exemplary operating systems include
Windows.RTM. or the like from Microsoft.RTM. Corporation,
Solaris.RTM. from Oracle.RTM., LINUX, UNIX, and the like.
[0418] User input devices 3040 include all possible types of
devices and mechanisms to input information to computer system
3002. These may include a keyboard, a keypad, a mouse, a scanner, a
digital drawing pad, a touch screen incorporated into the display,
audio input devices such as voice recognition systems, microphones,
and other types of input devices. In various embodiments, user
input devices 3040 are typically embodied as a computer mouse, a
trackball, a track pad, a joystick, wireless remote, a drawing
tablet, a voice command system. User input devices 3040 typically
allow a user to select objects, icons, text and the like that
appear on the monitor 3006 via a command such as a click of a
button or the like. User output devices 3030 include all possible
types of devices and mechanisms to output information from computer
2302. These may include a display (e.g., monitor 3006), printers,
non-visual displays such as audio output devices, etc.
[0419] Communications interface 3050 provides an interface to other
communication networks 3095 and devices and may serve as an
interface to receive data from and transmit data to other systems,
WANs and/or the Internet 3018. Embodiments of communications
interface 3050 typically include an Ethernet card, a modem
(telephone, satellite, cable, ISDN), a (asynchronous) digital
subscriber line (DSL) unit, a FireWire.RTM. interface, a USB.RTM.
interface, a wireless network adapter, and the like. For example,
communications interface 3050 may be coupled to a computer network,
to a FireWire.RTM. bus, or the like. In other embodiments,
communications interface 3050 may be physically integrated on the
motherboard of computer 3002, and/or may be a software program, or
the like.
[0420] RAM 3070 and non-volatile storage drive 3080 are examples of
tangible computer-readable media configured to store data such as
computer-program product embodiments of the present invention,
including executable computer code, human-readable code, or the
like. Other types of tangible computer-readable media include
floppy disks, removable hard disks, optical storage media such as
CD-ROMs, DVDs, bar codes, semiconductor memories such as flash
memories, read-only-memories (ROMs), battery-backed volatile
memories, networked storage devices, and the like. RAM 3070 and
non-volatile storage drive 3080 may be configured to store the
basic programming and data constructs that provide the
functionality of various embodiments of the present invention, as
described above.
[0421] Software instruction sets that provide the functionality of
the present invention may be stored in RAM 3070 and non-volatile
storage drive 3080. These instruction sets or code may be executed
by the processor(s) 3060. RAM 3070 and non-volatile storage drive
3080 may also provide a repository to store data and data
structures used in accordance with the present invention. RAM 3070
and non-volatile storage drive 3080 may include a number of
memories including a main random access memory (RAM) to store of
instructions and data during program execution and a read-only
memory (ROM) in which fixed instructions are stored. RAM 3070 and
non-volatile storage drive 3080 may include a file storage
subsystem providing persistent (non-volatile) storage of program
and/or data files. RAM 3070 and non-volatile storage drive 3080 may
also include removable storage systems, such as removable flash
memory.
[0422] Bus subsystem 3090 provides a mechanism to allow the various
components and subsystems of computer 3002 communicate with each
other as intended. Although bus subsystem 3090 is shown
schematically as a single bus, alternative embodiments of the bus
subsystem may utilize multiple busses or communication paths within
the computer 3002.
[0423] According to an aspect of the present invention, a data
storage system may be provided that supports the storage and/or
retrieval of user-generated content. The data storage system may be
implemented as part of the interaction infrastructure 102 discussed
in FIG. 1-2. In particular, the data storage system may implement
as a part of master data management layer 265 shown in FIG. 2. In
an embodiment, data storage services provided by the data storage
system may be invoked by other components of the interaction
infrastructure such as information handling engines 243 shown in
FIGS. 2D-E. For instance, the data storage system may be configured
support functionalities of information orchestration engines 256
discussed in FIG. 2E.
[0424] FIG. 31 illustrates an exemplary environment 3100 in which a
data storage system may be implemented, in accordance with
embodiments. As discussed above, the data storage system 3102 may
be implemented as part of the interaction infrastructure 102
discussed in FIG. 102. One or more data users 3102 can communicate
with a data storage system 3102. Unless otherwise clear from
context, the term "data user" refers to a human or non-human entity
that utilizes the data storage services described herein. Such
entities may include datacenters, mainframes, individual computing
devices, distributed computing environments and customer-accessible
instances thereof or any other system capable of communicating with
the data storage system. A data user may generate and/or consume
data. In some embodiments, a data user may refer to a machine
instance (e.g., with direct hardware access) or virtual instance of
a distributed computing system provided by a computing resource
provider that also provides the data storage system. In some
embodiments, the data storage system is integral to the distributed
computing system and may include or be implemented by an instance,
virtual or machine, of the distributed computing system. The data
users of the data storage system may include components from the
application services management layer 240, the interface layer 215
and/or the application/device layer 210 of the interaction
infrastructure 102 discussed in FIG. 2. For instance, data users of
the data storage system may include applications 206 and/or client
devices 205 from the application/device layer 210 and/or
application services servers 242 from the application service
system 241 as shown in FIG. 2A. In an example, a data user may
include an information handling engine 243 discussed in FIGS. 2D-E,
such as an information orchestration engine 256.
[0425] The data storage system 3102 can include a storage interface
layer 3106 comprising one or more interface servers 3108. The
interface servers 3108 can be configured to implement, individually
or collectively, an interface between the data storage system 3102
and the data users 3104. The interface may include an application
programming interface ("API") that enables a data user to
programmatically interface with the various features, components
and capabilities of the data storage system. Such APIs may be part
of a user interface that may include graphical user interfaces
(GUIs), Web-based interfaces or services, programmatic interfaces
such as application programming interfaces (APIs) and/or sets of
remote procedure calls (RPCs) corresponding to interface elements,
messaging interfaces in which the interface elements correspond to
messages of a communication protocol, and/or suitable combinations
thereof. A data user may request the performance of any of service
provided by the data storage system by sending API requests to the
interface layer of the data storage system. Similarly, the data
storage system may provide responses to the API requests. Such
requests and responses may be submitted over any suitable
communications protocol, such as Hypertext Transfer Protocol
("HTTP"), File Transfer Protocol ("FTP") and the like, in any
suitable format, such as REpresentational State Transfer ("REST"),
Simple Object Access Protocol ("SOAP") and the like. In some
embodiments, the interface layer 3106 may be implemented as a part
of the application services management layer 240, and/or a part of
the master data management layer 265 of FIG. 2. In some
embodiments, the interface layer 3106 may be implemented at least
partially by the application services system 241 of FIG. 2A, by the
data management system 266 of FIG. 2A, or both.
[0426] The data storage system 3102 can include a plurality of
storage entities used to store data. The interface layer 3106 may
be configured to interact with the storage entities to fulfill
requests from data users 3104. Such interactions may include
storing and retrieving of data objects. As used herein, a storage
entity can include any entity configured to store data and may
include a storage device (e.g., solid state drive, hard disk drive,
tape drive), storage node 3112, datacenter 3110, or the like. In an
embodiment, the storage entities may be implemented as a part of
the master data management layer 265 of FIG. 2 and/or implemented
at least partially by the data management system 266 of FIG. 2A.
For instance, the storage entities can include the data management
servers 242 and/or data stores 268 discussed in FIG. 2A.
[0427] A storage node 3112 may include a storage server controlling
a collection of storage devices. A datacenter 3110 may comprise a
collection of storage nodes 3112. Such storage entities may be
physical, virtual or any abstraction thereof (e.g., instances of
distributed storage and/or computing systems) and may be organized
into any topology, including hierarchical or tiered topologies such
as a ring, an array, or a cluster. The storage entities may
communicate with each other, for example, using a storage area
network ("SAN"). The storage entities may be controlled by
instructions or control messages provided by storage servers,
interface servers, and/or any other suitable control devices.
Communications between components within the data storage system
and/or between external entities and the data storage system may be
provided by any suitable messaging protocol such as RabbitMQ
provided by Pivotal Software.
[0428] The hardware and/or software configuration and
characteristics of the data storage system may depend on various
requirements related to performance, scalability, reliability,
flexibility, complexity, functionality, and the like. Specifically,
the data storage system may be configured to provide high storage
capacity, high throughput, load balancing, data redundancy, fault
tolerance, and/or the like. Such hardware and/or software
characteristics of the data storage system may be predetermined
(e.g., by a system administrator) and/or dynamically configurable
(e.g., by an automated process). In some embodiment, the data
storage system can implement one or more types of database
management systems such as a NoSQL database management system, a
relational database management system ("RDBMs") or any other
suitable database management systems. Under certain situations,
NoSQL databases may offer better performance (e.g., faster
retrieval and/or update) than relational databases. NoSQL database
management systems can be modeled in means other than the tabular
relations used in relational databases. For instance, data in a
NoSQL database may be modeled using columns, documents, key-value
pairs, graphs, and the like. Examples of column-based NoSQL data
stores include Accumulo, Cassandra, or HBase provided by Apache
Software Foundation, and Big Table provided by Google. Examples of
document-oriented data stores include Elasticsearch provided by
Elasticsearch BV, Lotus Notes provided by IBM, and MongoDB provided
by MongoDB Inc. Examples of key-value-based data stores include
DynamoDB provided by Amazon.com and FoundationDB. Examples of
graph-based data stores include Allegro provided by Franz, Inc. and
InfiniteGraph provided by Objectivity, Inc. The data storage system
discussed herein may include one or more types of data stores. For
instance, in an embodiment, the data storage system comprises both
a column-based data store (e.g., Cassandra) and a document-based
data store (e.g., Elasticsearch). The Cassandra data store, with
high throughput, may be used to as the primary storage for
user-related and/or user-generated data. The Elasticsearch data
store, with efficient search capabilities, may be used to store
searchable documents and/or data. For example, data stored in the
Elasticsearch may include collection and/or business information
that will be search by collection-specific and/or business-specific
attributes such as geographical location, type or category, name,
keywords, description, and the like. In other embodiments, the data
storage system may implement only one type of data store (e.g.,
Cassandra), or more than two types of data stores depending on the
specific requirements.
[0429] The number, type, and configuration of the storage entities
may be configured to satisfy certain system or business
requirements. The numbers of storage nodes and/or data centers per
data center may determine or be determined by a data redundancy
scheme such as error-correction code. For instance, an exemplary
data storage system may have two datacenters, each with eight
storage nodes. The data centers may be replica of each other to
provide redundancy. The storage nodes may be used to redundantly
store encoded portions (e.g., shards) of data objects according to
a predetermined redundancy scheme. In some embodiments, the storage
nodes may be configured to provide relatively higher storage
capacity and less processing resources (e.g., CPU, memory) than the
interface servers, which are typically configured to handle data
user requests with a high throughput.
[0430] In an embodiment, the data storage system may provide a
multi-tenant or multi-customer environment where each tenant or
customer may store, retrieve, delete or otherwise manage data in a
data storage space allocated to the customer. For instance, the
storage entities of the data storage system may be partitioned so
as to implement multi-tenancy.
[0431] According to an aspect of the present invention, the data
storage system may be configured to maintain the same data in
different databases or database tables with different
characteristics so as to optimize the retrieval of data. Depending
on the characteristics of specific queries, different database
tables may be queried to fulfil different queries on the same
underlying data. The specific data model design (e.g., database
tables and columns) may depend on the specific types of database
stores (e.g., NoSQL or relational database) and/or the specific
business requirement (e.g., types of queries or use cases).
[0432] In some embodiments, the data model designs may be used to
overcome restrictions imposed by an underlying database management
system. For example, such a restriction may specify that a query
cannot be performed using a secondary key without using a primary
key, or using a tertiary key without the primary and secondary
keys. Another exemplary restriction may specify that an IN query
(using multiple values) may be performed only on a primary key, and
not a secondary key, when the SELECT include a collection column
(e.g., including a list, set, or map). Yet another restriction may
forbid an IN query on both a primary key and a second key.
[0433] Alternatively or additionally, the data model design may be
used to optimize specific use cases or to implement certain
features of the orchestration platform (also referred to as
personalization system or service). Examples of such use cases are
provided after the discussion of the database tables below.
[0434] According to an aspect of the present invention, database
tables for storing user collection information can be provided.
FIG. 32 illustrates exemplary database tables 3202 and 3204 used to
store collection information, in accordance with embodiments. The
database tables 3202 and 3204 (as well as other database tables
discussed herein) may be implemented by one or more storage
entities discussed herein (e.g., storage devices, storage nodes,
datacenters).
[0435] A collection may be originally created by or for a specific
user. Each collection associated with a particular user may be
uniquely identified (e.g., by a local collection id) among all the
collections for that user. Local collection ids may or may not be
unique across different users. For instance, the local collection
id for the collection c1 3201 of user u1 (e.g., "c1" or "Food") may
be identical to the local collection id for the collection c1 3205
of user u2. A collection may also be identified uniquely among all
the collections across all users by a global collection id. A
collection may include zero, one, or more business listings. An
owner or editor (e.g., a user with write access) of a collection
can edit a collection. Such edit of collections may include adding,
removing, or updating business listings and the associated business
attributes within the collection and/or adding, removing, or
updating collection-specific attributes such as keywords, access
control settings, and the like. A user may also have read-only
access to a collection such that the user can view but not edit
content of the collection. Examples of users with read-only access
can include users that follow public and/or featured collections or
users with read-only access to privately shared collections.
[0436] A collection may be created by or created for a first user
but shared with or followed by a second user. In such cases, the
second user may have access to the collections of the first user.
Such access may include read and/or write access. For instance, the
second user may follow a collection (e.g., public or featured) of a
first user and has read-only access to such a followed collection.
As another example, the first user may share one of his/her
collection with the second user (e.g., privately). When granting
access to the shared collection, the first user may determine
whether to grant the second user read-only or read/write access to
the shared collection. For instance, as illustrated in FIG. 32, the
user u1 may follow the collection c1 3205 of the user u2 or the
user u2 may share his/her collection c1 3205 with the user u1. The
followed or shared collection c1 3205 of the user u2 may appear to
u1 as a shortcut to the collection c2 3203.
[0437] In an embodiment, when a user follows or access a shared
collection, data associated with the followed or shared collection
is copied and associated with the user. Subsequent update to the
followed or shared collection would require update to the copied
collection. A drawback of this approach is that when a collection
is followed by or shared with a large number of users, the large
number updates that need to be performed on many copies of the
collection when the original collection is updated resulting in
significant performance overhead. To mitigate this problem, a link
to the original collection may be created for a follower or a user
receiving a shared collection (a sharee) when the collection is
followed or shared for, instead of a copy of the original
collection with all the associated collection data. When the
followed or shared collection is updated, the followers and sharees
of the collection can follow the links to access the updated
collection without having to update copies of the collection. The
latter approach is illustrated in FIG. 32.
[0438] As illustrated, the database tables 3202 and 3204 can be
used to store collection data associated with users. Each of the
tables may include a plurality of entries (also known as rows or
records) and each entry can have a plurality of values respectively
corresponding to a plurality of fields or attribute names. Each
field may be implemented as one or more database columns. Each
column may be used to store a single value or a collection of
values such as a list, a set, or a map (e.g., comprising key-value
pairs).
[0439] The collections table 3202 can be configured to store the
association between users and their corresponding collections. Each
entry (also referred to as record or row) of the collections table
3202 can represent a collection for a particular user, which may be
an original collection or a link to a followed or shared
collection. Each entry of the collections table 3202 can include a
user id field 3206(a), a local collection id field 3206(b), and a
data/link field 3206(c). The user id field 3206(a) can be used to
store user identification information of the user that uniquely
identifies a user of the system. The user id field 3206(a) may be
implemented by a corresponding database column. The local
collection id field 3206(b) can be used to store information that
uniquely identifies the collection within all collections for that
user. The local collection id field 3206(b) can be implemented by a
corresponding database column. As discussed above, local collection
ids may not be unique across multiple users. That is, different
users may have collections that have the same local collection ids.
The data/link field 3206(c) can be used to store either collection
data associated with the particular collection when the user is the
owner of the collection or linking information that may be used to
identify a shared or followed collection. For instance, the linking
information may include information for identifying a corresponding
entry in the collections by id table 3204, discussed below. The
data/link field 3206(c) can be implemented by one or more database
columns.
[0440] FIG. 32 shows collections table 3202 as containing one entry
for each collection of each of the users u1 and u2. The entry 3210
represents the collection c1 3201 of the user u1. The entry 3214
represents the collection c1 3205 of the user u2. Both entries
correspond to collections that are owned by the corresponding users
and as such, the data/link fields 3206(c) for both entries include
detailed collection data associated with the owned collections such
as business attributes and collection attributes. In contrast, the
entry 3212 represents a link to a shared/followed collection c2
3203 of the user u1 and thus contains linking information in the
data/link field that links to the corresponding global collection
entry 3218 in the collections by id table 3204. More details of the
data/link field 3206(c) are provided in FIG. 33.
[0441] The collections by id table 3204 can be configured to store
collection data associated with global collection ids. Each entry
(record or row) of the collections table 3204 can represent a
globally unique collection with corresponding collection data
rather than a link to a shared or followed collection. Thus, there
is one entry for each globally unique collection in the system. For
example, even if a collection is shared with or followed by 100
other users, there is still only one entry corresponding to that
collection in the collections by id table 3204; whereas there would
be 101 entries in the collections table 3202 (including one entry
corresponding to the original collection and 100 entries
corresponding to the links to the original collection). The
collections by id table 3204 can include a global collection id
field 3208(a), and a data field 3208(b). The global collection id
field 3208(a) can be used to store information that globally
identifies the collection among all collections of all users. In
some embodiments, the global collection id field may include a
global unique identifier (GUID) or a combination of information.
The global collection id field 3208(a) may be implemented by a
corresponding database column. In an example, the global collection
id can be based on a combination of all or portions of a user id, a
local collection id, and/or a timestamp. In some other examples,
the global collection id may be based, alternatively or
additionally, on other identifying information such as location
information. The timestamp may represent a time when the collection
is created or any other suitable time. In various embodiments,
combining the various pieces of information to form a global
collection id may include concatenating, interweaving, encoding
(e.g., with a hash function), or otherwise processing the various
pieces of information. The data field 3208(b) of the collections by
id table 3204 can be used to store collection data associated with
the particular collection. The data field 3208(b) can be
implemented by one or more database columns. The data field 3208(b)
of the collections by id table 3204 may be similar to the data/link
field 3206(c) field of the collections table 3202 except that the
data field 3208(b) does not contain any linking information. More
details of the data field 3208(b) are provided in FIG. 33.
[0442] FIG. 32 shows the collections by id table 3204 as containing
one entry for each original (i.e., non-linking) collection of the
users u1 and u2. Thus, the table contains two entries, entry 3216
representing the collection c1 3201 of the user u1 and entry 3218
representing the collection c1 3205 of the user u2, both
collections are original collections. Unlike the collections table
3202 discussed above, the collections by id table 3204 does not
contain an entry for the collection c2 3203 of the user u1 because
it is merely a shortcut to an owned collection.
[0443] Although the collections table 3202 and collections by id
table 3204 contains similar, if not identical information, each
table may be used to optimize database performance for different
use cases. For example, the collections table 3202 can be used to
facilitate fast retrieval and/or update of collection information
given a user id and a local collection id, thus optimizing the use
case where a user views and/or updates his/her own collections. The
primary key of the collections table 3202 can include the user id
field 3206(a) and the secondary key can include the local
collection id field 3206(b). On the other hand, the collections by
id table 3204 can be used to facilitate fast retrieval and/or
update of collection information given a global collection id such
as when a user searches for public or featured collections. The
primary key of the collections by id table 3204 can include the
global collection id field 3208(a).
[0444] FIG. 33 illustrates exemplary database columns or attributes
used for storing collection information, in accordance with
embodiments. Specifically, the collection data/link columns 3302
may be part of the data/link field 3206(c) of the collections table
3202 of FIG. 32 and the collection data columns 3304 may be part of
the data field 3208(b) of the collections by id table 3204 of FIG.
32. In various embodiments, database columns that are more or less
than or different than those illustrated may be used.
[0445] Columns in the collection data/link columns 3302 may be used
to store various types of information such as linking information
and/or data information. The linking columns 3306 may include one
or more columns for storing information that can be used to
identify a linked or original collection entry stored in another
table (e.g., collections by id table 3204 of FIG. 32). The linking
columns 3306 may include a global collection id column 3320, an
original user id column 3322, and an original collection id column
3324 that are used to store, respectively, the global collection
identifier of the linked or original collection (e.g., comprising
user id, local collection id, and timestamp), the original user id
of the linked or original collection, and the original local
collection id of the linked or original collection. For instance,
the collection entry 3212 in the collections table 3202 of FIG. 32
(corresponding to the linking collection c2 3203 of u1) may have
`u2c1201504010930` for its global collection id field (i.e., a
combination of user id `u1`, local collection id c1, and a
timestamp `201504010930`), `u2` for its original user id field, and
`c1` for its original local collection id field, as shown in the
table immediately below.
TABLE-US-00001 Global Collection Id u2c1201504010930 Original User
Id u2 Original Collection Id c1
[0446] A data portion 3308 of the data/link columns 3302 may
include one or more columns for storing non-linking data related to
collections. The data portion 3308 may include a business portion
3310 and a collection portions 3312. The business portion 3310 can
include a plurality of columns for storing information about
businesses included in a given collection. Such business-related
columns can include a business ids column 3326 used to store a set
of identifiers of businesses that have been added to the
collection. A business locations column 3328 can be used to store a
map that maps a business id to a corresponding geographic location
identifier for each of the businesses included in the collection.
Similarly, a business descriptions column 3330 can be used to store
a map that maps a business id to a corresponding description for
each of the businesses included in the collection. A business
images column 3332 can be used to store a map that maps a business
id to a corresponding image identifier (e.g., file name,
identifier, and/or file path) for each of the businesses included
in the collection. A business orders column 3334 can be used to
store a map that maps a business id to a corresponding order or
ranking for each of the businesses included in the collection. A
user may be allowed to modify orders or rankings of the businesses
in a collection and the resulting order or ranking may be recorded
in this column. An added by user column 3336 can be used to store a
map that maps a business id to a corresponding user id of a user
that added the business to the collection for each of the
businesses included in the collection. Exemplary values for the
business-related fields 3310 are provided in the table immediately
below.
TABLE-US-00002 Business Ids {`b1`, `b2`, ...} Business Locations
{`b1`: `Los Angeles`, `b2`: `Seattle`, ...} Business Descriptions
{`b1`: `A Great Japanese restaurant.`, `b2`: `A French
restaurant.`, ...} Business Image {`b1`: `\\images\b1.gif`, `b2`:
`\\images\b2.jpg`, ...} Business Orders {`b1`: `3`, `b2`: `1, ...}
Added By User {`b1`: `u2`, `b2`: `u1`, ...}
[0447] The collection portion 3312 of the data/link columns 3302
can include a plurality of columns for storing general information
about a given collection. Such collected-related columns 3312 can
include a followers column 3338 used to store a set of user ids of
the followers of a given collection. In an embodiment, the set of
user ids for the followers may be used to provide notifications of
updates to the collection to the followers. A permissions column
3340 can be used to store a map that maps a user id to a
corresponding access right indicator (e.g., `r` for read-only
access and `w` for write access) for each user with whom the
collection is shared with (e.g., a sharee). A keywords column 3342
can be used to store a set of keywords associated with the
collection. The keywords can be used to support keyword search of
collections. A role column 3344 can be used to store an indicator
indicating a type of a given collection. In some embodiments, the
role indicator associated with an entry in the collections table
may be used to indicate whether the corresponding entry corresponds
to an owned collection or a link to a followed or shared
collection. If the latter, then another lookup may be required to
retrieve collection data associated with the followed or shared
collection. In an example, the role indicator may indicate whether
a given collection is an owned collection, a following collection
(that links to a followed collection), a link to a privately shared
read-only collection, or a link to a privately shared write access
collection with values `o`, `f`, `sr`, and `sw`, respectively, or
any other suitable representation. Exemplary values for the
collection-related fields 3312 are provided in the table
immediately below.
TABLE-US-00003 Followers {`u1`, `u2`, ...} Permissions {`u3`: `r`,
`u4`: `w`, ...} Keywords {`restaurant`, `Japanese`, `food`} Role
`f`
[0448] In various embodiments, some of the columns or fields may be
applicable only to specific types of collections or under certain
circumstances while others may be applicable to all types of
collections. For instance, the followers field 3338 of a collection
may include values only when the collection is followed by some
other users. The permissions field 3340 may include values when the
collection is shared with some other users. In some embodiments,
the followers field 3338 is only applicable to a public or featured
collection whereas the permissions field 3340 is only applicable to
a privately shared collection. In some other embodiments, where a
public collection can also be specifically shared, the followers
field 3338 and the permissions field 3340 may both be applicable.
On the other hand, the role field 3344 may be applicable to all
types of collections.
[0449] Still referring to FIG. 33, the collection data columns 3304
may be part of the data field 3208(b) of the collections by id
table 3204 of FIG. 32. In some embodiments, the collection data
columns 3304 of the collections by id table 3204 may be similar to
the data/link columns 3302 discussed above when the latter contains
collection data rather than linking information. For instance, the
collection data columns 3304 can include a business portion 3316
and a collection portion 3318 similar to the business portion 3306
and collection portion 3308 of the data/link columns 3302 of a
collections table. The data field 3208(b) of the collections by id
table 3204 of FIG. 32 may or may not include a role indicator field
3352 since all entries in the collections by id table correspond to
owned collections.
[0450] According to an aspect of the present invention, database
tables for storing business listings can be provided. In an
embodiment, information related to business listings can be stored
in at least two database tables, a listings table and a listings by
id table. The listings table can be configured to store the
association between users and the business listings in their
respective collections, as well as collections that a listing
belongs to. For instance, the listings table can have a user id
column, a business id column, and a collection ids column that are
configured to store, respectively, a user identifier of a user, a
business identifier of a business included in a collection of the
user, and a set of collection identifiers of all collections of the
user that include the business. The listings table may be optimized
for the retrieval of listing information based primarily on the
user id. For instance, the listings table may have the user id
column as a primary key and the business id column as a secondary
key. An exemplary listings table is provided immediately below. The
exemplary listings table illustrate the scenario where a first user
u1 has collections c1 and c2. The collection c1 includes businesses
b1 and b2 whereas the collection c2 only includes business b1. A
second user u2 has a collection c1 that includes the business b2.
As illustrated, a business listing can be included in different
collections for the same user or in collections for different
users.
TABLE-US-00004 User Id Business Id Collection Ids u1 b1 {c1, c2} u1
b2 {c1} u2 b2 {c2}
[0451] The listings by id table can be configured to store
identical or similar information as the listings table discussed
above. The listings by id table can have a business id column, a
user id column, and a collection ids column that are configured to
store, respectively, a business identifier of a business included
in a collection of a user, a user identifier of the user, and a set
of collection identifiers of all collections of the user that
include the business. The listings by id table may be optimized for
the retrieval of listing information based primarily on the
business id. For instance, the listings by id table may have the
business id column as a primary key and the user id column as a
secondary key. An exemplary listing by id table is provided
immediately below.
TABLE-US-00005 Business Id User Id Collection Ids b1 u1 {c1, c2} b2
u1 {c1} b2 u2 {c2}
[0452] Although the listings table and listings by id table
contains similar, if not identical information, each table may be
utilized to optimize database performance under different use
cases. For example, the listings table can be used to facilitate
fast retrieval of collections associated with a given user and
business, thus optimizing the use case where a user views
collections associated with his/her own businesses. On the other
hand, the listings by id table can be used to support efficient
implementation of a business indicator functionality discussed
below.
[0453] Various use cases or features related to the orchestration
platform (also referred to as personalization system or service)
are discussed below, as supported by the above database tables are
discussed above. The personalization system or service may allow
users to create, search, edit, follow, and/or share collections and
well as adding and removing business listings to the collections.
Data generated or used as part of the personalization system or
service (e.g., collections and business listings) may be stored by
and rendered available by the data storage system (e.g., via an
API). In some embodiments, data and/or services provided by the
data storage system may be used by the personalization system to
generate recommendations to end uses as discussed in FIGS. 22-25
and/or to facilitate user-directed queries and responses as
discussed in FIGS. 26-28.
[0454] In an embodiment, the personalization system or service can
be configured to indicate to a user whether each of a list of
businesses is included in one or more collections that belong to
the user. The list of businesses may include search results,
recommended businesses, businesses in another user's collection,
advertisements, or any combination thereof. An indicator may be
displayed alongside each business in the list and graphically
distinguished in any suitable manner, including with images, shape
differentiation, color differentiation, alphanumeric indicia,
and/or the like. The indicator may correspond to one or more
user-selection options that allow a user to view further details
associated with the business, and/or removing or adding the
business to a collection of the user. The indicator may also
display a list of the one or more collections of the user in which
the particular business is included. Alternatively, such a
collections list may be displayed upon a user selection of the
indicator.
[0455] To implement the above-discussed business indicator
functionality, one approach is to attempt using the listings table
(discussed above) to select each entry that has a user id that is
the same as the current user's id and a business id that falls
within the list of businesses, such as using the following
exemplary query (assuming an exemplary list contain five business
listings): [0456] select business_id, collection ids from listings
where user_id=`u1` and business_id IN (`b1`, `b2`, `b3`, `b4`,
`b5`)
[0457] However, such a query may not be permitted due to certain
restrictions imposed by the underlying database management system.
For example, an exemplary restriction may specify that an IN query
(using multiple values) may be performed only on a primary key, and
not a secondary key, when the SELECT includes a collection column
(e.g., including a list, set, or map). Here, the collection ids
column is a collection column (containing a set of collection ids)
and the business id column is a secondary key of the listings
table, hence the above IN query using the secondary key would not
be permitted under the restriction. If the listings table is used,
individual queries (such as those below) would have to be made for
each of the business in the list, rather than the efficient single
IN query above, resulting in performance overhead. When the list of
business is long, the performance impact can be significant. [0458]
select business_id, collection ids from listings where user_id=`u1`
and business_id=`b1`; [0459] select business_id, collection ids
from listings where user_id=`u1` and business_id=`b2`; [0460]
select business_id, collection ids from listings where user_id=`u1`
and business_id=`b3`; [0461] select business_id, collection ids
from listings where user_id=`u1` and business_id=`b4`; [0462]
select business_id, collection ids from listings where user_id=`u1`
and business_id=`b5`;
[0463] A better approach would be to use the listings by id table,
discussed above, which contain the same data as the listings table
but with the business id column as the primary key and user id
column as the secondary key. As such, a single IN query can be used
(below) that complies with the restriction on IN queries discussed
above, instead of multiple "=" queries. [0464] select
collection_ids from listings_by_id where user_id=`u1` and
business_id IN (`b1`, `b2`, `b3`, `b4`, `b5`)
[0465] By providing and using the listings by id table instead of
the listings table, the functionality of indicating whether
businesses in a given list of businesses belong to a given user can
be supported efficiently while addressing restrictions of the
underlying database.
[0466] In an embodiment, the personalization system or service can
be configured to support searching of collections. A user may be
allowed to perform a search of public and/or featured collections
based on one or more collection attributes such as geographical
location, name, description, keyword, and the like. Details about
the search results (e.g., collections) may be displayed. In an
exemplary implementation, the search results may be returned in two
steps. In the first step, collection information may be searched
based on the user-specified attributes to return a list of
collection identifiers of the search results. For this step, a
first database optimized for attribute-based search may be queried
using the user-specified attributes. An example of such a first
database may include a document-oriented NoSql database (e.g.,
Elasticsearch). The resulting collection identifiers may be used,
in a second step, to query a second database optimized for
retrieval of collection information based on collection
identifiers. An example of such a second database may include a
column-based NoSql database (e.g., Cassandra). In an embodiment,
the first database is used to store a subset of information that is
stored in the second database. The subset of information may
include searchable collection attributes associated with collection
identifiers. Complete details of collections including searchable
attributes and other information may be stored in the second
database. Storing only a subset of collection information in the
first database allows the attribute search to be performed more
quickly and efficiently. In an alternative embodiment, one single
database may be used to implement both steps. One approach for
implementing the above steps is to query the collections table
(e.g., discussed in FIG. 32) using local collection ids. However,
since local collection ids may not be unique across different
users, the results of the query to the collections table may need
to be additionally disambiguated among the users, resulting in
extra work and slower performance. A more efficient approach is to
use global collection identifiers that uniquely identify
collections even across different users in the first and second
steps above. That is, the first step would return a list of global
collection ids corresponding to the search results and the list of
global collection ids can be used to query the collections by id
table efficiently to obtain the associated collection information.
Furthermore, another reason for using the collections by id table
instead of the collections table may be to get around certain
restriction imposed by the underlying database management system.
Such restriction may specify that a query may not be done using a
secondary key without the primary key. Since the collections table
has user id as the primary key and collection id as the secondary
key, a query may not be performed on the table using only the
secondary key, collection id, without using the primary key, user
id, according to the restriction. On the other hand, the
collections by id table has global collection id as the primary key
and so can be queried using that a global collection id only to
obtain the desired results without violating the restriction. By
providing and using the collections by id table instead of the
collections table, the functionality of collection search can be
supported efficiently while addressing restrictions of the
underlying database.
[0467] In an embodiment, the personalization system or service can
be configured to support following of collection(s). In particular,
a user may be allowed to follow a public and/or featured collection
of another user (e.g., by selecting a user control associated with
the collection). One approach for implementing following a
collection is to copy the data associated with the followed
collection into a new collection associated with the user. However,
such an approach would require updating the user's copy of the
followed collection whenever the followed collection is updated. If
a popular collection is followed by thousands of users, updating
thousands of copies of the collection can undesirable with respect
to performance. A preferred approach is to create a link or
shortcut to, instead of making a copy of, the followed collection
for each follower. For example, as discussed in FIG. 32, an entry
can be created in the collections table 3202 with a link to the
corresponding followed collection entry in the collections by id
table 3204. The following entry may include the global collection
id of the original followed collection, the user id and local
collection id of the original followed collection, and a role to
indicating whether following entry is a following entry or an owned
or original collection.
[0468] During a lookup of the collections table, if an entry in the
collections table represents a followed or shared collection (e.g.,
as determined based on the role field of the entry being `f` or
`s`), then another lookup using the global collection id may be
used to query the collections by id table to retrieve the details
of the corresponding followed collection. If the entry in the
collections table represents an owned or original collection (e.g.,
as determined based on the role field of the entry being `o`), then
the details of the collection as stored in the collections table
can be returned without further lookup.
[0469] In some embodiments, identity of the followers for a given
public and/or featured collection may be stored, for example, in a
followers field or column of a followed collection. The information
about followers may be useful for implementing user notification of
trigger events associated with the followed collection such as
updating attributes of the collection (e.g., geographic location,
keywords, description), adding a business to the collection,
removing a business from the collection, copying/following of the
collection, a search performed on the followed collection or a
business contained therein, and/or the like. Notification may be
provided to some or all of the followers associated with a followed
collection according to the notification preferences associated
with the followers. For instance, the notification preferences may
specify the types of trigger events a user would like to be
notified of and/or the types of trigger events that the user prefer
not to receive notification for. A follower that has turned off
notification may not receive any notification regarding the
followed collection. The notification preferences may also specify
the delivery-related preferences such as user-preferred delivery
methods (e.g., email, text message, online social/business
networking services, telephone call), user-preferred delivery
addresses (e.g., email address, phone number), preferred time
(e.g., evenings) and/or frequency (e.g., hourly, daily, weekly) of
delivery, and the like. The notification preferences may be
user-configurable (e.g., via a user interface) and/or
system-provided.
[0470] In an embodiment, the personalization system or service can
be configured to support the sharing of collections with specific
users. These shared collections can be "read only" (R) or "write
access" (W) (collaboration). Similar to the requirement discussed
above with respect to followed collections, it can be undesirable
to create multiple copies of the same collection whenever the
collection is shared due to performance concerns. Rather, sharees
of collections may have dummy entries in the collections table that
link to the original collection that is shared such as discussed in
connection with FIGS. 32 and 33. The role field of a sharee's dummy
entry (e.g., role column 3344 of FIG. 33) can indicate the type of
the sharee collection (e.g., `rs` for read-only share and `ws` for
write share). Based on the role field, access control may be
implemented accordingly to allow or forbid read/write operations by
users with respect to the shared collection.
[0471] Additionally and/or alternatively, access control to shared
collections may be implemented by a map of share permissions that
is maintained for a shared collection (e.g., as shown by the
permissions column 3340 and 3348). As an example, if user shared
the collection with users u1 and u2 with read-only permission and
with u3 with write access, the following map of share permissions
may be stored:
TABLE-US-00006 { `u1`: `r`, `u2`: `r`, `u3`: `w` }
[0472] Such share permissions may enable the determination of
whether an update to a collection entry should be allowed. For
instance, a request for update may be made to a collection with
collection id by a user with user id. The collection id and user id
may be used to retrieve a entry from the collections table. If the
entry is a link to a shared collection (e.g., as determined by the
role column), then permissions column of the link entry or the
linked entry may be examined to determine the access right of the
given user.
[0473] Updates by multiple users to a collaboration collection (a
shared collection with write access) may be tracked with a map
between businesses in the collection and users that added the
businesses. Such a map can be stored, for example, in the added by
user column 3336 of the collections table and/or the added by user
column 3354 of the collections by id table. In some embodiments, an
audit trail of a collaboration collection may be provided based on
such a map.
[0474] In an embodiment, the personalization system or service can
be configured to allow editors (e.g., owners or a sharees with
write access) of a collection to set an order for the businesses
contained within the collection. The order map may be used to map
businesses within a collection to an order or sequence number. Such
an order map may be stored, for example, in the order column 3334
and/or order column 3356 discussed in FIG. 33. In some embodiments,
certain validation rules may be used to ensure the validity of a
user-provided order and/or to automatically order the businesses.
Additionally, the personalization system or service may allow users
to provide or update other attributes associated with businesses
added in a collection such as location information, description,
images, keywords, rating, and the like. Such business attributes
may be stored, for example, in corresponding columns in the
business portion of a collection record (e.g., the business
portions 3310 and 3314 of FIG. 33).
[0475] In an embodiment, the personalization system or service can
be configured to support recording and/or reporting of statistics
related users, collections, businesses, and/or any other suitable
entities of the personalization system. The statistics may be
provided to other components of the personalization system, such as
the information handling engines 243 discussed in FIG. 2D and/or
external users, devices, or processes. For example, the statistics
(e.g., use statistics, existing business listings/collections
associated a user) may be analyzed to gauge a user's preferences,
interests or habits so as to generation recommendations for users
as discussed elsewhere in the disclosure. The recommendations may
be generated in combination with other user-specific information
such as demographic information, geographic location information,
and the like. The recommendations may include recommended business
listings, recommended collections, recommended search terms, and
the like. In some embodiments, the recording and/or reporting of
the statistics may be performed in real time or nearly real time.
For instance, the statistics may be made available in real-time via
an API or graphical user interface. In some other embodiments, the
recording and/or reporting of the statistics may be performed
periodically. For instance, the statistics may be provided to users
using any suitable communication methods (e.g., email, text
messaging, phone calls) on a periodic basis. In some embodiments,
audit trails that show recent events or actions may be provided.
For instance, a user may view, on a user interface of the
personalization system, one or more recent businesses that the user
has recently added, one or more searches that the user has
performed, one or more collections that the user has
created/followed/shared.
[0476] In some embodiments, duplicate statistics within a
predefined period of time may be filtered and/or removed. For
instance, if a user performs an identical action (e.g., performing
the same search) at different times (e.g., 5 times) within a
relatively short period of time (e.g., 30 seconds), then only one
occurrence of the action may be recorded and/or provided as part of
the statistics data. The removal of the duplicate actions or events
may facilitate identification of distinct actions and/or events. In
some other embodiments, all occurrences of relevant actions and/or
events are recorded regardless and/or reported regardless of
duplicates.
[0477] For a collection, the collection-related statistics may
include a total number the collection is viewed by users, a total
number of updates to the collection, a total number of search hits
for the collection, a total number of followers of the collection,
and the like. For a business, the business-related statistics may
include a total number of users who have the business in their
collections, a total number of collections that have the business,
and the like. For a user, the user-related statistics may include a
total number of collections (e.g., with a breakdown of owned,
followed, and privately shared collections) for the user, a total
number of businesses in the collections of the user, a number of
followers for the user (e.g., for some or all of the collections
associated with a user), a number of users with which the user has
shared collections with, a number of users from which the user has
received shared collections, a total number of coupons for the
user, a total number of notes or comments for businesses (e.g.,
within or outside of the user's collections) that are provided by
the user, bookmarks made by the user for collections and/or
businesses, ratings and/or reviews submitted by the user (e.g., for
businesses and/or collections), and the like. In some cases,
operations performed by one user may affect statistics for another
user. For instance, if a user u1 shares a collection with a user
u2, updates to the shared collection (e.g., addition or removal of
business from the collection) can affect the statistics for both
the user u1 and the user u2. The user-related statistics may also
include statistics about a user's interaction with a user interface
provided by the personalization system such as searches performed
by the user (e.g., including searches for collections and/or
businesses), collections and/or businesses selected by the user,
calls or emails sent to businesses through an interface of the
personalization system, and the like.
[0478] FIG. 34 illustrates an example process 3400 for implementing
retrieval of collection information, in accordance with
embodiments. Aspects of the process 3400 may be performed, in some
embodiments, by components of a data storage system or service such
as discussed in connection with FIG. 31. Some or all aspects of the
process 3400 (or any other processes described herein, or
variations and/or combinations thereof) may be performed under the
control of one or more computer/control systems configured with
executable instructions and may be implemented as code (e.g.,
executable instructions, one or more computer programs or one or
more applications) executing collectively on one or more
processors, by hardware or combinations thereof. The code may be
stored on a computer-readable storage medium, for example, in the
form of a computer program comprising a plurality of instructions
executable by one or more processors. The computer-readable storage
medium may be non-transitory. The order in which the operations are
described is not intended to be construed as a limitation, and any
number of the described operations may be combined in any order
and/or in parallel to implement the processes.
[0479] The process 3400 can include receiving 3402 a request to
retrieve collection data of a collection. In an example, the
request may be transmitted from a data user 3104 and received by an
interface server 3108 of a data storage system as discussed in
connection with FIG. 31. The request may include a user identifier
(user id) that uniquely identifies a respective a user of the
personalization system and a local collection identifier
(collection id) that uniquely identifies a respective collection
from collections associated with the respective user. In some
cases, the user may include a currently logged in or active user of
the system.
[0480] In response to receiving the request to retrieve collection
data, a first entry from a database table can be retrieved 3404
based at least in part on the request. In particular, the first
database table can include a collections table such as the
collections table 3202 discussed in FIG. 32. The collections table
can include a plurality of entries, each of the entries including
at least a user identifier that uniquely identifies a respective
user of the system, a local collection identifier that uniquely
identifies a respective collection from collections associated with
the respective user, and a role indicator that indicates whether
the respective collection is owned by the respective user or
followed by the respective user. Each entry of the collections
table can represent an owned collection or a collection that is
followed by or shared with the respective user. Retrieving the
first entry from the first table based on the request may include
retrieving the first entry by querying the first table with the
user id and the local collection id that are included in the
request.
[0481] The retrieved first entry can include a role indicator that
indicates the collection type. For instance, the role indicator may
indicate whether the entry corresponds to an owned collection
(e.g., when the role indicator is `o` or any other suitable value)
or a followed collection (e.g., when the role indicator is `f` or
any other suitable value). Additionally, the role indicator may
also be used to indicate whether the entry corresponds to a shared
collection (e.g., when the role indicator is `s` or any other
suitable value). In some embodiments, the role indicator may be
used to indicate access rights associated with the collection such
as a read-only shared collection (e.g., when the role indicator is
`rs` or any other suitable value) or a write access (editable)
shared collection (e.g., when the role indicator is `ws` or any
other suitable value). When the role indicator indicates that the
entry corresponds to an owned collection, it means the collection
is originally created by the user with the user id of the entry,
owned by the user, and/or editable by the user. When the role
indicator indicates that the entry corresponds to a followed
collection, it means the collection is originally created by a
different user but followed by the user associated with the first
entry. When the role indicator indicates that the entry corresponds
to a shared collection, it means the collection is originally
created by a different user than the user of the entry but shared
with the user associated with the first entry. For example, the
role indicators for the entries 3210 and 3214 of the collections
table 3202 would be `o` for owned collections whereas the role
indicators for the entries 3212 of the collections table 3202 may
be `f`, `rs`, or `ws`, depending on whether the corresponding
collection c2 of user u1 represents a followed or shared
collection.
[0482] Based at least in part on the role indicator of the first
entry, it can be determined 3406 whether the corresponding
collection is an owned collection. If it is determined that the
collection represented by the first entry is an owned collection
(e.g., when the role indicator is `o`), then the first entry may be
provided 3408, in whole or in part, in a response to the first
request. As discussed above, an entry representing an owned
collection typically includes detailed collection data such as data
about businesses in the collection (e.g., business ids, locations,
descriptions, images, order numbers) and collection attribute
information (e.g., keywords), and the like.
[0483] Otherwise, if it is determined that the collection
represented by the first entry is not an owned collection (e.g.,
when the role indicator not `o`), then it means that the first
entry corresponds to a shared or followed collection and contains a
link to the underlying collection rather than the collection data
itself. In this case, a second entry may be retrieved 3410 from a
second data based at least in part on the first entry. In
particular, the second database table can include a collections by
id table such as the collections by id table 3204 discussed in FIG.
32. The collections by id table can include a plurality of entries,
each of the entries including at least a global collection
identifier that uniquely identifies a respective collection from
the plurality of collections associated with the plurality of
users. When the first entry represents a non-owned collection
(e.g., a followed collection or a shared collection), the first
entry includes linking information to the actual owned collection
in the collections by id table, rather than detailed collection
data such as data about businesses in the collection. Linking
information may include or be used to generate a global collection
id or other identifying information of the underlying collection
entry in the collections by id table that contain the detailed
collection data (e.g., of a followed or shared collection). In an
embodiment, each entry of the collections by id table can represent
only owned collections. Retrieving the second entry from the second
table based on the first entry may include retrieving the second
entry by the linking information (e.g., global collections id) that
is included in the first entry. The retrieved second entry may be
provided 3412, in whole or in part, in a response to the first
request. By storing linking information in the collections table
instead of actual collection data of a linked collection (e.g.,
followed collection or shared collection), multiple updates can be
avoided when the underlying collection is updated. Additionally,
storing similar data in different tables with different data model
designs (e.g., different primary and/or secondary keys) allows the
data storage system to provide optimized solutions to different use
cases in a flexible manner.
[0484] FIG. 35 illustrates an example process 3500 for implementing
update of collection information, in accordance with embodiments.
Aspects of the process 3500 may be performed, in some embodiments,
by components of a data storage system or service such as discussed
in connection with FIG. 31.
[0485] The process can include receiving 3502 a request to update
collection data of a collection. In an example, the request may be
transmitted from a data user 3104 and received by an interface
server 3108 discussed in connection with FIG. 31. The request may
be include a user identifier (user_id) that uniquely identifies a
respective a user of the personalization system and a local
collection identifier (collection id) that uniquely identifies a
respective collection from collections associated with the
respective user. The request may also include updated data for the
collection. Furthermore, the request may also include identity
(e.g., user_id) of the user requesting the update. The requesting
user may or may not be the same as the user associated with the
collection to be updated.
[0486] In response to receiving the request to retrieve collection
data, a first entry from a database table can be retrieved 3504
based at least in part on the request similar to the step 3404 of
the process 3400 discussed above in connection of FIG. 34.
[0487] The update may be validated 3506 to ensure that the update
is permissible given the requesting user's access right. In some
embodiments, the validation can be based at least in part on the
role indicator of the first entry (e.g., a role field 3344 of FIG.
33). For instance, the role indicator may indicate whether the
collection corresponding to the first entry is a first entry is a
read-only shared collection (e.g., the role indicator is `rs`) or
whether it is a write access shared collection (e.g., the role
indicator is `ws`). If the requesting user is the same as the user
associated with the first entry, then access right of the
requesting user is the same as indicated by the role indicator. As
another example, if the role indicator indicates that the
collection corresponding to the first entry is a followed
collection instead of an owned collection, then the collection may
not be updatable by users other than the owner. Additionally or
alternatively, the validation may be based at least in part on a
map of shared permissions associated with the first entry, the map
of share permissions mapping one or more user identifiers with
corresponding one or more permission indicators (e.g., `r` for
read-only access and `w` for write access), the one or more user
identifiers corresponding to one or more users that share the
respective collection. The requesting user's id may be used to look
up the share permissions map to determine the requesting user's
access right with respect to the collection. The permissions map
may be used, for example, when the requesting user is not the same
as the user associated with the first entry and the role indicator
associated with the first entry cannot be used to identify the
access right of the requesting user. The update by the requesting
user is allowable if the access right is write access. The update
by the requesting user may not be allowable if the access right is
read-only access.
[0488] If the validation fails (e.g., the requesting user does not
have the required access right to the collection), then the
collection is not updated and an error message or log may be
provided. Otherwise, if the validation succeeds (e.g., the
requesting user has the required access right to the collection),
then the collection is updated. Based on the first entry, it may be
determined 3508 whether the first entry corresponds to an owned
collection, in a manner similar to the step 3406 of process 3400 in
FIG. 34. If it is determined that the first entry corresponds to an
owned collection, then the first entry may be updated 3510
according to the update request. For example, updated values in the
update request may be stored in corresponding fields of the first
entry. Otherwise, if it is determined that the first entry does not
correspond to an owned collection (e.g., the collection is a shared
or followed collection), then a second entry from a second table
may be identified 3512 based at least in part on the first entry,
for example, in a manner similar to step 3410 of the process 3400
in FIG. 34. For instance, the first entry may include linking
information to the actual owned collection in the collections by id
table, rather than detailed collection data such as data about
businesses in the collection. Linking information may include or be
used to generate a global collection id or other identifying
information of the entry in the collections by id table that
contain the detailed collection data of a followed or shared
collection. Once the second entry is identified 3512, the second
entry may be updated 14 according the update request.
[0489] In some embodiments, the validation step 3506 may be
performed immediately before the update operations in steps 3510
and/or 3514. For instance, validation based on a role indicator
and/or a map of share permissions of the second entry after the
second entry has been identified 3512.
[0490] In various embodiments, updating a collection can include
updating any of the fields associated with the collection. For
instance, when a business is added to a collection, the business
ids field of a collection may be updated to include the newly added
business. Additionally, in some embodiments, the added by user
field of the collection (e.g., the added by user fields 3338 and/or
3354 of FIG. 33) may be updated to include the user that added the
new business to the collection.
[0491] Once the collection has been updated, it may be determined
3516 whether update notifications need to be provided and if so, to
which users. In some embodiments, the determination may be based at
least in part on a followers field of the updated collection. The
determination may be based on a followers field associated with the
first entry of the first table (e.g., field 3338 of FIG. 33) or a
followers field associated with the second entry of the second
table (e.g., field 3346 of FIG. 33). A followers field can include
a set of followers that have followed the collection. Update
notifications may be provided 3518 to some or all of the followers
of the collection depending on the system setting and/or user
preferences. For instance, the system setting and/or user
preferences may specify the types of update that would trigger
notifications to some or all of the followers. The followers may
also turn on/off notifications for certain types of events. The
process 3500 may end 3520 if it is determined that no notifications
need to be sent.
[0492] FIG. 36 illustrates an exemplary environment 3600 for
implementing user notification, in accordance with embodiments. The
environment 3600 is similar to the environment 3100 shown in FIG.
31 except more details are shown for components implementing the
user notification feature. The data storage system 3602 can be
configured to detect the triggering of predefined events based on
the data stored in the data storage system 3602 and to cause
notifications regarding the triggered events to be provided to
predetermined users 3616. For example, when a collection is
updated, followers of the collection may receive notification of
such update.
[0493] The data storage system 3602 may be similar to the data
storage system 3102 discussed in FIG. 31. For instance, data
storage system 3602 can include an interface layer 3606 implemented
by one or more interface servers 3608. The interface layer 3606 may
be configured to communicate with a plurality of storage entities
used to store data such as one or more storage nodes 3612 and
datacenters 3610. The interface layer 3606 may also be configured
to communicate with a plurality of external and/or internal devices
or processes via the API provided by the interface layer 3606.
[0494] In an embodiment, a user may be allowed to define trigger
events, for example, via a user interface provided by the
personalization system. The trigger events may be associated with
trigger conditions and trigger actions. The trigger conditions may
specify when the trigger actions should occur. The trigger
conditions may be related to data operations (e.g., read/write
events) and/or changes to data values (e.g., when a data value
reaches, exceeds, or falls below a threshold value). The trigger
actions may specify the types of actions that may occur when the
trigger conditions are satisfied. For instance, the trigger actions
may specify that one or more users should be notified of the
triggered events. The users may be allowed to specify preferences
with respect to notifications such as the types of trigger events
to be notified and/or the types of trigger events not to be
notified of, preferred methods for the delivery of notifications
(e.g., postal mail, email, text message, phone call, website, web
service), recipient information for the delivery (e.g., email
address or phone number of the intended user), the time and/or
frequency of delivery of notifications, and the like. Such trigger
event and user preference information may be stored in the one or
more storage entities of the data storage system 3602. In some
embodiments, aspects of the user notification feature may be
system-defined and/or user-configurable. For instances, the trigger
conditions, trigger actions, users to notify, notification timing,
and the like may be provided by default and/or configurable by
user.
[0495] The interface layer 3606 may be configured to create event
messages when a trigger event is triggered. The event message may
include details about the triggered event such as the time when the
event is triggered, the type of data (e.g., business or
collection), the type of data operation (e.g., read/write), the
duration of the data operation, the identity of a user or process
that performed or requested the data operation (e.g., a user that
added a business to a collection), relevant data values (e.g., old
and/or updated data values), and the like. The event message can
include a user or a set of users that need to receive notifications
about the triggered event and/or information regarding the delivery
of the notifications. In an embodiment, an event message is
generated for each user that needs to be notified. In another
embodiment, one event message may be generated for a group of users
that need to be notified.
[0496] Data used to generate the event messages, such as details
about a triggered event, user or users to be notified, information
regarding the delivery of the notifications, and the like may be
stored in the storage entities (e.g., storage nodes, storage
devices) and/or otherwise made available to the interface layer
3606. For example, details about a triggered event may be recorded
automatically in database tables or provided to directly the
interface layer. A set of users to be notified for a given event
(e.g., followers) may be stored with the data object (e.g.,
collection) for which a trigger is defined. User preferences
regarding notifications may also be stored in database tables,
configuration files, or the like that are accessible to the
interface layer 3606.
[0497] As an example, when a business is added to a collection, an
event message may be created for each of the followers of the
collection, if any. The event message may include a time when the
business was added, attributes of the business (e.g., name and
geographic location), attributes of the collection (e.g., name and
owner), identifying information (e.g., username) of a user that
added the business to the collection, and the like. The event
message for each of the followers may also information about the
intended receiver of the notification such as preferred method(s)
of delivery of notifications (e.g., postal mail, email, text
message, phone call, website, web service), recipient information
for the delivery (e.g., email address or phone number of the
intended user), the time and/or frequency of delivery of
notifications, and the like. In some cases, user preferences (e.g.,
specifying whether a user would like to turn on or off notification
for certain types of events) may be used to determine whether
and/or how to generate an event message for the given user.
[0498] The event messages may be inserted into an outgoing message
queue 3614 or queue-based data structure. The outgoing message
queue 3614 may be implemented by a file or data store as part of
the data storage system 3602 or by an external device or process.
The communication between the interface layer 3606 and the outgoing
message queue 3614 may be implemented using any suitable messaging
protocol such as RabbitMQ.
[0499] A notification engine 3604 may be configured to retrieve
event messages from the outgoing message queue 3606, process the
event messages 3606 (e.g., to extract the intended user and/or
delivery mechanism), and cause notification messages to be provided
to the intended users using the intended delivery mechanisms based
on the event messages. The notification engine 3604 may or may not
be part of the personalization system discussed herein. In an
example, the notification engine 3604 may include or be included in
an information handling engine 243 discussed in FIG. 2D.
[0500] In some embodiments, the notification engine 3604 may also
be configured to generate result messages indicating a status of
the delivery of notifications and insert the result messages into
the incoming message queue 3618. The result messages may indicate
whether the corresponding notifications have been delivered
successfully. The interface layer 3606 may be configured to
retrieve resulting messages from incoming message queue 3618 and
store the results persistently (e.g., in one or more data storage
nodes 3612).
[0501] In some embodiments, the notification feature discussed
above may be combined with any other functionality of the
interaction infrastructure discussed herein. As an example, the
notification feature may be combined with the recommendation
feature discussed in connection with FIGS. 22-25. In particular,
recommendations as generated by the recommendation engine may be
provided as user notifications to end users according to
user-specified preferences and/or system settings, for example,
using the message queue mechanism described above. As another
example, the notification feature may be combined with the
user-directed querying feature discussed in connection with FIGS.
26-28. For instance, queries directed to users and/or responses
received from users may be provided as user notifications to end
users according to user-specified preferences and/or system
settings.
[0502] Specific details are given in the above description to
provide a thorough understanding of the embodiments. However, it is
understood that the embodiments may be practiced without these
specific details. For example, circuits may be shown in block
diagrams in order not to obscure the embodiments in unnecessary
detail. In other instances, well-known circuits, processes,
algorithms, structures, and techniques may be shown without
unnecessary detail in order to avoid obscuring the embodiments.
[0503] Implementation of the techniques, blocks, steps and means
described above may be done in various ways. For example, these
techniques, blocks, steps and means may be implemented in hardware,
software, or a combination thereof. For a hardware implementation,
the processing units may be implemented within one or more
application specific integrated circuits (ASICs), digital signal
processors (DSPs), digital signal processing devices (DSPDs),
programmable logic devices (PLDs), field programmable gate arrays
(FPGAs), processors, controllers, micro-controllers,
microprocessors, other electronic units designed to perform the
functions described above, and/or a combination thereof.
[0504] Also, it is noted that the embodiments may be described as a
process which is depicted as a flowchart, a flow diagram, a swim
diagram, a data flow diagram, a structure diagram, or a block
diagram. Although a depiction may describe the operations as a
sequential process, many of the operations can be performed in
parallel or concurrently. In addition, the order of the operations
may be re-arranged. A process is terminated when its operations are
completed, but could have additional steps not included in the
figure. A process may correspond to a method, a function, a
procedure, a subroutine, a subprogram, etc. When a process
corresponds to a function, its termination corresponds to a return
of the function to the calling function or the main function.
[0505] Furthermore, embodiments may be implemented by hardware,
software, scripting languages, firmware, middleware, microcode,
hardware description languages, and/or any combination thereof.
When implemented in software, firmware, middleware, scripting
language, and/or microcode, the program code or code segments to
perform the necessary tasks may be stored in a machine readable
medium such as a storage medium. A code segment or
machine-executable instruction may represent a procedure, a
function, a subprogram, a program, a routine, a subroutine, a
module, a software package, a script, a class, or any combination
of instructions, data structures, and/or program statements. A code
segment may be coupled to another code segment or a hardware
circuit by passing and/or receiving information, data, arguments,
parameters, and/or memory contents. Information, arguments,
parameters, data, etc. may be passed, forwarded, or transmitted via
any suitable means including memory sharing, message passing, token
passing, network transmission, etc.
[0506] For a firmware and/or software implementation, the
methodologies may be implemented with modules (e.g., procedures,
functions, and so on) that perform the functions described herein.
Any machine-readable medium tangibly embodying instructions may be
used in implementing the methodologies described herein. For
example, software codes may be stored in a memory. Memory may be
implemented within the processor or external to the processor. As
used herein the term "memory" refers to any type of long term,
short term, volatile, nonvolatile, or other storage medium and is
not to be limited to any particular type of memory or number of
memories, or type of media upon which memory is stored.
[0507] Moreover, as disclosed herein, the term "storage medium" may
represent one or more memories for storing data, including read
only memory (ROM), random access memory (RAM), magnetic RAM, core
memory, magnetic disk storage mediums, optical storage mediums,
flash memory devices and/or other machine readable mediums for
storing information. The term "machine-readable medium" includes,
but is not limited to portable or fixed storage devices, optical
storage devices, and/or various other storage mediums capable of
storing that contain or carry instruction(s) and/or data.
[0508] While the principles of the disclosure have been described
above in connection with specific apparatuses and methods, it is to
be clearly understood that this description is made only by way of
example and not as limitation on the scope of the disclosure.
* * * * *