Providing coupons based on user selected preference options

A device is configured to receive, from a first mobile device of a first user of a group of users, information identifying a first location of the first mobile device and to receive, from a second mobile device of a second user of the group, a second location of the second mobile device. The device is further configured to determine a geographic area of a venue associated with a coupon. The device is also configured to match the coupon to the group when the first location and the second location are within the geographic area, and transmit information associated with the matched coupon to the first mobile device and the second mobile device. The group is organized by the first user or the second user for a plurality of users to receive coupons for a particular type of service associated with the matched coupon.

BACKGROUND

Coupon services currently provide coupons for various services, products, etc. to potential customers online via, for example, dedicated websites of the companies, email, online advertisements, etc. The coupon services often provide coupons that are targeted based on a permanent location associated with a user. For example, certain coupon services provide coupons, to a user, based on a location of the user when the user is accessing a dedicated website that is providing the coupons. The coupon services are unable to take into account that users may move to different locations, at different times, which are associated with various coupons. The users are unlikely to proactively seek out coupons online at the different times. Furthermore, a single coupon is often an offer for multiple people, such as a coupon for dinner for four people, at a particular restaurant, for a particular price, and during a particular day. A user who is traveling may forego such a coupon because the user is unaware that the user's contacts are in the same geographic area as the user and would also be interested in enjoying the offer with the user.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

An implementation, described herein, may provide coupons to users who move to different geographic locations. For example, a user may register for a catch-up service by specifying information associated with a mobile device of the user, preferences of the user, and/or contacts of the user. A server, associated with the catch-up service, may receive, from the mobile device, information identifying a location of the mobile device. The server may identify coupons for the user based on the location, one or more of the contacts of the user that are within a geographic area associated with the location, and/or the preferences of the user. The server may transmit information associated with one or more of the identified coupons to the mobile device and/or to mobile device(s) of the contacts of the user that are within the geographic area. As a result, the user who traveled to the location is able to take advantage of the coupon(s) with one or more of his contacts.

FIG. 1is a diagram of an example environment100in which a system and/or method described herein may be implemented. As shown inFIG. 1, environment100may include one or more of the following components: mobile devices110-1,110-2, . . . ,110-N (where N≧1) (collectively referred to as “mobile devices110” and individually as “mobile device110”); a catch-up server120; coupon servers130-1. . .130-M (where M≧1) (collectively referred to as “coupon servers130” and individually as “coupon server130”); social network server140; and a network150. Three mobile devices110, one catch-up server120, two coupon servers130, one social network server140, and one network150have been illustrated inFIG. 1for simplicity. In practice, there may be additional or fewer mobile devices110, catch-up servers120, coupon servers130, social network servers140, and networks150. Also, in some implementations, one or more of the components of environment100may perform one or more functions described as being performed by another one or more of the components of environment100.

Furthermore, two or more of the components, ofFIG. 1, may be implemented within a single device, or a single device may be implemented as multiple, distributed devices. Also, components of environment100may interconnect via wired and/or wireless connections. In other words, any two components, of environment100, may communicate via a wired connection, a wireless connection, or a combination of a wired connection and a wireless connection.

Mobile device110may include any computation or communication device, such as a communication device that is capable of communicating with catch-up server120via network150. In one implementation, mobile device110may take the form of a smart phone, a personal digital assistant (PDA), a mobile telephone device, a handheld computer, a personal media player, etc. In another implementation, mobile device110may take the form of a laptop computer or any other mobile computer device capable of transmitting and/or receiving data. Mobile device110may store contacts, such as identifiers of people associated with the user. In one example, mobile device110may transmit a signal (e.g., a global positioning system (GPS)) identifying a geographic location of mobile device110, to catch-up server120. In response, mobile device110may receive information about coupons from catch-up server120, and may display a representation of the information about the coupons.

Catch-up server120may represent a single server device or a collection of multiple server devices and/or computer systems. In one implementation, catch-up server120may register users of mobile devices110for a catch-up service provided by catch-up server120. Additionally, or alternatively, catch-up server120may facilitate the catch-up service by, for example, receiving information about coupons from coupon servers130; determining locations of mobile devices110of users that are registered for the catch-up service; and transmitting information about one or more of the coupons to mobile devices110of users within one or more groups.

