Hi John, it sounds like you have two possible approaches here:
- Include limited OSM editing capability as a feature of your app, calling the API directly from users' devices. Many apps do this; OsmAnd is probably the most prominent. Any user of your app who wished to contribute data to OSM would need to create an OSM account, and supply your app with their credentials.
- Collect and curate data from your users into your own database, and import that data into OSM at intervals using a single dedicated OSM account. As you mention, there's the obvious problem of deduplication. Also, imports in general are a tricky topic, and there have been many over the years that have done a lot of damage, so prepare for a lot of resistance to this approach.
Some useful reading:
- [https://wiki.openstreetmap.org/wiki/Organised\_Editing_Guidelines][1]
- [https://wiki.openstreetmap.org/wiki/Automated\_Edits\_code\_of_conduct][2]
- [https://wiki.openstreetmap.org/wiki/Import/Guidelines][3]
Regarding the tagging, you'll want to maintain parity with existing OSM tagging practices. There are established tags for cuisine, for indicating that pub has a pool table, etc. There may, though, be details that you're interested in that are considered out of scope for OSM, such as individual menu items, pricing information, special promotions, government inspection scores, and, of course, the reviews and ratings themselves.
...
Whenever I hear of third-party apps using OSM for business reviews, the biggest problem that comes to mind is that there is no standard method to ensure that an individual business has a persistent unique ID in OSM. Eg, one mapper might add a restaurant as a node, then another mapper might remap it as a building, which will be a different element in the OSM database. Then another mapper might decide it shouldn't be the whole building because it's a multi story building and the restaurant is only on the ground floor, so it gets moved to a brand new node inside the building.
Then the restaurant moves into a new building across the street. A mapper might choose to move the node from the old building to the new one... or to create a new node in the new building, and change the tags on the old node so it's reused for the new business that's moved into the old space.
Meanwhile, the name might change, eg "Greggorys"->"Greggory's"->"Gregory's"->"Gregory's Cafe". The phone number and website might change too. It would take a fair amount of work to sync a single record in a remote database with these different OSM elements and changing tag values.
This is a solvable problem, but be aware that it will happen.
Some more fun reading: [https://wiki.openstreetmap.org/wiki/Persistent\_Place_Identifier][4]
Good luck with your app!
[1]: https://wiki.openstreetmap.org/wiki/Organised_Editing_Guidelines
[2]: https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct
[3]: https://wiki.openstreetmap.org/wiki/Import/Guidelines
[4]: https://wiki.openstreetmap.org/wiki/Persistent_Place_Identifier