UNI-AI.
The route didn't consult the layout.
UNI-AI turns the facts of a Runiverse activity into shareable artwork: route, distance, pace, duration, territory, and sometimes a club identity.
Card variants, rendering details, and service hardening in a shared Runiverse project.

The route changes.
The card holds.
Explore three illustrative route shapes beside an actual artwork sample from the project.

The route shapes are controlled examples, not additional generated card variants. Text, imagery, and route height each need their own bounds.
Real routes make awkward shapes.
A run can be wide, narrow, or nearly straight. Names and logos vary too. The cards measure text, stack what will actually be drawn, and calculate their height from that content.
The route keeps its proportions inside a bounded area. Its height is capped so a narrow track cannot stretch a card indefinitely. Logos have fitted bounds and fallbacks.
One activity, several versions.
The service prepares shared activity data once, reuses satellite imagery where applicable, and renders several designs. Each design records its own result; one failed variant does not discard successful images. Shared preparation can still stop the batch.
Successful outputs are uploaded to Cloudinary. Photo-backed artwork can use a compressed format; transparent artwork keeps PNG.
Shared work.
I contributed card variants and service hardening. Meet contributed the Lambda adapter migration and deployment measurement work. The interesting part of the rendering case is where design rules meet incomplete, variable activity data.
Things the work
taught me.
The route did not consult the layout.
A design rule is only useful if it survives the strange shapes real people make.
Keep the good cards.
If one design fails, the successful versions should still be available.