Skip to content

Investigate ordinary business name/address retrieval using the Berlin EDEKA case #430

Description

@Medformatik

Before you start

Objective

Determine why ordinary business name/address searches fail to retrieve a verified nearby business, using EDEKA Moch at Grunerstraße 20 in Berlin as the initial case. Establish whether the limiting factor is upstream coverage, query interpretation, deployed local data, or the lack of a local lexical candidate path, then recommend a bounded next step.

The goal is to make named business search reliable using evidence from existing sources before adding another production data pipeline or a semantic-search engine.

Scope

Verified starting evidence

Checked on 2026-10-07, against relevant code on main 3c80939d26a09f131b16d849895255436b5e5798:

  • The official EDEKA profile lists EDEKA Moch at Grunerstr. 20, 10179 Berlin.
  • The public autocomplete query returns street/address candidates, without the named EDEKA tenant.
  • Shorter queries such as EDEKA Alexa and EDEKA Grunerstraße return an EDEKA at Alexanderstraße 25. That is a different returned address; it has not been verified as the same tenant. A nearby same-brand result must not count automatically as successful retrieval.
  • These are adapted OpenMapX API responses, not raw MapTiler payloads. The deployed application revision, source generations, provider configuration and cache state were not available in the public pilot.

The code exposes distinct limitations that warrant investigation:

  1. MapTiler autocomplete maps its returned candidates; the observed response alone does not identify whether the original provider omitted the tenant.
  2. OSM search terms cover aliases, codes and generated acronyms. Features without such terms are skipped. This is an intentionally specialized index, not a complete ordinary-name business index.
  3. The Overture POI provider exposes category search, rather than a named-business text candidate method.
  4. POI text search currently selects the first text-capable provider.
  5. Overpass text search matches the escaped full query against a feature's name; it does not decompose a name-plus-address query.

Investigation boundaries

Use a small, versioned set of ordinary business queries, including short names, names plus addresses, nearby alternative branches, ambiguous brands and negative queries. Start in the existing German pilot regions. Inspect available OSM/Overture data with stable source IDs and actual addresses; report explicitly when deployed data cannot be inspected.

Keep raw-provider retrieval, adapter output, combined candidates, ranking and UI selection as separate evidence layers. Capture authorized raw-provider evidence with credentials redacted. A missing final row does not by itself prove a missing source feature.

If the desired business exists in an available dataset, describe and evaluate a bounded lexical candidate path through the existing search composition. If it is absent, document the source gap and the evidence needed for a source-enrichment pilot.

Outside this task: a production ingestion pipeline, embeddings/vector search, global rollout, broad search UI redesign, or changing production data.

Completion criteria

  • Pin the application revision, enabled providers, relevant dataset generations and cache conditions for a reproducible pilot, or record specific unavailable metadata.
  • Verify the EDEKA tenant identity/address; distinguish it from nearby same-brand candidates.
  • Determine present/absent/unknown status in the inspected OSM and Overture datasets, with stable IDs and provenance.
  • Compare raw upstream, adapted, combined and ranked results for the versioned query set; do not infer raw-provider behavior from adapter output.
  • For data-present cases, evaluate a small lexical prototype or document a concrete candidate-integration design: query decomposition, identity/deduplication, source credits, closures, result limits, fallback and cold/warm latency budgets.
  • For data-absent cases, document a source-coverage recommendation without assuming AllThePlaces contains the tenant.
  • Publish a go/no-go report with retrieval quality, false-branch controls, operational costs and a narrowly scoped implementation follow-up if justified. No production feature is required to close this investigation.

Dependencies

No known hard prerequisite. Reuse the evaluation foundation from #409 / #424 and its live evidence comment. #428 and #429 address independently reproduced ranking/deduplication defects; keep those effects separate when measuring retrieval. Related: #297 (semantic recall), #399 (place identity/map discovery), #397 / #400 (conditional ATP evaluation/productionization). These are related work, not blockers or a requirement to add a new source.

