← all work

production2026Live

Anaya Care

AI-generated activities that respect the care plan

What if one care plan could turn into printable, person-specific activities — safely?

A home-care management platform where the day’s tasks, meals, activities and what the family sees all flow from one care plan. I own the activity-generation side: AI-produced worksheets and crafts that read the care record before they draw anything, rendered through a shared activity engine.

RoleFull-stack engineer — activities and worksheets
My partTeam of four · my area: activity generation (~140 commits)
Year2026
StatusLive

What I did

Built with

Screens

Anaya Care marketing page: “Managing a care agency shouldn’t feel this chaotic”, with a product video thumbnail showing the mobile app’s daily schedule.
Marketing page. Activities are generated inside the care manager’s dashboard.

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.