Coupon server130may represent a single server device or a collection of multiple server devices and/or computer systems. In one implementation, coupon server130may provide coupons for various services (e.g., food-related services, entertainment services, etc.), products, etc. In one example, coupon server130may provide a coupon that is valid for a particular period of time (e.g., 24 hours). An operator of coupon server130may provide the coupons based on request(s) from and/or arrangement(s) with providers of the services, sellers of the products, intermediary third parties, etc. Coupon server130may transmit information about available coupon(s) to catch-up server120.

Social network server140may represent a single server device or a collection of multiple server devices and/or computer systems. In one implementation, social network server140may provide a social networking service to users of mobile devices110. Social network server140may indicate connection(s) between a user of mobile device110and one or more other users, including friends of the user, professional associates of the user, family members of the user, acquaintances of the user, etc. The user may a website/dedicated application, provided by social network140, to establish new connections with additional users of mobile devices110that are registered for the catch-up service.

Network150may include a single network, multiple networks of a same type, or multiple networks of different types. For example, network150may include one or more of a direct connection between devices, a local area network (LAN), a wide area network (WAN) (e.g., the Internet), a metropolitan area network (MAN), a wireless network (e.g., a general packet radio service (GPRS) network), a telephone network (e.g., a Public Switched Telephone Network (PSTN) or a cellular network), a subset of the Internet, an ad hoc network, a fiber optic network (e.g., a fiber optic service (FiOS) network), or any combination of the aforementioned networks.

FIG. 2is a diagram of example components of mobile device110. As shown inFIG. 2, mobile device110may include a housing200, a speaker210, a display220, control buttons230, a keypad240, a microphone250, and/or a camera260. Housing200may include a chassis on which some or all of the components of mobile device110are mechanically secured and/or covered. Speaker210may include a component to receive input electrical signals from mobile device110and transmit audio output signals, which communicate audible information to a user of mobile device110.

Display220may include a component to receive input electrical signals and present a visual output in the form of text, images, videos and/or combinations of text, images, and/or videos which communicate visual information to the user of mobile device110. In one implementation, display220may display text input into mobile device110, text, images, and/or video received from another device, and/or information regarding incoming or outgoing calls or text messages, emails, media, games, phone books, address books, the current time, etc.

Control buttons230may include one or more buttons that accept, as input, mechanical pressure from the user (e.g., the user presses a control button or a combination of control buttons) and may send electrical signals to processing unit320that may cause mobile device110to perform one or more operations. For example, control buttons230may be used to cause mobile device110to transmit information. Keypad240may include a standard telephone keypad, keyboard, or another arrangement of keys. In an alternative implementation, keypad240may be presented as part of display220.

Microphone250may include a component to receive audible information from the user and send, as output, an electrical signal that may be stored by mobile device110, transmitted to another user device, or cause the device to perform one or more operations. Camera260may be provided on a front or back side of mobile device110, and may include a component to receive, as input, analog optical signals and send, as output, a digital image or video that can be, for example, viewed on the display210, stored in the memory of mobile device110, discarded and/or transmitted to another mobile device110.

AlthoughFIG. 2depicts example components of mobile device110, in other implementations, mobile device110may contain fewer, additional, different, or differently arranged components than illustrated inFIG. 2. In one example, mobile device110may also include one or more components described below with reference toFIG. 3. In still other implementations, one or more components of mobile device110may perform one or more tasks described as being performed by one or more other components of mobile device110.

FIG. 3is a diagram of example components of a device300that may be associated with mobile device110, catch-up server120, coupon server130, and/or social network server140. Each one of mobile device110, catch-up server120, coupon server130, and/or social network server140may include one or more devices300and/or one or more of each one of the components of device300.

As shown inFIG. 3, device300may include a bus310, a processor320, a memory330, an input component340, an output component350, and a communication interface360. In another implementation, device300may include additional components, fewer components, different components, or differently arranged components than are shown inFIG. 3.