Activity

  1. added theissue type on Oct 7, 2026
  2. Medformatik commented on Oct 8, 2026

    @Medformatik
    CollaboratorAuthor

    The bounded investigation is delivered in PR #434, now reduced to reusable evaluation inputs/tools and a concise report. Dated UI/status/timing/complete per-query capture records and the throwaway prototype stay outside repository Git:

    • October 7 capture archive: immutable commit, checksums, source credits/rights, original report, selected raw/adapted/aggregate captures and historical UI/rank/Enter observations. Full raw operator files were temporary and are not claimed as a durable public artifact.
    • October 8 reviewed lexical probe: immutable commit, source projection/provenance, checksums, pinned disposable-container command, probe/tests, SQL plans/measurements and source replay.

    Moch is verified in Overture 2026-09-23.1 (GERS 035b544e-40f5-4ce0-a06f-1c9032ded028, v13). Its official Grunerstr. 20 address/phone were rechecked October 8. MapTiler's Alexanderstraße 25 result points to a generic OSM EDEKA mall room; that remains an unresolved business identity/address inference, not a verified different branch or Moch success. Official Schaaf profile now returned 404; dated source/control identity remains retained, current operating status unknown rather than closed.

    Initial follow-up source replay uses main fe6b7969979ae024655e38d3b4f605295e757f93 (the later fresh-main/#438 comparison is pinned below), including #432; fixed raw/provider inputs are dated October 7, deployment/source/cache conditions unknown. #432 moves Berlin MediaMarkt above Rijswijk and avoids opening the Dutch branch on Enter. Raw/adapted/current-ranked geocoder recall stays 4/9: ranking does not recover missing named candidates.

    The disposable SQL prototype over 3,255 cached Overture bbox records retrieves 7/8 positive queries whose targets were inspected (REWE outside bbox, unknown). Combined with the saved geocoder pool, verified Hit@3 increases 4/9→8/9. Both lexical negatives return no result. EDEKA Alexa stays missing without a verified mall-name association. Three valid Moch address variants rank first but still produce weak/search Enter on main. These are offline candidate/composition results, not an enabled provider or new live UI outcome.

    Warm SQL p95 across 20 repeats/query is 0.205–3.396ms on PostgreSQL 18.6/PostGIS 3.6.4, own network-disabled 2 CPU/512MiB container/tmpfs. Import 1.60 s/index 0.16 s; table 2,392,064/index 1,056,768 bytes; whole-container peak 300,068,864 bytes. Docker/psql command p95 67.8–94.0ms is not provider latency. Cold/region-scale/API costs remain unknown; broad plans can scan rows beyond the candidate cap.

    Review found postcode-as-house substitution in the initial probe and missing image-startup instructions. Separate house/locality roles plus postcode/region negatives now pass (10 normalization/SQL + 15 real DB checks); the refreshed archive has a pullable pinned image and executable reproduction. Café/store name priority was also reproduced and corrected without merging tenants. Repo checks: 113 focused tests passed, 2 opt-in database suites skipped; types/lint/docs passed. Full local suite limitations and current CI are tracked in the PR.

    Decision: GO for staged existing-data lexical development; NO-GO for production adoption yet. Remaining gates: verified mall association, verified name+address Enter intent, intended deployed generation/resolver readiness, verified cross-source duplicate handling, regional/cold/warm/fallback budgets. #429 is actively owned by a separate task; coordination occurred and its worktree/branch were left untouched. No production pipeline/data/cache/config changes, embeddings, new ATP ingestion, global rollout, merge or deployment.

    Separately evaluated #438 at head dadd03d5339ad65b64de7a8240054d3befacd10c vs ancestor 5f07b70967319b4b2c86769b542b551b93f98e02 (current main 9b212363ba891e97ac4a19c080a10bbc0e343cbd identical on these traces): ranked geocoder rows 65→78 of 78; lexical+geocoder rows 75→90 of 90. Strict Hit@3 and all Enter unchanged. Candidate preservation is deduplication, not retrieval improvement; cross-source duplicates remain pending corroborated identity. No other worktree/branch changed. Updated archive includes all separately pinned traces.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageNeeds initial review and categorization

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions