Room: Talks III - Amphi Cauchy (Carnot)
Friday, 15:05
Duration: 20 minutes (plus Q&A)
Language: fr
Digitaleo publishes business information to OSM for ~14,000 French points of sale, on behalf of the owners themselves. We took the activity back in-house in early 2026 after issues with a previous provider. This talk is a REX on eight months of organised editing done in public: how a forum thread with the French OSM community reshaped our publisher addr:* vs contact:*, SIRET adoption, social media URL reclassification, disused handling and why "fix the process, not the POI" changed our engineering.
Digitaleo is a French local marketing SaaS. Among other things, we let business owners and network managers update their point-of-sale information name, opening hours, address, phone, payment methods, social media and publish it simultaneously to Google Business Profile, Apple Business Connect, Bing Places, Facebook, and OpenStreetMap. We cover roughly 14,000 POIs across France.
Until late 2025, our OSM publishing was delegated to an external provider. Community feedback on that provider’s edits was mixed (see the French forum thread Votre avis sur un contributeur votre_solution_de_visibilite_digitale_locale). In January 2026, we rebuilt the integration in-house, with a clear goal: do organised editing properly, in the open, with the community.
What this talk is about This is a REX on eight months of running that publisher. It’s aimed at three audiences: other companies considering organised editing, OSM contributors curious about what happens "on the other side" of a corporate editing account, and developers interested in the engineering trade-offs.
Architecture in one slide. Not a bot: each edit is triggered by one explicit action from a business owner. Data is first-party (not scraped, not from third-party DBs). One multi-publishing action → N platforms, OSM included only if the user opts in per POI.
Safeguards. What the publisher does not do: no deletions, no geometry changes, no overwriting of primary classification tags set by contributors, no auto-creation by default, no =no values. Optimistic concurrency on element version. A 2-hour sync check that detects external changes but refuses to auto-revert them.
The heart of the talk: five forum threads that rewrote our code. Each one is a real exchange on the French OSM forum that turned a specific POI-level complaint into a systemic change in the publisher: addr:* vs contact:* addresses the community pushed us to default to contact:* everywhere, with conditional logic on pre-existing addr:* elements.
Social media URLs ending up in website now automatically reclassified to the correct contact:* tag. SIRET adoption (ref:FR:SIRET).
Handling closed businesses via the disused: lifecycle prefix, instead of leaving stale data in place.
URL validation: quotidian monitoring of declared websites to flag broken links before and after publication.
The principle that came out of it: "fix the process, not the POI." A single complaint is an opportunity to correct the system upstream so the same class of problem can’t repeat. That philosophy, more than any technical decision, is what I’d like other organised editors to take away.
Numbers & limits. What we’ve published, what we’ve had to manually repair, where the approach breaks down, and what we haven’t solved yet (handoff between businesses at the same address, for instance).