Bus310may include a path, or a collection of paths, that permits communication among the components of device300. Processor320may include a processor, microprocessor, or processing logic that may interpret and execute instructions. Memory330may include any type of dynamic storage device that may store information and instructions for execution by processor320, and/or any type of non-volatile storage device that may store information for use by processor320.

Input component340may include one or more input mechanisms that permit a user to input information to device300. Output component350may include one or more output mechanisms that output information to the user. Examples of input and output mechanisms may include buttons (e.g., control buttons230, keys of keypad240or a keyboard, a mouse, a joystick, etc.); a touch screen interface to permit data and control commands to be input into device300; a speaker (e.g., speaker210) to receive electrical signals and output audio signals; a microphone (e.g., microphone250) to receive audio signals and output electrical signals; a display (e.g., display220) to output visual information (e.g., web pages, transaction information, mobile pin pad interface, etc.); a vibrator to cause device300to vibrate; a camera (e.g., camera260) to receive video and/or images; etc.

Communication interface360may include any transceiver-like mechanism that enables device300to communicate with other devices and/or systems. For example, communication interface360may include an Ethernet interface, an optical interface, a coaxial interface, a wireless interface, or the like.

In another implementation, communication interface360may include, for example, a transmitter that may convert baseband signals from processor320to radio frequency (RF) signals and/or a receiver that may convert RF signals to baseband signals. Alternatively, communication interface360may include a transceiver to perform functions of both a transmitter and a receiver of wireless communications (e.g., radio frequency, infrared, visual optics, etc.), wired communications (e.g., conductive wire, twisted pair cable, coaxial cable, transmission line, fiber optic cable, waveguide, etc.), or a combination of wireless and wired communications. Communication interface360may connect to an antenna assembly (not shown inFIG. 3) for transmission and/or reception of the RF signals.

The antenna assembly may include one or more antennas to transmit and/or receive RF signals over the air. The antenna assembly may, for example, receive RF signals from communication interface360and transmit them over the air, and receive RF signals over the air and provide them to communication interface360. In one implementation, for example, communication interface360may communicate with network150and/or devices connected to network150.

As will be described in detail below, device300may perform certain operations. Device300may perform these operations in response to processor320executing software instructions (e.g., computer program(s)) contained in a computer-readable medium, such as memory330, a secondary storage device (e.g., hard disk, etc.) or other forms of random access memory (RAM) or read only memory (ROM). A computer-readable medium may be defined as a non-transitory memory device. A memory device may include space within a single physical memory device or spread across multiple physical memory devices. The software instructions may be read into memory330from another computer-readable medium or from another device. The software instructions contained in memory330may cause processor320to perform processes described herein. Alternatively, hardwired circuitry may be used in place of or in combination with software instructions to implement processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.

FIG. 4is a flow chart of an example process400for registering for a catch-up service. In one implementation, catch-up server120may perform process400. In another implementation, a device or collection of devices separate from, or in combination with, catch-up server120may perform some or all of process400. For example, mobile device110and/or social network server140may perform one or more of the operations described as being performed by catch-up server120.

As shown inFIG. 4, process400may include receiving a registration request (block410). In one implementation, a user may decide to register for a catch-up service provided by catch-up server120. To register, the user may use mobile device110and/or another computing device (not shown inFIG. 1) to access a registration interface. In one example, the user may access the registration interface via (e.g., a catch-up application of) a social networking service provided by social network server140. In another example, the user may access the registration interface via a dedicated catch-up website provided by catch-up server120. In yet another example, the user may download a dedicated catch-up application to mobile device110, and may access the registration interface before and/or during the download process and/or via the dedicated catch-up application. Thereafter, in one implementation, the registration interface may prompt the user to enter user information (e.g., a username, a password, telephone numbers associated one or more mobile devices110of the user, etc.). Catch-up server120may receive the entered user information as part of a registration request.

