Organised Editing/Activities/Digitaleo

From OpenStreetMap Wiki
Jump to navigation Jump to search

Template:Organised Editing Activity

Rationale

Digitaleo is a SaaS platform that enables businesses to manage their online presence across multiple directories (Google Business Profile, Apple Business Connect, Bing Places, OpenStreetMap, etc.). When a business owner updates their point-of-sale information on Digitaleo, the changes are automatically published to OpenStreetMap via the API. Each edit corresponds to a single user action this is not an autonomous bot.

The goal is to keep business information (name, address, opening hours, phone, payment methods...) accurate and up-to-date on OpenStreetMap, based on first-party data provided directly by the business owners themselves.

Contact

Community consultation

This wiki page serves as the primary documentation of the activity. Digitaleo's OSM user profile also describes the editing process and scope. Digitaleo responds to changeset comments and private messages on OSM, and is open to community feedback.

A dedicated topic on the French OSM community forum is available for discussion, feedback, and tracking changes: Digitaleo - suivi et retours.

Hashtag

Changesets are identified with the following tags:

  • created_by: Digitaleo-OSM-API/1.0
  • source: digitaleo
  • Changeset comment: "Update business information" or "Add new business location"

Edits can be tracked via OSMCha.

Timeframe

The activity started in January 2026 and is ongoing with no planned end date. Edits occur continuously as business owners update their information on the Digitaleo platform.

Data source

Who provides the data

All data published to OpenStreetMap by Digitaleo originates from first-party sources:

  • Establishment owners who directly manage their own business information (e.g., a bakery owner updating their opening hours).
  • Network managers (franchise or brand managers) who manage information for multiple establishments in their network (e.g., a regional manager updating addresses for 50 stores).

This data is not scraped, not imported from third-party databases, and not automatically generated. Each piece of information is entered or validated by a person who has authority over the business.

Multi-publishing context

Digitaleo is a multi-publishing platform. When a user updates their business information, the same data can be published to several platforms simultaneously:

  • Google Business Profile
  • Apple Business Connect
  • Bing Places
  • Facebook
  • OpenStreetMap
  • And others

The user explicitly enables OpenStreetMap publishing for each establishment.

Fields managed

The following business fields are managed by Digitaleo users and may be published to OSM:

Category Fields
Identity Name, website, email, SIRET (French business registration number)
Phone Phone number, fax number
Address House number, street, postcode, city
Schedule Opening hours (full weekly schedule with multiple time slots)
Food & Drink Cuisine types, dietary options (vegetarian, vegan, halal, kosher, gluten-free), pastry, chocolate, ice cream, organic
Services Delivery, takeaway, drive-through, indoor seating, outdoor seating, breakfast, wheelchair accessibility, Wi-Fi, reservation, booking URL
Payment Cash, credit cards, debit cards, cheque, contactless, Visa, Mastercard, American Express, Discover, Diners Club, JCB
Social media Facebook, Twitter/X, Instagram, LinkedIn, YouTube, TikTok, Pinterest

Tools and technical overview

Parameter Value
Editing method Automated publication via the OSM API, triggered by individual user actions on the platform
OSM API version v0.6
User-Agent Digitaleo-OSM-API/1.0
Authentication OAuth2 Bearer token
Rate limiting 1 request per second
Changeset created_by Digitaleo-OSM-API/1.0
Changeset source digitaleo

Participants

Element lifecycle

Search and matching

Before creating a new element, Digitaleo always searches for an existing OSM element that may already represent the business. This avoids creating duplicates.

Search method:

  1. A bounding box search is performed around the business coordinates (default radius ~22 meters, i.e. ~0.0002 degrees).
  2. All elements with tags within the bounding box are retrieved.

Matching strategy (two stages):

Stage Method Details
Fuzzy name matching Token-based comparison The business name and OSM element names (name, official_name, brand, alt_name, short_name, old_name, operator) are tokenized. French stop words are removed (de, du, la, le, les, etc.). Accents are normalized. A minimum 60% token overlap ratio is required. Minimum token length: 3 characters.
Exact tag matching Direct value comparison Compares phone/contact:phone, email/contact:email, website, ref:FR:SIRET. Phone numbers are normalized (digits only, French +33 prefix replaced by 0). URLs are normalized (lowercase, protocol and www. stripped, trailing slash removed). SIRET numbers have whitespace removed.

