Web Applications

Aida

Built by Bianca Yumul

Turns a photo into a printable cross-stitch chart with the exact thread shopping list — built for my mother, who was tired of patterns that assume you own all five hundred colours.

  • Builder email verified

    Verification

Project screenshot
Type
Personal
Category
Web Applications
Published
Jul 26, 2026
Updated
Jul 26, 2026
Built withSvelteTypeScriptCanvas API
TopicsLifestyle

About this project

What I built & why

My mother cross-stitches the way other people garden: constantly, seriously, with opinions. Every pattern she bought assumed a thread stash of hundreds of colours, and every 'photo to pattern' converter online produced charts calling for ninety threads she'd have to buy for one project. She owns about sixty colours, curated over decades. I wanted to give her a tool that respected the stash — charts built from what she has, plus a short list of what's genuinely worth buying.

The problem

Converting a photo into a stitchable chart is a constrained palette problem: map every region of the image onto her actual thread inventory, allow at most a handful of new threads, and produce a chart a human can follow — printed, gridded, symbol-coded, at a stitch count that fits the fabric she uses. The user is one specific sixty-two-year-old woman, which concentrates the mind wonderfully on what actually matters.

What I owned

All of it: the image processing, the inventory system, the chart renderer, and the print stylesheet, which took longer than the quantization because paper is the real target platform. Also user research, conducted over Sunday dinners, and support, conducted over video calls that begin with 'it's broken' and end with 'it was the printer'.

Technical & product decisions

The core decision was quantizing against her inventory first and only then proposing additions — the algorithm picks the best chart from owned threads, then computes which one to five purchases would most improve it, so the shopping list is ranked by visible impact per peso. Dithering is off by default because stitchers hate speckle: confetti stitches — single isolated squares of a colour — are the thing she complained about most in commercial patterns, so the quantizer actively penalizes them and merges tiny regions. The chart uses her symbol preferences, which she dictated, and 10×10 bold gridlines, which are non-negotiable in her community.

Hardest challenge

My first colour-distance function worked in RGB and produced charts she rejected on sight — 'the sky is dirty' was the exact verdict. Switching the matching to a perceptual colour space fixed most of it, and the rest was learning that thread colours in real light don't match their digital swatches, which led to an afternoon of photographing her actual threads against a white card to calibrate the palette. The algorithm was the easy half; her eyes were the spec.

Result & impact

She has finished three pieces from Aida charts, and one hangs in the sala with the source photo framed next to it, which is the best changelog entry I will ever write. Two aunts requested charts within a month, so the inventory system now tracks three separate thread stashes with different symbol preferences. My mother's review, delivered to a relative in my hearing, was 'Bianca made it, but it works' — and honestly, that's the tier I aspire to professionally.