Process400may further include transmitting preferences options (block420) and receiving selected preferences (block430). For example, after receiving the registration request, catch-up server120may transmit options for preferences that may specify which types of coupons the user may be interested in being notified about in the future via the catch-up service. The options for the preferences may include, for example, a type of service (e.g., sports activities, bar-related activities, restaurant activities, etc.), a quantity of people (e.g., coupon is for 2-3 people, 3-5 people, 5 or more people, etc.), a period of time (e.g., coupon is for a day-time activity, a night-time activity, a lunch-time activity, a dinner-time activity, etc.), etc. The user may use mobile device110and/or the other computing device to select one or more of the preferences based on the options. Mobile device110and/or the other computing device may transmit the selected preferences to catch-up server120. Catch-up server120may receive the selected preferences.

Process400may also include receiving a request for access to contacts (block440) and receiving permission to retrieve contacts (block450). For example, catch-up server120may transmit a request for access to contacts of the user. The contacts of the user may include contacts that are stored in mobile device110of the user and/or contacts of the user with which the user is connected to via one or more social networking services. In response to the request for access, the user may use mobile device110and/or the other computing device to provide permission for catch-up server120to retrieve contacts of the user from mobile device110. Additionally, or alternatively, the user may use mobile device110and/or the other computing device to provide permission for catch-up server120to retrieve contacts of the user from one or more social networking services. The permission to retrieve contacts may include, for example, an identifier of a social network service and information necessary to retrieve the contacts from the social networking service (e.g., a username and a password used by the user for the social network service). Catch-up server120may receive, from mobile device110and/or the other computing device, the permission to retrieve the contacts.

Process400may also include identifying registered contacts and providing an interface to organize registered contacts (block460). For example, based on the permission to retrieve the contacts, catch-up server120may retrieve the contacts of the user from mobile device110and/or from one or more social networking services. Thereafter, catch-up server120may identify which one or more of the retrieved contacts are also registered for the catch-up service. Catch-up server120may identify the registered contacts by, for example, determining whether a first name and a last name of a retrieved contact (and/or other identifying information) match corresponding information stored for any user of the catch-up service. Catch-up server120may provide an interface to mobile device110to organize the registered contacts. The interface may list all of the registered contacts. Additionally, catch-up server120may allow the user to send invitations to retrieved contacts of the user that were not identified as registered contacts to invite them to register for the catch-up service.

Process400may also include receiving information identifying group(s) of registered contacts (block470). In one implementation, the user may use the interface to organize the listed registered contacts into one or more different groups. In one example, the user may create a different group for one or more preferences selected by the user. For example, the user may create a first group for sport activities, a second group for bar-related activities, a third group for nighttime activities, a fourth group for services that are provided on Sundays, etc. Two or more of the groups may include one or more of the same registered contacts of the user. In another example, the user may create a different group based on relationships of the registered contacts to the user. For example, the user may create a fifth group that includes friends of the user, a sixth group that includes family members of the user, etc. Catch-up server120may receive information identifying the organized groups of registered contacts from mobile device110and/or the other computing device, depending on which one is used to create the organized groups of registered contacts. Catch-up server120may require authorization of the registered contacts for the registered contacts to be included in particular group(s) organized by the user.

Process400may also include updating or creating a profile for the user (block480). For example, catch-up server120may store profiles of different users. If catch-up server120does not store a profile for the user of mobile device110, catch-up server120may create the profile. If catch-up server120already stores the profile for the user of user device110, catch-up server120may update the profile based on new information provided by the user. The profile may include the user information associated with the user, information about mobile device110(e.g., a telephone number, an Internet Protocol (IP) address, a device identifier, etc.), information about the preferences of the user, and identifiers of groups of contacts organized by and/or associated with the user, and/or any other relevant information. Catch-up server120may retrieve the profile when catch-up server120determines a location of mobile device110, as described further below with reference toFIG. 5. The user may use mobile device110and/or the other computing device to request and review information (e.g., the selected preferences) included in the profile of the user. The user may further use mobile device110to modify the profile, by using similar techniques to those described above with reference to process400.

FIG. 5is a flowchart of an example process500for providing coupons. In one implementation, catch-up server120may perform process500. In another implementation, a device or collection of devices separate from, or in combination with, catch-up server120may perform some or all of process500.

