{
  "schema_version": 1,
  "title": "MEYNG public metrics — the single source of truth for every number we publish",
  "canonical_url": "https://sangoai.app/metrics.json",
  "repository_path": "metrics.json (meyng-hub/sangoai)",
  "rule": "Every number, score, licence or count that appears on meyng.com, sangoai.app, a model card, an application or a public post must be a value in this file, carrying its definition, its source and the date it was read. Values with refresh=auto are re-read from their source at build time by scripts/metrics/refresh-metrics.mjs; values with refresh=manual are re-measured by a person using the exact query recorded here, and the as_of date moves with them. There is no third kind of number. Nothing here is estimated, rounded up or extrapolated; a figure that cannot be measured is listed under withdrawn, with the reason.",
  "how_to_check": {
    "huggingface": "curl 'https://huggingface.co/api/datasets/MEYNG/sango-vocabulary?expand[]=downloads&expand[]=downloadsAllTime' and the same under /api/models/MEYNG/nllb-sango-finetuned-600m-v2-2",
    "dataset_files": "wc -l on vocabulary.jsonl and training_pairs.jsonl from https://huggingface.co/datasets/MEYNG/sango-vocabulary/tree/main",
    "model_card": "https://huggingface.co/MEYNG/nllb-sango-finetuned-600m-v2-2 — the Benchmarks and data-story sections",
    "platform": "https://sangoai.app/transparency renders the live verified-vocabulary count from the platform's public statistics endpoint; the usage figures below are a dated database measurement, with the query recorded on each entry"
  },
  "metrics": {
    "vocabulary_verified_live": {
      "value": 589,
      "label": {
        "en": "Verified vocabulary entries, live platform count",
        "fr": "Entrées de vocabulaire vérifiées, décompte en direct de la plateforme"
      },
      "definition": {
        "en": "Entries in the SangoAI production vocabulary table whose status is 'verified'. 'Verified' is a curation-pipeline flag (cross-checked against textbook, dictionary and parallel-corpus sources), not native-speaker sign-off. The count moves in both directions: it falls when an audit withdraws entries.",
        "fr": "Entrées de la table de vocabulaire de production de SangoAI dont le statut est « verified ». « Vérifié » est un indicateur du pipeline de curation (recoupement avec des sources manuel, dictionnaire et corpus parallèle), pas une validation par un locuteur natif. Le décompte évolue dans les deux sens : il baisse quand un audit retire des entrées."
      },
      "source_url": "https://sangoai.app/transparency",
      "method": "stats_api",
      "query": "SangoAI public statistics endpoint, field vocabulary_words (a filtered count of status = verified; soft-deleted rows excluded)",
      "refresh": "auto",
      "as_of": "2026-10-10"
    },
    "vocabulary_published_entries": {
      "value": 590,
      "label": {
        "en": "Entries in the published vocabulary dataset",
        "fr": "Entrées du jeu de données lexical publié"
      },
      "definition": {
        "en": "Rows in vocabulary.jsonl of the MEYNG/sango-vocabulary dataset on Hugging Face (release v1.5.5). Differs from the live platform count because the dataset is a dated snapshot of the database.",
        "fr": "Lignes de vocabulary.jsonl dans le jeu de données MEYNG/sango-vocabulary sur Hugging Face (version v1.5.5). Diffère du décompte en direct parce que le jeu de données est un instantané daté de la base."
      },
      "source_url": "https://huggingface.co/datasets/MEYNG/sango-vocabulary/blob/main/vocabulary.jsonl",
      "method": "hf_file",
      "query": "line count of vocabulary.jsonl at revision main",
      "refresh": "auto",
      "as_of": "2026-10-10"
    },
    "vocabulary_native_verified": {
      "value": 1,
      "label": {
        "en": "Entries individually confirmed by a native speaker",
        "fr": "Entrées confirmées individuellement par un locuteur natif"
      },
      "definition": {
        "en": "Entries in the published dataset whose source field is 'native_speaker', i.e. confirmed one by one by a native Sango speaker. Every other entry is pipeline-verified only. This is the second half of the dual counter: N verified · M native-verified.",
        "fr": "Entrées du jeu de données publié dont le champ source vaut « native_speaker », c'est-à-dire confirmées une par une par un locuteur natif du sango. Toutes les autres sont vérifiées par le pipeline seulement. C'est la seconde moitié du double compteur : N vérifiées · M confirmées par un natif."
      },
      "source_url": "https://huggingface.co/datasets/MEYNG/sango-vocabulary#provenance-breakdown-v150-all-590-entries",
      "method": "hf_file",
      "query": "count of rows in vocabulary.jsonl where source == 'native_speaker'; cross-checked against docs/metrics/reviewer-throughput.json (entries_promoted_native_verified)",
      "refresh": "auto",
      "as_of": "2026-10-10",
      "filter": {
        "field": "source",
        "equals": "native_speaker"
      },
      "file_url": "https://huggingface.co/datasets/MEYNG/sango-vocabulary/resolve/main/vocabulary.jsonl"
    },
    "dataset_translation_pairs": {
      "value": 360,
      "label": {
        "en": "Sango–French sentence pairs in the published dataset",
        "fr": "Paires de phrases sango–français du jeu de données publié"
      },
      "definition": {
        "en": "Rows in training_pairs.jsonl of the MEYNG/sango-vocabulary dataset. Extracted from grammar and dictionary reference material; not the fine-tuning corpus (see training_pairs_v2_2).",
        "fr": "Lignes de training_pairs.jsonl dans le jeu de données MEYNG/sango-vocabulary. Extraites de grammaires et de dictionnaires de référence ; ce n'est pas le corpus d'affinage (voir training_pairs_v2_2)."
      },
      "source_url": "https://huggingface.co/datasets/MEYNG/sango-vocabulary/blob/main/training_pairs.jsonl",
      "method": "hf_file",
      "query": "line count of training_pairs.jsonl at revision main",
      "refresh": "auto",
      "as_of": "2026-10-10"
    },
    "dataset_downloads_30d": {
      "value": 241,
      "label": {
        "en": "Vocabulary dataset downloads, last 30 days",
        "fr": "Téléchargements du jeu de données lexical, 30 derniers jours"
      },
      "definition": {
        "en": "The 'downloads' field of the Hugging Face datasets API for MEYNG/sango-vocabulary. Hugging Face defines it as downloads over the previous 30 days; it is not cumulative and it moves within a single day.",
        "fr": "Champ « downloads » de l'API datasets de Hugging Face pour MEYNG/sango-vocabulary. Hugging Face le définit comme les téléchargements des 30 derniers jours ; il n'est pas cumulatif et varie au cours d'une même journée."
      },
      "source_url": "https://huggingface.co/api/datasets/MEYNG/sango-vocabulary?expand[]=downloads",
      "method": "hf_api",
      "query": "GET https://huggingface.co/api/datasets/MEYNG/sango-vocabulary → downloads",
      "refresh": "auto",
      "as_of": "2026-10-10"
    },
    "dataset_downloads_all_time": {
      "value": 1085,
      "label": {
        "en": "Vocabulary dataset downloads, all time",
        "fr": "Téléchargements du jeu de données lexical, depuis la publication"
      },
      "definition": {
        "en": "The 'downloadsAllTime' field of the Hugging Face datasets API for MEYNG/sango-vocabulary: cumulative since the dataset was created on 2 April 2026.",
        "fr": "Champ « downloadsAllTime » de l'API datasets de Hugging Face pour MEYNG/sango-vocabulary : cumul depuis la création du jeu de données le 2 avril 2026."
      },
      "source_url": "https://huggingface.co/api/datasets/MEYNG/sango-vocabulary?expand[]=downloadsAllTime",
      "method": "hf_api",
      "query": "GET https://huggingface.co/api/datasets/MEYNG/sango-vocabulary?expand[]=downloadsAllTime → downloadsAllTime",
      "refresh": "auto",
      "as_of": "2026-10-10"
    },
    "model_v2_2_downloads_30d": {
      "value": 231,
      "label": {
        "en": "Translation model v2-2 downloads, last 30 days",
        "fr": "Téléchargements du modèle de traduction v2-2, 30 derniers jours"
      },
      "definition": {
        "en": "The 'downloads' field of the Hugging Face models API for MEYNG/nllb-sango-finetuned-600m-v2-2, the current model. Previous 30 days, not cumulative. The superseded v1 model is a different repository and is not counted here.",
        "fr": "Champ « downloads » de l'API models de Hugging Face pour MEYNG/nllb-sango-finetuned-600m-v2-2, le modèle courant. 30 derniers jours, non cumulatif. Le modèle v1, remplacé, est un dépôt distinct et n'est pas compté ici."
      },
      "source_url": "https://huggingface.co/api/models/MEYNG/nllb-sango-finetuned-600m-v2-2?expand[]=downloads",
      "method": "hf_api",
      "query": "GET https://huggingface.co/api/models/MEYNG/nllb-sango-finetuned-600m-v2-2 → downloads",
      "refresh": "auto",
      "as_of": "2026-10-10"
    },
    "model_v2_2_downloads_all_time": {
      "value": 297,
      "label": {
        "en": "Translation model v2-2 downloads, all time",
        "fr": "Téléchargements du modèle de traduction v2-2, depuis la publication"
      },
      "definition": {
        "en": "The 'downloadsAllTime' field of the Hugging Face models API for MEYNG/nllb-sango-finetuned-600m-v2-2: cumulative since the model was created on 17 July 2026.",
        "fr": "Champ « downloadsAllTime » de l'API models de Hugging Face pour MEYNG/nllb-sango-finetuned-600m-v2-2 : cumul depuis la création du modèle le 17 juillet 2026."
      },
      "source_url": "https://huggingface.co/api/models/MEYNG/nllb-sango-finetuned-600m-v2-2?expand[]=downloadsAllTime",
      "method": "hf_api",
      "query": "GET https://huggingface.co/api/models/MEYNG/nllb-sango-finetuned-600m-v2-2?expand[]=downloadsAllTime → downloadsAllTime",
      "refresh": "auto",
      "as_of": "2026-10-10"
    },
    "model_v2_2_chrf_sag_fr_flores": {
      "value": 31.88,
      "baseline": 31.37,
      "delta": 0.51,
      "unit": "chrF",
      "model": "MEYNG/nllb-sango-finetuned-600m-v2-2",
      "baseline_model": "facebook/nllb-200-distilled-600M (untrained)",
      "direction": "Sango → French",
      "benchmark": "FLORES+ devtest",
      "sentences": 500,
      "conditions": "beam 4, transformers >= 4.40 < 5.0 (v5 breaks the NLLB tokenizer prefix); neither test set was used for checkpoint selection",
      "label": {
        "en": "chrF, Sango → French, FLORES+ devtest, model v2-2 vs baseline",
        "fr": "chrF, sango → français, FLORES+ devtest, modèle v2-2 vs référence"
      },
      "definition": {
        "en": "chrF of MEYNG/nllb-sango-finetuned-600m-v2-2 against the untrained NLLB-200 (600M distilled) baseline on the FLORES+ devtest set, 500 sentences, out of distribution. chrF is the primary metric; a bare BLEU is never quoted for Sango.",
        "fr": "chrF de MEYNG/nllb-sango-finetuned-600m-v2-2 face à la référence NLLB-200 (600M distillé) non entraînée sur le jeu FLORES+ devtest, 500 phrases, hors distribution. chrF est la métrique principale ; aucun BLEU nu n'est cité pour le sango."
      },
      "source_url": "https://huggingface.co/MEYNG/nllb-sango-finetuned-600m-v2-2#benchmarks-beam4-transformers-50",
      "method": "model_card",
      "query": "model card, Benchmarks table, row SAG→FR FLORES+ devtest",
      "refresh": "manual",
      "as_of": "2026-09-06"
    },
    "model_v2_2_chrf_sag_fr_sib200": {
      "value": 31.45,
      "baseline": 30.2,
      "delta": 1.25,
      "unit": "chrF",
      "model": "MEYNG/nllb-sango-finetuned-600m-v2-2",
      "baseline_model": "facebook/nllb-200-distilled-600M (untrained)",
      "direction": "Sango → French",
      "benchmark": "SIB-200 test",
      "sentences": 204,
      "conditions": "beam 4, transformers >= 4.40 < 5.0; neither test set was used for checkpoint selection",
      "label": {
        "en": "chrF, Sango → French, SIB-200 test, model v2-2 vs baseline",
        "fr": "chrF, sango → français, SIB-200 test, modèle v2-2 vs référence"
      },
      "definition": {
        "en": "chrF of MEYNG/nllb-sango-finetuned-600m-v2-2 against the untrained NLLB-200 baseline on the SIB-200 test set, 204 sentences, out of distribution.",
        "fr": "chrF de MEYNG/nllb-sango-finetuned-600m-v2-2 face à la référence NLLB-200 non entraînée sur le jeu de test SIB-200, 204 phrases, hors distribution."
      },
      "source_url": "https://huggingface.co/MEYNG/nllb-sango-finetuned-600m-v2-2#benchmarks-beam4-transformers-50",
      "method": "model_card",
      "query": "model card, Benchmarks table, row SAG→FR SIB-200 test",
      "refresh": "manual",
      "as_of": "2026-09-06"
    },
    "model_v2_2_chrf_fr_sag_flores": {
      "value": 32.56,
      "baseline": 33.7,
      "delta": -1.14,
      "unit": "chrF",
      "model": "MEYNG/nllb-sango-finetuned-600m-v2-2",
      "baseline_model": "facebook/nllb-200-distilled-600M (untrained)",
      "direction": "French → Sango",
      "benchmark": "FLORES+ devtest",
      "sentences": 500,
      "conditions": "beam 4, transformers >= 4.40 < 5.0; neither test set was used for checkpoint selection",
      "label": {
        "en": "chrF, French → Sango, FLORES+ devtest, model v2-2 vs baseline (baseline wins)",
        "fr": "chrF, français → sango, FLORES+ devtest, modèle v2-2 vs référence (la référence gagne)"
      },
      "definition": {
        "en": "chrF of MEYNG/nllb-sango-finetuned-600m-v2-2 against the untrained NLLB-200 baseline on FLORES+ devtest, French → Sango. The baseline is stronger in this direction and we recommend it for French → Sango.",
        "fr": "chrF de MEYNG/nllb-sango-finetuned-600m-v2-2 face à la référence NLLB-200 non entraînée sur FLORES+ devtest, français → sango. La référence est meilleure dans ce sens et nous la recommandons pour le français → sango."
      },
      "source_url": "https://huggingface.co/MEYNG/nllb-sango-finetuned-600m-v2-2#benchmarks-beam4-transformers-50",
      "method": "model_card",
      "query": "model card, Benchmarks table, row FR→SAG FLORES+ devtest",
      "refresh": "manual",
      "as_of": "2026-09-06"
    },
    "model_v2_2_chrf_fr_sag_sib200": {
      "value": 34.32,
      "baseline": 36.03,
      "delta": -1.71,
      "unit": "chrF",
      "model": "MEYNG/nllb-sango-finetuned-600m-v2-2",
      "baseline_model": "facebook/nllb-200-distilled-600M (untrained)",
      "direction": "French → Sango",
      "benchmark": "SIB-200 test",
      "sentences": 204,
      "conditions": "beam 4, transformers >= 4.40 < 5.0; neither test set was used for checkpoint selection. The Sango side of SIB-200 is orthographically inconsistent (8.3% of vowels tone-marked), so the absolute values in this direction do not measure tone quality; the delta against the baseline remains valid.",
      "label": {
        "en": "chrF, French → Sango, SIB-200 test, model v2-2 vs baseline (baseline wins)",
        "fr": "chrF, français → sango, SIB-200 test, modèle v2-2 vs référence (la référence gagne)"
      },
      "definition": {
        "en": "chrF of MEYNG/nllb-sango-finetuned-600m-v2-2 against the untrained NLLB-200 baseline on the SIB-200 test set, French → Sango. The baseline is stronger in this direction.",
        "fr": "chrF de MEYNG/nllb-sango-finetuned-600m-v2-2 face à la référence NLLB-200 non entraînée sur le jeu de test SIB-200, français → sango. La référence est meilleure dans ce sens."
      },
      "source_url": "https://huggingface.co/MEYNG/nllb-sango-finetuned-600m-v2-2#benchmarks-beam4-transformers-50",
      "method": "model_card",
      "query": "model card, Benchmarks table, row FR→SAG SIB-200 test",
      "refresh": "manual",
      "as_of": "2026-09-06"
    },
    "training_pairs_v2_2": {
      "value": 45451,
      "bidirectional_rows": 90902,
      "label": {
        "en": "Cleaned unique French–Sango pairs the v2-2 model was trained on",
        "fr": "Paires français–sango uniques et nettoyées ayant servi à entraîner le modèle v2-2"
      },
      "definition": {
        "en": "Unique French–Sango sentence pairs remaining after a deterministic cleaning pass over the public NLLB web-mined corpus; trained bidirectionally (90,902 rows). Applies to model v2-2 only. The superseded v1 model was trained on the un-deduplicated corpus ('500,000+ pairs'), a figure that must never be attached to v2-2.",
        "fr": "Paires de phrases français–sango uniques restant après un nettoyage déterministe du corpus public NLLB extrait du web ; entraînement dans les deux sens (90 902 lignes). Concerne le modèle v2-2 uniquement. Le modèle v1, remplacé, avait été entraîné sur le corpus non dédoublonné (« plus de 500 000 paires »), un chiffre qui ne doit jamais être associé à v2-2."
      },
      "source_url": "https://huggingface.co/MEYNG/nllb-sango-finetuned-600m-v2-2#the-data-story-read-this--it-explains-everything",
      "method": "model_card",
      "query": "model card, data story and Training details sections",
      "refresh": "manual",
      "as_of": "2026-09-06"
    },
    "corpus_cleaning_v2_2": {
      "value": 588039,
      "duplicate_sango_targets": 460437,
      "verse_number_rows": 100683,
      "speaker_label_rows": 29939,
      "scripture_reference_rows": 12095,
      "surviving_unique_pairs": 45451,
      "surviving_share_percent": 7.7,
      "label": {
        "en": "Pairs advertised by the public French–Sango corpus before cleaning",
        "fr": "Paires annoncées par le corpus public français–sango avant nettoyage"
      },
      "definition": {
        "en": "The public NLLB web-mined French–Sango corpus advertises 588,039 quality-filtered pairs. The cleaning pass found 460,437 duplicate Sango targets, 100,683 rows with leading verse numbers, 29,939 with speaker labels and 12,095 with scripture references; 45,451 unique pairs (7.7%) survive.",
        "fr": "Le corpus public NLLB français–sango extrait du web annonce 588 039 paires filtrées pour la qualité. Le nettoyage a trouvé 460 437 cibles sango dupliquées, 100 683 lignes commençant par un numéro de verset, 29 939 avec un nom de locuteur et 12 095 avec une référence biblique ; 45 451 paires uniques (7,7 %) subsistent."
      },
      "source_url": "https://huggingface.co/MEYNG/nllb-sango-finetuned-600m-v2-2#the-data-story-read-this--it-explains-everything",
      "method": "model_card",
      "query": "model card, data story section",
      "refresh": "manual",
      "as_of": "2026-09-06"
    },
    "chat_conversations": {
      "value": 207,
      "window_start": "2026-01-30",
      "window_end": "2026-10-10",
      "label": {
        "en": "Chat conversations on the Sango platform",
        "fr": "Conversations de chat sur la plateforme sango"
      },
      "definition": {
        "en": "Distinct conversation identifiers in the platform's chat-message store between 30 January 2026 (first stored message) and 10 October 2026, excluding the platform's own test, smoke-test and probe sessions. One conversation is one chat thread, however many messages it holds. Guest and signed-in conversations are both counted. Translations, vocabulary look-ups and learning activities are not chat and are not in this number.",
        "fr": "Identifiants de conversation distincts dans le stockage des messages de chat de la plateforme entre le 30 janvier 2026 (premier message conservé) et le 10 octobre 2026, hors sessions de test, de supervision et de sonde de la plateforme elle-même. Une conversation est un fil de chat, quel que soit son nombre de messages. Les conversations invitées et connectées sont comptées. Les traductions, recherches de vocabulaire et activités d'apprentissage ne sont pas du chat et ne figurent pas dans ce chiffre."
      },
      "source_url": "https://sangoai.app/metrics.json",
      "method": "dynamodb_scan",
      "query": "scan of the chat-message table (one row per message); count distinct session_id where session_id does not start with 'test', 'smoke' or 'probe'. 224 identifiers before exclusion, 17 excluded. Re-measure with: aws dynamodb scan --table-name <chat message table> --projection-expression session_id,created_at,user_id",
      "refresh": "manual",
      "as_of": "2026-10-10"
    },
    "chat_identified_users": {
      "value": 15,
      "window_start": "2026-01-30",
      "window_end": "2026-10-10",
      "label": {
        "en": "Signed-in users who have used the chat",
        "fr": "Utilisateurs connectés ayant utilisé le chat"
      },
      "definition": {
        "en": "Distinct signed-in user identifiers with at least one stored chat message between 30 January and 10 October 2026, excluding test sessions and excluding guests (guest messages carry no identity; 580 of 976 real messages are guest messages). This is not the number of registered accounts and not the number of visitors.",
        "fr": "Identifiants d'utilisateurs connectés distincts ayant au moins un message de chat conservé entre le 30 janvier et le 10 octobre 2026, hors sessions de test et hors invités (les messages invités ne portent pas d'identité ; 580 des 976 messages réels sont des messages invités). Ce n'est ni le nombre de comptes créés ni le nombre de visiteurs."
      },
      "source_url": "https://sangoai.app/metrics.json",
      "method": "dynamodb_scan",
      "query": "same scan as chat_conversations; count distinct user_id where user_id != 'guest' and the session is not a test/smoke/probe session",
      "refresh": "manual",
      "as_of": "2026-10-10"
    },
    "licence_model_weights": {
      "value": "CC BY-NC 4.0",
      "spdx": "CC-BY-NC-4.0",
      "applies_to": [
        "MEYNG/nllb-sango-finetuned-600m-v2-2",
        "MEYNG/nllb-sango-finetuned-600m",
        "MEYNG/nllb-sango-finetuned-600m-3ep",
        "MEYNG/nllb-sango-finetuned-600m-v2-3"
      ],
      "label": {
        "en": "Licence of the published translation model weights",
        "fr": "Licence des poids du modèle de traduction publié"
      },
      "definition": {
        "en": "Inherited from Meta's NLLB-200 base model and not ours to change. Non-commercial: research and evaluation only. It is a published, openly benchmarked model, but it is not an open-source licence and it must not be described as one.",
        "fr": "Héritée du modèle de base NLLB-200 de Meta ; nous ne pouvons pas la changer. Usage non commercial : recherche et évaluation seulement. Le modèle est publié et évalué publiquement, mais ce n'est pas une licence open source et il ne doit pas être présenté ainsi."
      },
      "source_url": "https://huggingface.co/api/models/MEYNG/nllb-sango-finetuned-600m-v2-2",
      "method": "hf_api",
      "query": "GET https://huggingface.co/api/models/MEYNG/nllb-sango-finetuned-600m-v2-2 → cardData.license (cc-by-nc-4.0)",
      "refresh": "auto",
      "as_of": "2026-10-10"
    },
    "licence_vocabulary_dataset": {
      "value": "CC BY-SA 4.0",
      "spdx": "CC-BY-SA-4.0",
      "applies_to": [
        "MEYNG/sango-vocabulary"
      ],
      "label": {
        "en": "Licence of the published vocabulary dataset",
        "fr": "Licence du jeu de données lexical publié"
      },
      "definition": {
        "en": "Chosen by MEYNG. Commercial use allowed; derivatives must be shared under the same licence. The grant covers MEYNG's curation; 316 of 590 entries are derived from the NLLB corpus and that upstream chain is under review, as the dataset's own DATASHEET states.",
        "fr": "Choisie par MEYNG. Usage commercial autorisé ; les dérivés doivent être partagés sous la même licence. La licence couvre le travail de curation de MEYNG ; 316 des 590 entrées proviennent du corpus NLLB et cette chaîne amont est en cours d'examen, comme l'indique la DATASHEET du jeu de données."
      },
      "source_url": "https://huggingface.co/api/datasets/MEYNG/sango-vocabulary",
      "method": "hf_api",
      "query": "GET https://huggingface.co/api/datasets/MEYNG/sango-vocabulary → cardData.license (cc-by-sa-4.0)",
      "refresh": "auto",
      "as_of": "2026-10-10"
    },
    "licence_toolkit_npm": {
      "value": "MIT",
      "spdx": "MIT",
      "applies_to": [
        "sango-nlp (npm)",
        "github.com/meyng-hub/sango-nlp"
      ],
      "label": {
        "en": "Licence of the sango-nlp toolkit on npm",
        "fr": "Licence du toolkit sango-nlp sur npm"
      },
      "definition": {
        "en": "The published npm package sango-nlp (unscoped; there is no scoped variant of it) is MIT-licensed. Its source is public at github.com/meyng-hub/sango-nlp since 10 October 2026.",
        "fr": "Le paquet npm publié sango-nlp (sans portée ; il n'en existe pas de variante à portée) est sous licence MIT. Sa source est publique sur github.com/meyng-hub/sango-nlp depuis le 10 octobre 2026."
      },
      "source_url": "https://registry.npmjs.org/sango-nlp",
      "method": "npm_registry",
      "query": "GET https://registry.npmjs.org/sango-nlp → license",
      "refresh": "auto",
      "as_of": "2026-10-10"
    },
    "licence_audio_pipeline": {
      "value": "MIT",
      "spdx": "MIT",
      "applies_to": [
        "github.com/meyng-hub/sango-audio-pipeline"
      ],
      "label": {
        "en": "Licence of the public audio-pipeline repository",
        "fr": "Licence du dépôt public du pipeline audio"
      },
      "definition": {
        "en": "One of the two public code repositories under the meyng-hub GitHub organisation that belong to this project (the other is sango-nlp, the npm toolkit's source). The SangoAI application repository is private and is not cited anywhere.",
        "fr": "L'un des deux dépôts de code publics de l'organisation GitHub meyng-hub appartenant à ce projet (l'autre est sango-nlp, la source du toolkit npm). Le dépôt de l'application SangoAI est privé et n'est cité nulle part."
      },
      "source_url": "https://github.com/meyng-hub/sango-audio-pipeline",
      "method": "github_api",
      "query": "GET https://api.github.com/repos/meyng-hub/sango-audio-pipeline → license.spdx_id, visibility",
      "refresh": "auto",
      "as_of": "2026-10-10"
    },
    "ungm_registration": {
      "value": "1224310",
      "label": {
        "en": "UN Global Marketplace supplier registration",
        "fr": "Inscription fournisseur sur le UN Global Marketplace"
      },
      "definition": {
        "en": "MEYNG's supplier registration number on the United Nations Global Marketplace (UNGM). UNGM does not expose supplier records publicly; the registration certificate is available on request at contact@meyng.com.",
        "fr": "Numéro d'inscription fournisseur de MEYNG sur le United Nations Global Marketplace (UNGM). L'UNGM ne publie pas les fiches fournisseurs ; le certificat d'inscription est disponible sur demande à contact@meyng.com."
      },
      "source_url": null,
      "method": "document_on_request",
      "query": "UNGM registration certificate held by MEYNG",
      "refresh": "manual",
      "as_of": "2026-10-10"
    },
    "company_siren": {
      "value": "979361052",
      "label": {
        "en": "MEYNG SARL company registration (SIREN)",
        "fr": "Immatriculation de MEYNG SARL (SIREN)"
      },
      "definition": {
        "en": "French company registry number of MEYNG SARL, RCS Paris, registered 30 August 2023. MEYNG SARL is the commercial vehicle; the HCW association (SIREN 841 629 157) is a different legal person.",
        "fr": "Numéro SIREN de MEYNG SARL, RCS Paris, immatriculée le 30 août 2023. MEYNG SARL est la société commerciale ; l'association HCW (SIREN 841 629 157) est une personne morale distincte."
      },
      "source_url": "https://annuaire-entreprises.data.gouv.fr/entreprise/979361052",
      "method": "registry",
      "query": "GET https://recherche-entreprises.api.gouv.fr/search?q=979361052 -> results[0].siren, date_creation",
      "refresh": "manual",
      "as_of": "2026-09-22"
    }
  },
  "withdrawn": {
    "translations_served": {
      "last_published_value": 72,
      "withdrawn_on": "2026-10-10",
      "label": {
        "en": "Translations served",
        "fr": "Traductions servies"
      },
      "reason": {
        "en": "The figure came from a quota table that only recorded 72 metered requests between 13 and 22 April 2026, yet it was labelled as an all-time count on both sites. The platform has no all-time translation counter today; the figure is withdrawn until one exists.",
        "fr": "Le chiffre provenait d'une table de quotas qui n'a enregistré que 72 requêtes mesurées entre le 13 et le 22 avril 2026, mais il était présenté comme un total cumulé sur les deux sites. La plateforme n'a pas aujourd'hui de compteur cumulé des traductions ; le chiffre est retiré jusqu'à ce qu'il en existe un."
      }
    },
    "sessions": {
      "last_published_value": 1018,
      "withdrawn_on": "2026-10-10",
      "label": {
        "en": "Sessions",
        "fr": "Sessions"
      },
      "reason": {
        "en": "The counter read the row count of the chat-message store, where one row is one message, not one session: 1,018 rows were 514 user messages and 504 replies across 224 conversations. Replaced by chat_conversations and chat_identified_users, which name what they count.",
        "fr": "Le compteur lisait le nombre de lignes du stockage des messages de chat, où une ligne est un message et non une session : 1 018 lignes correspondaient à 514 messages d'utilisateurs et 504 réponses répartis sur 224 conversations. Remplacé par chat_conversations et chat_identified_users, qui nomment ce qu'ils comptent."
      }
    },
    "sango_speakers_5m": {
      "last_published_value": "5 million / 5M+ / 5.5M",
      "withdrawn_on": "2026-10-10",
      "label": {
        "en": "Sango speakers",
        "fr": "Locuteurs du sango"
      },
      "reason": {
        "en": "No source separating first- and second-language speakers was ever cited, and three different figures circulated. Replaced by the qualitative statement 'Sango, the national language of the Central African Republic' until a citable source exists.",
        "fr": "Aucune source distinguant locuteurs de première et de seconde langue n'a jamais été citée, et trois chiffres différents circulaient. Remplacé par la formulation « le sango, langue nationale de la République centrafricaine » jusqu'à ce qu'une source citable existe."
      }
    },
    "language_roadmap_speakers": {
      "last_published_value": "66M+ speakers across 5 languages (Lingala 25M, Wolof 10M, Bambara 14M, Kirundi 12M)",
      "withdrawn_on": "2026-10-10",
      "label": {
        "en": "Language expansion roadmap",
        "fr": "Feuille de route d'expansion linguistique"
      },
      "reason": {
        "en": "Only Sango is live. The roadmap named languages that are not in production and speaker counts with no source, and the two sites disagreed on which languages were listed. Removed; MEYNG publishes what is live.",
        "fr": "Seul le sango est en service. La feuille de route nommait des langues qui ne sont pas en production et des effectifs de locuteurs sans source, et les deux sites ne listaient pas les mêmes langues. Retirée ; MEYNG publie ce qui est en service."
      }
    }
  }
}