Decision rules:

  • If at least one exact tag match is found, all name-only matches are discarded (higher confidence).
  • If multiple elements match ambiguously, no edit is made and the system flags the business for manual review.

Element creation

Element creation occurs only when:

  1. No existing OSM element was found by the search algorithm, AND
  2. The user has explicitly authorized the creation (automatic creation is blocked by default).

When creation is authorized:

  • A new node is created at the business coordinates.
  • A changeset is opened with comment: "Add new business location"

Example changeset and node creation:

<!-- 1. Open changeset -->
<osm>
  <changeset>
    <tag k="created_by" v="Digitaleo-OSM-API/1.0"/>
    <tag k="source" v="digitaleo"/>
    <tag k="comment" v="Add new business location"/>
  </changeset>
</osm>

<!-- 2. Create node in changeset -->
<osm>
  <node changeset="12345" lat="48.8566" lon="2.3522">
    <tag k="name" v="Boulangerie Martin"/>
    <tag k="phone" v="+33 1 42 36 12 34"/>
    <tag k="email" v="contact@boulangerie-martin.fr"/>
    <tag k="website" v="https://boulangerie-martin.fr"/>
    <tag k="ref:FR:SIRET" v="12345678901234"/>
    <tag k="addr:housenumber" v="12"/>
    <tag k="addr:street" v="Rue de Rivoli"/>
    <tag k="addr:postcode" v="75001"/>
    <tag k="addr:city" v="Paris"/>
    <tag k="opening_hours" v="Mo-Sa 07:00-20:00"/>
    <tag k="cuisine" v="sandwich"/>
    <tag k="pastry" v="yes"/>
    <tag k="payment:credit_cards" v="yes"/>
    <tag k="payment:contactless" v="yes"/>
    <tag k="delivery" v="yes"/>
    <tag k="contact:facebook" v="https://www.facebook.com/boulangeriemartin"/>
  </node>
</osm>

Element update

When an existing element is found (either by search or because the business was previously linked to an OSM element):

  1. The current element is fetched from OSM (supports node, way, relation).
  2. Tags are merged: Digitaleo's tags are applied on top of the existing tags. All tags that Digitaleo does not manage are preserved unchanged.
  3. Before sending, the merged tags are compared with the current tags. If they are identical, no changeset is created (avoids unnecessary edits).
  4. A changeset is opened with comment: "Update business information"
  5. The element's version number is used for optimistic concurrency control. If another edit was made concurrently, the OSM API returns HTTP 409 (Conflict) and the operation is retried.
  6. For way and relation elements: geometry is fully preserved. Only tags are replaced in the XML, all nodes/members/references remain untouched.

Example: updating a phone number

Before (current OSM element tags):

name=Boulangerie Martin
phone=+33 1 42 36 12 34
amenity=bakery
opening_hours=Mo-Sa 07:00-20:00
wheelchair=yes

Digitaleo sends these tags (phone changed, other fields same):

phone=+33 1 42 36 99 99
email=contact@boulangerie-martin.fr
addr:street=Rue de Rivoli
opening_hours=Mo-Sa 07:00-20:00

Result after merge (sent to OSM):

name=Boulangerie Martin           -- preserved (already existed on OSM)
phone=+33 1 42 36 99 99           -- updated by Digitaleo
email=contact@boulangerie-martin.fr   -- added by Digitaleo
amenity=bakery                     -- preserved (not managed by Digitaleo)
opening_hours=Mo-Sa 07:00-20:00    -- unchanged
wheelchair=yes                     -- preserved (not managed by Digitaleo)
addr:street=Rue de Rivoli          -- added by Digitaleo

Important: Tags like amenity, shop, building, wheelchair that were added by other contributors are never removed or modified by Digitaleo.

Name handling

The name tag receives special treatment:

  • On creation: The name is set from the business data.
  • On update of an existing element: If the element already has a name tag, Digitaleo does not overwrite it. The existing OSM name is preserved.
  • Exception: If a name incoherence was previously detected (the OSM name does not match the expected business name) and the user explicitly republishes, the name will be overwritten.

The name is resolved with this priority:

  1. Platform-specific name configured for OpenStreetMap (if the user set a different name for OSM)
  2. Network brand name
  3. Business name

Synchronization monitoring

