A computer implemented dialog agent, comprising: a memory; a processor coupled to the memory and configured to: receive, from a user device, requirements related to a request for a service; generate a requirement specification based on the requirements; establish a connection with a provider of the service based on the requirement specification; determine, during the connection, whether all of the requirements are satisfied by the provider; in a case in which all of the requirements are satisfied, notify the user device that the request for the service is complete; and in a case in which all of the requirements are not satisfied, notify the user device that at least one requirement is not satisfied, receive a changed requirement related to the at least one requirement that is not satisfied from the user device, and update the requirement specification based on the changed requirement, wherein the processor is further configured to: establish a second connection with the provider based on the updated requirement specification; and determine, during the second connection, whether all of the requirements related to the updated requirement specification are satisfied by the provider. a memory; a processor coupled to the memory and configured to: receive, from a user device, requirements related to a request for a service; generate a requirement specification based on the requirements; establish a connection with a provider of the service based on the requirement specification; determine, during the connection, whether all of the requirements are satisfied by the provider; in a case in which all of the requirements are satisfied, notify the user device that the request for the service is complete; and in a case in which all of the requirements are not satisfied, notify the user device that at least one requirement is not satisfied, receive a changed requirement related to the at least one requirement that is not satisfied from the user device, and update the requirement specification based on the changed requirement, receive, from a user device, requirements related to a request for a service; generate a requirement specification based on the requirements; establish a connection with a provider of the service based on the requirement specification; determine, during the connection, whether all of the requirements are satisfied by the provider; in a case in which all of the requirements are satisfied, notify the user device that the request for the service is complete; and in a case in which all of the requirements are not satisfied, notify the user device that at least one requirement is not satisfied, receive a changed requirement related to the at least one requirement that is not satisfied from the user device, and update the requirement specification based on the changed requirement, wherein the processor is further configured to: establish a second connection with the provider based on the updated requirement specification; and determine, during the second connection, whether all of the requirements related to the updated requirement specification are satisfied by the provider. establish a second connection with the provider based on the updated requirement specification; and determine, during the second connection, whether all of the requirements related to the updated requirement specification are satisfied by the provider.