model_id- baobab-af
display_name- Baobab Afrikaans
model_version- 2026.10.national
family- baobab
status- national_shipped
product_line- National Cape Town / Standard Afrikaans Afrikaans speech + phrase MT corridor — generative_inference_live false; neural_nmt false; trainingEligible locked. Product default af-ZA / own:af-za-female; Kaaps secondary.
as_of- 2026-10-22T18:31:54.906Z
varieties
Afrikaans (Cape Town / Standard Afrikaans)
variety_id- af-za
pack_key- cape
name_en- Afrikaans (Cape Town / Standard Afrikaans)
bcp47- af-ZA
iso6393- afr
echo_voice_id- own:af-za-female
mt_lang_key- af
language_pack_version- af-za-pack-2026.10
corridor_id- en-af-cape
primary_use- Cape Town / South Africa citizen services / education / MeetingBridge South Africa Afrikaans
dataset_manifest- apps/api/eval/corridors/en-af-cape/test-scripts.json
trainingEligible- false
audio_clean- spectral_gate_v2
speech_finetune_recipe- docs/baobab/SPEECH_FINETUNE_RECIPE.md
english_accentlocale- en-ZA
voice_id- own:en-za-female
label- Lerato · South African English
region- south_africa
note- South African English accent paired with Afrikaans and isiZulu national models. Never substitutes for L1 Afrikaans or isiZulu.
domains- greetings
- everyday
- airtime
- health
- civic
- market
not_interchangeable_with- af-za-kaaps
- af-za-pretoria
- af-za-namibian
- zu-za
- xh-za
mtstatus- phrase_table_only
note- Deterministic phrase + lexical Baobab pack in lugemi-mt.engine. Fail-closed when uncovered. No dedicated neural NMT service.
pairs- en↔af
asrstatus- neural_offline
checkpoint- openai/whisper-small (Afrikaans + Cape phrase rescoring)
license- see_model_card
env_gate- Afrikaans speech
variety_exclusive_finetune- false
ttsstatus- neural_offline
checkpoint- UBC-NLP/Simba-TTS-afr (transformers VitsModel) + Cape prosody
license- CC-BY-4.0
env_gate- Afrikaans speech
variety_exclusive_finetune- false
s2s_corridorstatus- corridor_pass
note- en-af-cape corridor scripts PASS when speech URL points at lugemi-afrikaans. Broad domain deferred. Clarity: spectral_gate_v2.
national_tiers
Public demo
id- public_demo
name- Public demo
who- Citizens, press, students (unauthenticated demos)
auth- None — soft abuse controls on demo speech
maps_to_plan- null
residency_preference- null
audit- false
commercial_nc_clean_tts_required- false
endpoints- GET /v1/models/baobab-af
- GET /v1/baobab/am/national
- POST /v1/demo/speech
limitstranslate_chars_daily_hint- Authenticated translate required for production MT
demo_speech- 400 requests / 10 minutes / IP (demo controller)
rate_limit_note- Demo speech returns rate_limited when exceeded
controls- honest eSpeak Afrikaans when speech offline (never substitute for isiZulu)
- spectral_gate_v2 clarity on live neural WAV
- variety headers — af-za
Education / free
id- education
name- Education / free
who- Students, UG / KNUST labs, research orgs on Free/Pro plans
auth- Org API key (TranslateAuthGuard) — Free or Pro plan
maps_to_plan- free|pro
residency_preference- ZA
audit- true
commercial_nc_clean_tts_required- false
endpoints- POST /v1/translate
- POST /v1/tts/synthesize
- POST /v1/audio/transcriptions (when ASR keyed)
- GET /v1/models/baobab-af
limitstranslate_chars_daily_hint- Free: BILLING_FREE_TRANSLATE_CHARS_QUOTA (default 50k); Pro: BILLING_PRO_TRANSLATE_CHARS_QUOTA
demo_speech- null
rate_limit_note- RATE_LIMIT_FREE_PER_KEY / RATE_LIMIT_PRO_PER_KEY via existing RateLimitGuard
controls- UsageService metering
- BillingService.assertWithinQuota
Ministry production
id- ministry
name- Ministry production
who- South Africa government services (Cape Town / Standard Afrikaans citizen channels)
auth- Ministry-keyed org API key — Business plan mapping
maps_to_plan- business
residency_preference- ZA
audit- true
commercial_nc_clean_tts_required- false
endpoints- POST /v1/translate
- POST /v1/tts/synthesize
- MeetingBridge South Africa corridor
- GET /v1/residency
- GET /v1/metrics/translate
limitstranslate_chars_daily_hint- Business translate quota (BILLING_BUSINESS_TRANSLATE_CHARS_QUOTA)
demo_speech- null
rate_limit_note- RATE_LIMIT_BUSINESS_PER_KEY / PER_ORG
controls- AuditService on translate.completed
- Org retention / vendor-training settings
- Residency preference GH (affinity, not hard geo-fence)
Enterprise
id- enterprise
name- Enterprise
who- Banks, telcos, NGOs serving Cape Town / South Africa
auth- Paid Enterprise keys
maps_to_plan- enterprise
residency_preference- AF
audit- true
commercial_nc_clean_tts_required- true
endpoints- POST /v1/translate (+ TM / quality)
- Speech + MeetingBridge
- Fine-tunes / marketplace where plan allows
limitstranslate_chars_daily_hint- Enterprise translate quota
demo_speech- null
rate_limit_note- RATE_LIMIT_ENTERPRISE_PER_KEY / PER_ORG
controls- SLA targets (documented; contractual SLA separate)
- Commercial TTS path must be NC-clean for redistribution of MMS TTS assets
- Audit + retention
research
id- baobab-af-generative-lm
status- research_planned
foundation_llm_weights- false
generative_inference_live- false
ships_trained_baobab_foundation- false
separate_variety_checkpoints_required- true
training_recipe- docs/baobab/GENERATIVE_LM_RECIPE.md
note- Research slot + harness + training recipe only. Do not brand phrase MT or speech corridors as a full national LLM. Generative inference unsupported until gates are met.
proposed_checkpoint_ids
primary- baobab-af-cape-lm-*
prerequisites
- en-af-cape corridor + national API surfaces remain the product wedge
- Mix / Fidelity / Live evals and rights clear
- Consented parallel + speech data with held-outs
acceptance_gates
held_out_speakers
id- held_out_speakers
required- true
met- false
description- Held-out evaluation speakers must never appear in training exports; speaker lists remain empty until consented collection.
community_consent
id- community_consent
required- true
met- false
description- trainingEligible stays false until Cape Town / South Africa community speakers re-confirm for training.
variety_separation
id- variety_separation
required- true
met- false
description- Any future LM/adapters must ship as baobab-af-cape-* — never one blob marketed as interchangeable varieties.
beat_phrase_mt_baselines
id- beat_phrase_mt_baselines
required- true
met- false
description- Generative claims require held-out gains vs corridor phrase-MT baselines on declared native tasks.
commercial_rights_clear
id- commercial_rights_clear
required- true
met- false
description- Base model + data licenses must clear commercial ministry/enterprise redistribution before promotion.
task_harness
goldens- apps/api/src/baobab/baobab-af.research.ts#RESEARCH_GOLDENS
runner- apps/api/src/baobab/baobab-af.research.ts#evaluateBaobabAfNativeTasks
generative_default- unsupported
training_eligible_unlock
trainingEligible- false
status- locked
unlock_doc- docs/baobab/TRAINING_ELIGIBLE_UNLOCK.md
note- trainingEligible remains false until all gates are met with durable evidence. Do not invent consent.
gates
community_consent_sw
id- community_consent_sw
required- true
met- false
evidence_required- Signed Cape Town / South Africa contributor agreements reconfirming training use
description- Cape Town / South Africa community speakers must reconfirm training export consent.
held_out_speaker_lists
id- held_out_speaker_lists
required- true
met- false
evidence_required- Published held-out speaker IDs never present in train splits
description- Held-out evaluation speakers must never appear in training exports.
sw_native_review
id- sw_native_review
required- true
met- false
evidence_required- Paid Afrikaans (Cape Town / Standard Afrikaans) native review records with trainingEligible fields
description- Native review must cover Afrikaans (Cape Town / Standard Afrikaans) before any train export.
variety_not_conflated
id- variety_not_conflated
required- true
met- false
evidence_required- Corpus metadata proving non-interchangeable varieties excluded from train exports
description- Kaaps (ti-et) is a secondary East African variety — not the South Africa national default.
rights_clear_for_export
id- rights_clear_for_export
required- true
met- false
evidence_required- Legal memo clearing commercial vs research split for export corpus
description- IP / commercial rights must clear before trainingEligible flips.
license_warnings
- Afrikaans Simba VITS (UBC-NLP/Simba-TTS-afr) is CC-BY-4.0 — attribute per model card; Meta MMS has no facebook/mms-tts-afr.
- Whisper ASR for Afrikaans corridor — pin versions and attribute per model card.
- Cape Town / Standard Afrikaans is the product default via prosody + labels on shared Afrikaans-general weights — not a Cape-only exclusive speech finetune — Kaaps / Pretoria / Namibian Afrikaans varieties are secondary.
- Phrase/lexical Baobab MT covers reviewed corridor domains; neural_nmt is false (no dedicated Afrikaans NLLB national service shipped).
- Never substitute Afrikaans for isiZulu or isiXhosa (and the reverse).
capabilities
phrase_mt- phrase_table_only
national_api_tiers- true
generative_lm_research_slot- true
generative_inference_live- false
neural_nmt- false
neural_asr- false
neural_tts- false
s2s_corridor- true
foundation_llm_weights- false
audio_clean- spectral_gate_v2
honesty
phrase_table_only- true
national_api_tiers- true
research_slot_shipped- true
neural_speech_live- false
neural_nmt- false
generative_inference_live- false
foundation_llm_weights- false
ships_trained_baobab_foundation- false
variety_exclusive_speech_finetunes- false
trainingEligible- false
iso_code- afr
audio_clean- spectral_gate_v2
training_eligible_unlock
trainingEligible- false
status- locked
unlock_doc- docs/baobab/TRAINING_ELIGIBLE_UNLOCK.md
note- trainingEligible remains false until all gates are met with durable evidence. Do not invent consent.
gates
community_consent_sw
id- community_consent_sw
required- true
met- false
evidence_required- Signed Cape Town / South Africa contributor agreements reconfirming training use
description- Cape Town / South Africa community speakers must reconfirm training export consent.
held_out_speaker_lists
id- held_out_speaker_lists
required- true
met- false
evidence_required- Published held-out speaker IDs never present in train splits
description- Held-out evaluation speakers must never appear in training exports.
sw_native_review
id- sw_native_review
required- true
met- false
evidence_required- Paid Afrikaans (Cape Town / Standard Afrikaans) native review records with trainingEligible fields
description- Native review must cover Afrikaans (Cape Town / Standard Afrikaans) before any train export.
variety_not_conflated
id- variety_not_conflated
required- true
met- false
evidence_required- Corpus metadata proving non-interchangeable varieties excluded from train exports
description- Kaaps (ti-et) is a secondary East African variety — not the South Africa national default.
rights_clear_for_export
id- rights_clear_for_export
required- true
met- false
evidence_required- Legal memo clearing commercial vs research split for export corpus
description- IP / commercial rights must clear before trainingEligible flips.
nmt
neural_nmt- false
disclosed_base_named- null
disclosed_base_weights_in_repo- false
commercial_license_cleared- false
adapter_status- phrase_table_only
checkpoint_shipped- false
phrase_table_live- true
remote_mt_configured- false
remote_mt_env- null
baobab_yo_nmt_url_configured- false
baobab_yo_nmt_env- null
separate_variety_adapters- false
note- Baobab Afrikaans MT is phrase/lexical only (en↔af). Fail-closed when uncovered. neural_nmt false.
phrase_table_pairs
- en↔af
residency
serving_today- jnb
serving_today_label- Africa-primary Fly region Johannesburg (jnb)
affinity_target- af-south-1
affinity_city- Cape Town
affinity_country- ZA
accra_gpu_island- false
accra_gpu_island_status- deferred
hard_geo_fence- false
preference_model- affinity_not_hard_fence
ministry_affinity_pin- af-south-1
affinity_enforcement- soft_preference_recorded
accra_island_runbook- docs/baobab/JNB_RESIDENCY.md
note- Inference prefers matching person/org residency to nearby model hosting when ready — affinity, not a hard geo-fence. Cape Town is the South Africa residency preference; Africa-south affinity pin is af-south-1. Live serving for verbalab + lugemi-afrikaans is jnb today. No fictional Cape Town GPU island is claimed live beyond jnb serving.
licenses
tts- CC-BY-4.0
asr- see_model_card
note- TTS is CC-BY-4.0 (Simba). neural_nmt stays false — no dedicated NLLB remote shipped. Clarity path: spectral_gate_v2.
deferred
- Commercially cleared neural NMT (phrase MT is the live fail-closed path)
- Cape Town / JNB GPU island / hard South Africa geo-fence (affinity af-south-1; serving jnb)
- Contractual ministry SLA signature (operational targets shipped)
- Generative LM weights + inference (recipe + gates only)
- Variety-exclusive ASR/TTS finetunes beyond shared checkpoints
- trainingEligible unlock evidence (checklist shipped; flag locked false)
endpoints
model_card- GET /v1/models/baobab-af
national- GET /v1/baobab/am/national
research- GET /v1/baobab/am/research
unlock- GET /v1/baobab/am/unlock
slo- GET /v1/baobab/am/slo
translate- POST /v1/translate
demo_speech- POST /v1/demo/speech
tts- POST /v1/tts/synthesize
meetingbridge_ghana- MeetingBridge South Africa corridor
corridor- en-af-cape
residency- GET /v1/residency
translate_metrics- GET /v1/metrics/translate
docs
national_model- docs/baobab/AFRIKAANS_NATIONAL_MODEL.md
model_card- docs/baobab/baobab-af.MODEL_CARD.md
partnership_open_eval- docs/baobab/PARTNERSHIP_OPEN_EVAL.md
ministry_sla- docs/baobab/MINISTRY_SLA.md
training_eligible_unlock- docs/baobab/TRAINING_ELIGIBLE_UNLOCK.md
speech_finetune_recipe- docs/baobab/SPEECH_FINETUNE_RECIPE.md
generative_lm_recipe- docs/baobab/GENERATIVE_LM_RECIPE.md
jnb_residency- docs/residency.md
corridor- en-af-cape
language_kit- docs/models/05_LANGUAGE_KIT.md
residency- docs/residency.md