# Meal-Planning Cron Setup — Known Pitfalls & Fixes

Condensed troubleshooting guide for the `nutrition-coach` cronjob stack. Each section provides the symptom → root cause → fix.

---

## 1. Interactive Interview Via Cronjob Is Impossible

**Symptom**
```
Wed 19:30: Agent sends 10 questions to Telegram group.
User replies 19:35–19:42 in Telegram.
current_interview.json: all answers are null
```

**Root cause**
A cronjob is a single-shot process. It sends, then exits. It never reads Telegram inbound messages. User replies arrive in the gateway but there is no running session to pair them with.

**Fix options**
1. **Replace with a non-interactive reminder** (recommended for automation):
   ```bash
   hermes cron edit <id> --prompt "🔔 Wochenplan: Schreibe \"interview\" oder \"plan\" um loszulegen." --no-agent
   ```
   User types a keyword in chat → triggers the interview in a live session.
2. **Use a live session for the interview.** Load the skill (`/skill meal-planning`) and run the interview interactively. Store the JSON for Friday.

---

## 2. Delivery Target Fails on Named Groups

**Symptom**
```
delivery error: Telegram send failed:
invalid literal for int() with base 10: 'Schoen Inc'
```

**Root cause**
Cron `deliver` field expects a numeric `chat_id` or a pre-registered alias. `"telegram:Schoen Inc"` is a display name, not a parseable ID.

**Fix**
Use one of the following verified targets for the nutrition-coach profile:
```json
"deliver": "telegram:D S"         // DM with Dominik
"deliver": "telegram:-5265906503" // Schoen Inc group
"deliver": "telegram"            // home channel
```

---

## 3. Model Override in Cron JSON Is Not Updated by `hermes config set`

**Symptom**
Bulk-switched profile to `vllm/glm-5-2-nvfp4` via `hermes config set`, but cronjob still calls `vllm/moonshotai/kimi-k2.6`.

**Root cause**
Cron jobs hard-code `model` and `provider` inside their own JSON entry in `profiles/nutrition-coach/cron/jobs.json`. The profile `config.yaml` is not consulted at runtime.

**Fix — Python one-liner**
```python
import json
path = '/home/debian/.hermes/profiles/nutrition-coach/cron/jobs.json'
with open(path) as f:
    data = json.load(f)
for j in data['jobs']:
    if 'nutrition' in j['name'].lower():
        j['model'] = 'vllm/glm-5-2-nvfp4'
        j['provider'] = 'noris'
with open(path, 'w') as f:
    json.dump(data, f, indent=2, ensure_ascii=False)
```

---

## 4. Interview JSON Schema Mismatch

**Symptom**
`nutrition-plan-generator-v4.py` crashes with `KeyError` on fields it expects (e.g. `dominik_ho`, `special_events`).

**Root cause**
The interview data file (`current_interview.json`) was created by a different schema than the generator expects. Cronjobs that produce JSON by LLM free-form output are fragile.

**Fix**
Always use the Interview Schema template (`templates/interview-data-schema.json`) when persisting. Validate before saving:
```bash
python3 -m json.tool current_interview.json >/dev/null || echo "INVALID JSON"
```

---

## Verification Checklist After Any Change

```bash
hermes --profile nutrition-coach cron list            # jobs running under correct profile?
hermes config --profile nutrition-coach | grep Model  # profile model correct?
python3 -c "import json; d=json.load(open('/home/debian/.hermes/profiles/nutrition-coach/cron/jobs.json')); print([j['model'] for j in d['jobs']])"  # cron model correct?
cat /home/debian/.hermes/profiles/nutrition-coach/plan_data/current_interview.json | python3 -m json.tool  # interview valid?
```