1. A method, comprising the steps of: querying, using at least one computer processor, a user to provide (a) information indicating a plurality of categories of goods or services the user desires to purchase, at least two of the categories not overlapping with each other, and (b) information indicating the total amount of spending money available for purchases; by an iterative process performed by a computer, assisting a user to purchase multiple goods and/or services of the indicated categories, by steps of: obtaining from the user information about the user's preferences for a characteristic of desired goods or services of the iteration's category, wherein, for at least one of the categories, the querying comprises providing at least two user-selectable answers related to goods of the iteration's category that are indicative of responses to the query; providing, using at least one computer processor, the user with a recommendation of goods and/or services of the iteration's category based on the user's responses to the querying, wherein for at least some iterations, the recommendation related to the iteration's category is related to the user response to answers related to earlier iterations' categories, the recommendation reflecting the user's total spending money amount remaining after earlier iterations; and providing the user with an opportunity to counteroffer a price of at least one of the goods and/or services, and providing the vendor of the counteroffered good or service an opportunity to accept the user's counteroffer; the iterative process programmed to ensure that the total price of the goods and/or services to be purchased does not exceed the total amount of spending money; the price reached through counteroffer and acceptance being used in following iterations to select recommendations for goods and/or services of following iterations' categories.