Doesn’t have to be a backend workflow because what you’re looking for is just a data source you can put in a Repeating group or list:
Make sure you have your Google Maps API keys in your app settings because this uses that.
Vendor has a geographic address field (called location in my screenshot)
and User has the same thing (maybe yours would be the Demand location?)
You would add additional constraints if needed like if the Vendor’s supported types contains the Demand’s type.
Then they pick the Vendor from the repeating group and you continue the rest of the workflow like create an Order for the Vendor to see in a list and accept.