As shown inFIG. 5, process500may include receiving available coupons (block510). For example, catch-up server120may receive information about available coupons from coupon servers130. In one implementation, catch-up server120may receive/retrieve the information about the available coupons periodically (e.g., every 24 hours). In another implementation, coupon server130may transmit particular information about an available coupon to catch-up server120after coupon server130receives and/or generates the particular information about the available coupon and/or before a time period, associated with the particular coupon, expires. For example, coupon server130may transmit a coupon, which is for a service of dinner at 6 PM on Sep. 10, 2011, 24 hours before the service, at 6 PM on Sep. 9, 2011, to catch-up server120.

The information about the available coupons may include one or more of: a type of service associated with the available coupon (e.g., restaurant service), a type of activity associated with the available coupon (e.g., dinner), an identifier of a venue associated with the available coupon (e.g., Grande Mexican Restaurant), a geographic location of the venue (e.g., 1600 Pennsylvania Ave, Washington, D.C.), a geographic area associated with the venue (e.g., a name of a neighborhood (e.g., Foggy Bottom neighborhood in Washington, D.C.), a name of a city (Fairfax, Va.), and/or a zip code (e.g., 20037)), a time period associated with the available coupon (e.g., Friday, Oct. 7, 2011, 3:00-11:30 P.M.), a quantity of people required to use the available coupon (e.g., 2-8 people), discount and/or terms associated with the available coupon (e.g., 50% off, with the coupon, when customers spend more than $40.00 per person), etc. Additionally, or alternatively, catch-up server120may receive, from coupon servers130, updates about coupons for which catch-up server120already stores information.

Process500may further include determining geographic locations of mobile devices (block520) and matching a coupon to a group of contacts based on the geographic locations and/or preferences (block530). For example, catch-up server120may determine geographic locations of mobile devices110of users who are registered for a catch-up service provided by catch-up server120. In one implementation, mobile device110may include a GPS device. Catch-up server120may periodically (e.g., every 10 minutes), and/or whenever mobile device110moves to a new location, retrieve, from mobile device110, information identifying a GPS location of mobile device110as the geographic location. Thereafter, catch-up server120may match one or more of the available coupons to a group of contacts based on the geographic locations and/or preferences of the users that are in the group of contacts. For example, catch-up server120may match an available coupon to a group of contacts when two or more users identified in the group of contacts are in the geographic area associated with the available coupon and when profiles of the two or more users indicate that the users are interested in receiving coupons for a type of service associated with the available coupon. Catch-up server120may determine the geographic area based on a geographic location of a venue associated with the available coupon (e.g., the venue where a service/activity, offered via the available coupon, is provided), which may be included in the information about the available coupon.

Process500may also include determining logistics information and/or rating information associated with the matched coupon (block540). For example, after matching an available coupon to a group of contacts, catch-up server120may determine logistics information associated with the available coupon. The logistics information may include, for example, directions to a venue associated with the available coupon, transportation available to the venue, weather expected during a time period of an activity associated with the available coupon, etc. For example, catch-up server120may determine directions for users in the group and the venue based on the geographic locations of mobile devices110of the users and the geographic location of the venue. Additionally, or alternatively, catch-up server120may determine ratings information associated with the venue. The ratings information may include one or more ratings provided by other users, of the catch-up service, about the venue and/or one or more ratings retrieved from specialized services that rate and/or collect information about different venues.

Process500may also include transmitting, to users in the group, the coupon, logistics information, the ratings information, and/or identifiers of users (block550). Catch-up server120may generate coupon information, and may transmit the coupon information to mobile devices110of the users, in the group, who are located in the geographic area associated with the available coupon and/or who are interested (e.g., based on preferences selected by the users) in receiving coupons for the type of service associated with the available coupon. The coupon information may include, for example, a portion of the information about the available coupons, the logistics information, the ratings information, and/or identifiers of the users within the group to whom the coupon information is being transmitted.

