Inspiration

Aso ebi is the matching fabric that family and friends buy so everyone dresses alike at a Nigerian wedding, birthday or burial. It's a big deal, and it's still coordinated entirely by hand in WhatsApp groups. The coordinator posts a photo of the fabric, and then:

  • guests ask the same questions over and over ("how much?", "what sizes?", "is it lace or ankara?"),
  • people pay for fabric without any idea how it will look on them,
  • the coordinator tallies names, sizes and payments from hundreds of scattered chat messages.

Virtual try-on fixes the middle problem, but only if it works for this fabric, on these guests, inside the channel everyone already uses. That's AsoLink.

What it does

One link for your aso ebi.

  1. The coordinator uploads a photo of the fabric and picks a style (kaftan, fitted gown or long gown). AsoLink turns the fabric into a realistic outfit, the coordinator approves it, and they get one link to drop into the WhatsApp group.
  2. Each guest opens the link on their phone, takes or picks a photo, and sees that fabric sewn into that style, on themselves, in about 15–20 seconds. Every result is labelled "Visual preview, not a fit guarantee".
  3. They pick a size and tap Confirm on WhatsApp. A ready-written order (name, style, size, quantity, total and a link to their preview) opens in WhatsApp, addressed to the coordinator.
  4. The coordinator gets a private live tracker: who has ordered, how many pieces in each size to sew, expected revenue, how many people opened the link but haven't decided, and a CSV export for the tailor.

No app to install and no sign-up, for anyone.

How we built it

AsoLink is built on YouCam AI Clothes Virtual Try-On (V4), POST /s2s/v2.0/task/cloth-v4.

The key problem: Fabric VTO can't take a customer's fabric. YouCam's Fabric Try-On only accepts Perfect Corp's preset fabric templates. It can't take a fabric photo someone uploads, and none of its presets are ankara, lace or aso oke. So I built a swatch-to-garment pipeline with sharp:

  • A small library of white garments worn by real people, each with a hand-checked garment mask.
  • The coordinator's fabric is tiled seamlessly across the garment at a realistic scale, never mirrored.
  • Hands and skin are excluded, and the white garment's own folds and shadows are kept as a shading layer, so the fabric drapes instead of looking pasted on.

The result is a photo of that fabric sewn into that style. It goes to Clothes VTO as ref_file_url, with the guest's photo as src_file_url.

Built for Nigerian phones and data:

  • The guest's photo is compressed on the phone (EXIF-corrected, about 1280px, 150–250 KB) and uploaded straight to Vercel Blob. YouCam fetches it by URL, so there's no second upload over mobile data.
  • Try-ons are async jobs. The phone polls my API, and the server polls YouCam at most once every 3 seconds per task. Jobs survive a dropped connection or a page reload.
  • YouCam's result URLs expire after 2 hours, so results are copied to Blob as soon as they're ready.
  • The WhatsApp link preview is a 112 KB cached JPEG, so the link shows a proper card in the group chat.

Protecting the unit budget:

  • Previews are cached per photo and style, so a retry never costs extra units.
  • Caps: 3 previews per guest, a per-event cap, and a daily cap.
  • The order deadline is enforced on the server.
  • Every YouCam error code is mapped to a plain-language fix, for example "Stand straight, facing the camera, with your shoulders in the photo."

Stack: Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS 4, Neon Postgres, Vercel Blob, sharp, deployed on Vercel. A 15-step end-to-end test (npm run smoke) drives the whole product against production: upload, synthesis, event, real try-on, cache, WhatsApp order, tracker, CSV and access control.

Challenges we ran into

  • Testing before trusting. Before writing product code, I ran a 57-call spike across Clothes VTO and Fabric VTO. It used 6 people with darker skin tones (including chest-up selfies), 4 traditional outfits, and ankara, kente/aso oke and lace. 57 of 57 succeeded, with a median of about 18 seconds and exactly 2 units per call. Faces, skin tone, gele and coral beads were preserved. The spike also showed that Fabric VTO couldn't do the job, which led to the pipeline above.
  • Small artifacts in my reference images became big artifacts in the try-on. A model's hand in a style photo got painted over with fabric and turned into dark "pocket" patches on guests. A thin white rim at the garment edge showed up as a white outline. Mirrored tiling made lace look symmetrical in an unnatural way. Each one had to be fixed in the pipeline, not the API.
  • The model copies more than the garment. One style photo showed a woman in a white hijab, and YouCam carried the hijab onto guests. I replaced that style with an off-the-shoulder long gown with no head covering.
  • Choosing the engine. V3 is marketed for fabric realism, so I ran the same guest photo and styles through both V3 and V4. V3 gave nicer drape, but it blurred lace patterns and once invented a lace collar. For aso ebi, showing the actual fabric matters most, so I stayed on V4.

Accomplishments that we're proud of

  • Making YouCam try-on work with any fabric a customer uploads, for a cultural market that preset templates don't cover.
  • A complete product, not just a demo: event creation, guest try-on, WhatsApp ordering, a live tracker and a CSV for the tailor, all tested end to end in production.
  • Honest framing throughout: every preview is labelled as a visual preview, not a fit guarantee.

What we learned

  • With a strong API, much of the output quality depends on what you feed it. Clean reference images improved results more than switching model versions.
  • Build for the channel people already use. Guests don't want another app; they want a link in the WhatsApp group and an order they can send in one tap.
  • Measure before building: a cheap spike settled the big decision (Clothes VTO plus synthesis, not Fabric VTO) in a day.

What's next for AsoLink

  • More styles: agbada, buba and sokoto, iro and buba, and gele try-on.
  • Payment tracking and reminders for guests who haven't paid, plus collection through a Nigerian payment provider.
  • A tailor view with each guest's measurements, and support for events with several fabrics (for example, family and friends colours).

Built With

Share this project:

Updates

Submission history