A background process periodically checks whether the data on OSM still matches what Digitaleo expects:

  • Frequency: Every 2 hours (checks businesses whose last refresh exceeds the threshold).
  • Process: Builds the expected tag set from local data, compares it with the current OSM element using the same merge and sanitization logic as updates, and checks if the result differs.

Behavior on desynchronization:

  • If tags differ: the business is flagged as "out of sync" internally. Digitaleo does NOT automatically overwrite external changes. The user must explicitly choose to republish.
  • If tags match and the business was previously flagged: the flag is automatically cleared (self-healing).
  • Name coherence is also checked: if the OSM name no longer matches the expected name, the business is flagged for review.

This means: If an OSM contributor corrects a tag on an element managed by Digitaleo, that correction will be detected but not automatically reverted. The business owner or network manager will be notified that their data is out of sync and must decide whether to accept the OSM change or republish their version.

Tag deletion

Specific tags can be removed from an element while preserving all other tags. The element is fetched, the specified tags are removed from the tag set, and the element is updated with the remaining tags. Geometry and unrelated tags are not affected.

Complete tag mapping

Basic information

Digitaleo Field OSM Tag Format / Notes
Business name name See Name handling for conditions
Website website URL forced to https://, validated format. Social media URLs are reclassified (see Tag sanitization).
Contact email email As entered by the user
SIRET ref:FR:SIRET 14-digit French business registration number (ref:FR:SIRET)

Phone numbers

Digitaleo Field OSM Tag Format
Phone phone International format via libphonenumber (e.g., +33 1 42 36 12 34)
Fax fax Same formatting as phone

Address

French addresses are parsed to extract the house number from the street name.

Digitaleo Field OSM Tag Notes
Address (number part) addr:housenumber Extracted from the address string. Supports French ordinals: bis, ter, quater, and letter suffixes (e.g., 12B).
Address (street part) addr:street Remainder after house number extraction. Normalized (see Street name normalization).
Postal code addr:postcode As entered
City addr:city Normalized: all-uppercase names are converted to Title Case (e.g., LYON becomes Lyon)

Address parsing examples:

Input Address addr:housenumber addr:street
35 cours Fauriel 35 Cours Fauriel
12B rue de la Paix 12B Rue de la Paix
12 bis avenue Victor Hugo 12 bis Avenue Victor Hugo
rue de la Paix (none) Rue de la Paix

Opening hours

Business schedules are converted to the OSM opening_hours format.

Conversion rules:

  • Days are mapped: Monday→Mo, Tuesday→Tu, Wednesday→We, Thursday→Th, Friday→Fr, Saturday→Sa, Sunday→Su
  • Consecutive days with identical hours are grouped into ranges (e.g., Mo-Fr 09:00-18:00)
  • Multiple time slots per day are comma-separated (e.g., Mo 09:00-12:00,14:00-18:00)
  • Different day groups are semicolon-separated (e.g., Mo-Fr 09:00-18:00; Sa 10:00-13:00)
  • End time 23:59 is converted to 24:00
  • Overnight slots are merged: if a business is open until midnight and the next day starts at 00:00, the slots are combined (e.g., Fr 18:00-02:00 instead of Fr 18:00-24:00; Sa 00:00-02:00)

Example:

A restaurant open Monday-Friday 11:30-14:00 and 18:30-22:30, Saturday 18:30-23:00:

opening_hours=Mo-Fr 11:30-14:00,18:30-22:30; Sa 18:30-23:00

Categories and cuisine

Business categories are mapped to secondary OSM tags. Multiple values are joined with semicolons.

Cuisine tags

Business Category cuisine=* Value
sandwich_shop sandwich
pizza_restaurant pizza
sushi_restaurant sushi
burger_restaurant burger
kebab_shop kebab
chinese_restaurant chinese
japanese_restaurant japanese
italian_restaurant italian
french_restaurant french
mexican_restaurant mexican
indian_restaurant indian
thai_restaurant thai
vietnamese_restaurant vietnamese
lebanese_restaurant lebanese
turkish_restaurant turkish
korean_restaurant korean
seafood_restaurant seafood
steak_house steak_house
crepe_restaurant crepe
coffee_shop coffee_shop
tea_house tea
donut_shop donut
ramen_restaurant ramen
fish_and_chips_restaurant fish_and_chips
falafel_restaurant falafel
greek_restaurant greek
spanish_restaurant spanish
portuguese_restaurant portuguese
moroccan_restaurant moroccan
african_restaurant african
caribbean_restaurant caribbean
peruvian_restaurant peruvian
brazilian_restaurant brazilian
argentinian_restaurant argentinian