Process500may also include receiving confirmations from users (block560). For example, mobile devices110may receive the coupon information. Mobile devices110may display information included in the coupon information. The users of mobile devices110may use mobile devices110to accept an offer of the available coupon by providing the confirmation. Accepting the offer may include confirming participation in the activity associated with the available coupon. Catch-up server120may receive confirmations from mobile devices110of one or more users.

Process500may also include transmitting updates to users (block570) and updating calendars (block580). In one implementation, catch-up server120may determine, after a particular period of time (e.g., 1 hour after transmitting the coupon information), a quantity of the confirmations received from mobile devices110. When the quantity of confirmations received is less than a particular quantity (e.g., 2 or the quantity of people required for the available coupon), catch-up server120may generate and transmit, to mobile devices110, update(s) that indicate that not enough people have provided confirmations for the available coupon. When the quantity of confirmations received is equal to or greater than the particular quantity, catch-up server120may generate and transmit, to mobile devices110, updates that include identifiers of users in the group that have provided confirmation (e.g., confirmed participation in the activity) to catch-up service120via mobile devices110.

Thereafter, the two or more users of mobile devices110may use mobile devices110to retract their confirmations. Catch-up server120may transmit new updates based on the retractions and/or based on new confirmations from other users in the group. Catch-up server120may also update calendars, which are accessed via mobile devices110, of users who have confirmed by adding an entry for the activity in the calendars.

In one implementation, after the coupon is used by the confirmed users, a computer device of the venue may transmit usage information to catch-up server120. The usage information may identify the available coupon and/or the confirmed users. Thereafter, catch-up server120may transmit a message to mobile devices110of the confirmed users to thank the users for utilizing the coupon. Additionally, or alternatively, one or more of the confirmed users may use mobile devices110, and/or other computing devices, to rate the venue and/or an overall experience at the venue by one of the confirmed user and/or all of the confirmed users. Catch-up server120may use the ratings for ratings information, for the venue, in the future, as described above with reference to block540.

FIG. 6is a diagram that illustrates an example600of providing coupons. Assume that a user610-1of mobile device110-1, a user610-2of mobile device110-2, a user610-3of mobile device110-3, and a user610-4of mobile device110-4are registered for a catch-up service. Further assume that, when registering, user610-1indicated an interest for coupons offered by restaurants and organized a group, which includes user610-1, user610-2, user610-3, and user610-4. Also assume that profiles of user610-1, user610-2, and user610-4indicate a selection of the preference for coupons offered by restaurants and that a profile of user610-3does not indicate the selection of the preference for coupons offered by restaurants.

Assume that user610-1, while carrying mobile device110-1, enters a geographic area620(e.g., Washington, D.C.). Catch-up server120may determine that mobile device110-1is within geographic area620. Catch-up server120may identify one or more coupons that are associated with geographic area620. Assume that catch-up server120identifies an available coupon for a group dinner at a Mexican restaurant that is located within geographic area620. Catch-up server120may match the available coupon to user610-1because the profile of user610-1indicates the selection of the preference for coupons offered by restaurants. Catch-up server120may also determine that user610-2is within the group organized by user610-1, that user610-2is within geographic area620, and that the profile of user610-2indicates the selection of the preference for coupons offered by restaurants. Catch-up server120may determine that user610-3is within the group and is within geographic area620, but that the profile of user610-3does not indicate the selection of the preference for coupons offered by restaurants. Catch-up server120may determine that user610-4is within the group and that the profile of user610-4indicates the selection of the preference for coupons offered by restaurants, but that mobile device110-4of user610-4is not within geographic area620. Accordingly, catch-up server120may transmit the offer for the available coupon only to mobile device110-1of user610-1and to mobile device110-2of user610-2. The offer may include information about the available coupon, and may indicate that the available coupon is being provided to user610-1and user610-2to meet up for dinner since user610-1and user610-2are both currently located within geographic area620.

As a result, user610-1and user610-2, who traveled to locations within geographic area620, are able to take advantage of the available coupon together after being notified about the available coupon via their mobile devices (i.e., mobile device110-1and mobile device110-2, respectively).

While series of blocks have been described with regard toFIGS. 4 and 5, the order of the blocks may be modified in other implementations. Further, non-dependent blocks may be performed in parallel.