aac-chatbot / data /generate_users.py
shwetangisingh's picture
added deeper memories and new users.
09fe9bc
"""Derive users.json from per-persona memory JSONs in memories/.
The memory JSONs are the source of truth for each persona's structured profile.
This script reads every memories/*.json and projects a thin index entry into
users.json for the frontend PersonaSelector and for session lookup.
Run after editing any persona JSON:
cd data && python generate_users.py
"""
import json
from pathlib import Path
def main() -> None:
memories_dir = Path("memories")
if not memories_dir.is_dir():
raise SystemExit(f"Expected directory not found: {memories_dir.resolve()}")
user_index: list[dict] = []
for path in sorted(memories_dir.glob("*.json")):
with open(path) as f:
persona = json.load(f)
profile = persona["profile"]
prefs = profile.get("stylistic_preferences") or {}
access = (profile.get("access_needs") or {}).get("input_method")
tone_summary = ", ".join(prefs.get("tone", []))
user_index.append(
{
"id": profile["id"],
"name": profile["name"],
"age": profile.get("age"),
"condition": profile["condition"],
"access_method": access,
"tone_summary": tone_summary,
"file": f"memories/{profile['id']}.json",
}
)
out_path = Path("users.json")
with open(out_path, "w") as f:
json.dump({"users": user_index}, f, indent=2, ensure_ascii=False)
print(f"Indexed {len(user_index)} personas → {out_path}")
for u in user_index:
print(f" {u['id']:25s} {u['name']:30s} {u['condition']}")
if __name__ == "__main__":
main()