"""Transcribe every synthetic memo with AI Builder Space.
Outputs transcripts_<variant>.json: {memo_id: text}. Variants: grok (plain), grok_terms (names + jargon as `terms`), compat (/audio/transcriptions)."""
import json, pathlib, sys
from concurrent.futures import ThreadPoolExecutor
sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1]))
from common import transcribe

HERE = pathlib.Path(__file__).resolve().parent
d = json.load(open(HERE / 'memos.json', encoding='utf-8'))
terms = list(d['people']) + d['terms']
variants = {'grok': dict(engine='grok'), 'grok_terms': dict(engine='grok', terms=terms), 'compat': dict(engine='compat')}
for name, kw in variants.items():
    out = HERE / f'transcripts_{name}.json'
    if out.exists():
        continue
    def one(m):
        for attempt in range(3):
            try:
                return m['id'], transcribe(HERE / 'audio' / f"{m['id']}.wav", **kw)
            except Exception as e:
                err = str(e)
        return m['id'], f'ERROR: {err[:200]}'
    with ThreadPoolExecutor(6) as ex:
        res = dict(ex.map(one, d['memos']))
    out.write_text(json.dumps(res, ensure_ascii=False, indent=1), encoding='utf-8')
    print(name, sum(v.startswith('ERROR') for v in res.values()), 'errors')