A business with categories "pizza_restaurant" and "italian_restaurant" would produce: cuisine=pizza;italian

Diet tags

Business Category OSM Tag Value
vegetarian_restaurant diet:vegetarian only
vegan_restaurant diet:vegan only
halal_restaurant diet:halal yes
kosher_restaurant diet:kosher yes
gluten_free_restaurant diet:gluten_free yes

Boolean category tags

Business Category OSM Tag Value
pastry_shop pastry yes
ice_cream_shop ice_cream yes
organic_shop organic yes
second_hand_store second_hand yes
repair_service repair yes

Services

Digitaleo Attribute OSM Tag Value Notes
Delivery available delivery yes
Takeout available takeaway yes
Drive-through drive_through yes
Dine-in service indoor_seating yes
Outdoor seating outdoor_seating yes
Serves breakfast breakfast yes
Wheelchair-accessible entrance wheelchair yes Highest priority
Wheelchair-accessible seating wheelchair limited Only if entrance is not accessible
Wheelchair-accessible restroom toilets:wheelchair yes
Free Wi-Fi internet_access + internet_access:fee wlan + no
Paid Wi-Fi internet_access + internet_access:fee wlan + yes
Appointment required reservation required
Booking URL website:booking (URL) Sanitized URL (forced https)

Payment methods

Digitaleo Attribute OSM Tag Value
Cash only payment:cash yes
Credit card accepted payment:credit_cards yes
Debit card accepted payment:debit_cards yes
Cheque accepted payment:cheque yes
Contactless payment payment:contactless yes
Visa payment:visa yes
Mastercard payment:mastercard yes
American Express payment:american_express yes
Discover payment:discover yes
Diners Club payment:diners_club yes
JCB payment:jcb yes

Note: Only payment methods marked as "accepted" by the business owner are published. If a payment method is not enabled, no tag is set (we do not set =no values).

Social media

Digitaleo Attribute OSM Tag Notes
Facebook URL contact:facebook URL sanitized (forced https, validated)
Twitter/X URL contact:twitter
Instagram URL contact:instagram
LinkedIn URL contact:linkedin
YouTube URL contact:youtube
TikTok URL contact:tiktok
Pinterest URL contact:pinterest

Tag sanitization

Before any tag is written to OSM, the following sanitization rules are applied to ensure compliance with OSM conventions and avoid unnecessary changesets.

Tag remapping

Deprecated or non-standard tag forms are remapped to their preferred equivalents according to the OSM wiki:

Source Tag Remapped To Reason
phone contact:phone Preferred contact namespace
fax contact:fax Same
email contact:email Same
url website website is the preferred form
contact:website website Same
facebook contact:facebook Short forms are deprecated
twitter contact:twitter Same
instagram contact:instagram Same
linkedin contact:linkedin Same
youtube contact:youtube Same
tiktok contact:tiktok Same
pinterest contact:pinterest Same
payment:amex payment:american_express Full name preferred

If the target tag already exists on the element, the remapped value is not applied (the existing value takes precedence).

Social media URL reclassification

If the website tag contains a URL pointing to a social media platform, it is automatically reclassified to the appropriate contact:* tag:

Domain(s) Reclassified To
facebook.com, fb.com contact:facebook
twitter.com, x.com contact:twitter
instagram.com contact:instagram
linkedin.com contact:linkedin
youtube.com, youtu.be contact:youtube
tiktok.com contact:tiktok
pinterest.com, pinterest.fr contact:pinterest

This prevents the common case where a business owner enters their Facebook page as their "website", which would be incorrect per OSM conventions.

Address conflict resolution

OSM elements may use either addr:* or contact:* for address fields. When both forms exist after merging:

  • If the OSM element already used contact:* (e.g., contact:city): the contact:* form is kept and updated, the addr:* duplicate is removed.
  • If the OSM element used addr:* or had no address tags: the addr:* form is kept, the contact:* duplicate is removed.

This respects the tagging style already established on the element.

Street name normalization

Street names are normalized following French OSM street naming conventions:

Abbreviation expansion:

Abbreviation(s) Expanded Form
av, ave Avenue
bd, bvd, blvd, bld Boulevard
pl Place
rte Route
imp Impasse
all Allee
ch, chem Chemin
crs Cours
fg, fbg Faubourg
sq Square
pass Passage
prom Promenade
espl Esplanade
res Residence
lot Lotissement
ham Hameau
trav Traverse
sent Sentier
rpd, rpt Rond-Point
carr Carrefour

Capitalization rules:

  • First word: always Title Case
  • French articles and prepositions (de, du, des, la, le, les, au, aux, en, et, ou, sur): lowercase (except in first position)
  • Elisions handled: d'Artagnan, l'Etoile
  • Proper nouns: Title Case

Canonical comparison: If the current OSM value is canonically equivalent (same street after abbreviation expansion and lowercasing), the current OSM value is preserved to avoid an unnecessary changeset. For example, if OSM has Av. de Paris and Digitaleo sends Avenue de Paris, the existing value is kept.

Other sanitization rules

  • City name normalization: All-uppercase city names are converted to Title Case (e.g., LYONLyon, AIX EN PROVENCEAix En Provence).
  • Identity tag cleanup: If official_name is identical to name (case-insensitive), official_name is removed. Per the wiki, official_name should only be used when it differs from name.
  • City suffix removal from name: If the business name ends with the city name, the city is stripped (e.g., Boulangerie Martin LyonBoulangerie Martin). Respects word boundaries (e.g., VetAmboise is not modified even though it ends with Amboise). French prepositions are also cleaned up (e.g., trailing "de", "du", "des", "d'" are removed).
  • Blank value removal: Tags with empty or whitespace-only values are stripped before sending to OSM.

What Digitaleo does NOT do

  • Does not delete OSM elements. Digitaleo never removes nodes, ways, or relations from OSM.
  • Does not overwrite external modifications automatically. If a contributor changes a tag on an element managed by Digitaleo, the change is detected but not reverted. The user is notified.
  • Does not create elements automatically by default. Automatic creation is blocked; the user must explicitly authorize it.
  • Does not modify geometry. Nodes are not moved, way shapes are not changed, relation members are not modified. Only tags are updated.
  • Does not manage the primary classification tag. Tags like amenity=*, shop=*, tourism=*, healthcare=*, building=* are left untouched. Digitaleo only manages the secondary tags listed in this documentation.
  • Does not set negative values. If a service or payment method is not enabled, no tag is written (we never set delivery=no or payment:visa=no).

Changeset conventions

All changesets created by Digitaleo follow a consistent pattern:

Changeset Tag Value Description
created_by Digitaleo-OSM-API/1.0 Identifies the tool
source digitaleo Identifies the data source
comment Add new business location Used when creating a new node
comment Update business information Used when updating an existing element

Each create or update operation opens its own changeset, performs the single modification, and immediately closes the changeset. This ensures each changeset contains exactly one logical change for maximum traceability.

Training/instructions

Edits are performed programmatically by the Digitaleo platform, not by individual human mappers. The editing logic is maintained by the Digitaleo R&D team, which ensures:

  • Compliance with OSM tagging conventions (see Tag sanitization)
  • Proper tag merging (no deletion of unmanaged tags)
  • One changeset per business update
  • Accurate changeset comments and metadata
  • Rate limiting (1 request per second)

Measuring our success

  • Number of changesets and elements edited, tracked via OSMCha
  • Community feedback via changeset comments and OSM messages
  • Internal monitoring of edit success rate and API errors

Post-event clean-up

  • Changeset comments from the OSM community are monitored and addressed.
  • In case of reported issues, Digitaleo can identify and revert affected changesets.
  • Internal quality checks are performed on the editing logic before deployment.

Community feedback

We welcome feedback from the OSM community on our editing practices. If you notice:

  • Incorrect tag usage that does not follow OSM conventions
  • Missing tag mappings that we should add
  • Incorrect data on a specific element (please note that data corrections should be reported to the business owner via Digitaleo, as we do not overwrite external changes)
  • Suggestions for improvement to our sanitization rules or matching algorithm

Please use the discussion page of this wiki page, the dedicated topic on the French OSM forum, or contact us at serviceclient@digitaleo.com.

Results

Results and statistics may be shared on this page periodically. Community members are welcome to reach out via the contact methods listed above for any questions or concerns.

See also