Where the work sits
Anaya Care is a monorepo — Next.js web app, NestJS backend, Expo mobile app, shared types — built around one idea: the care plan is the source of truth, and everything the care provider and the family see is derived from it. Activities are one of those derivations. A care manager picks a type, the platform generates something suited to the person, and it prints.
Care-aware generation
The interesting constraint is not the model, it is the care record. A resident who is NPO (nothing by mouth) cannot be handed a culinary craft; a resident with a nut allergy should not get a collage that uses walnuts as material. So the generators read food and allergen limits from the care record first and constrain both the prompt and the post-processing — food is removed from crafts and games under an NPO check, and allergen-derived materials are excluded from the materials list.
Answer keys that are actually right
Spot-the-difference and find-what’s-missing sheets are only useful if the answer key is exact. Rather than trusting the model’s description of where it changed the picture, the worksheet is drawn with a grid, the declared changes are located on that grid, and the markers are measured in the picture’s own pixels. Paint-by-numbers never goes through the image model at all: a browser-side processor quantises an uploaded photo into regions, so the result is faithful to a photo the family chose.
Durability
Generation runs as a Restate invocation so a multi-step job (draw the scene, derive the variant, build the key, render the PDF) survives restarts, and a cancel is verified to have actually stopped the invocation rather than assumed.
