Kuyuy connects carriers with cargo generators for domestic and international shipments. The migration to a native app promised scalability, time savings, and support — all in one place.
But the reality was messier. The product had many high-fidelity wireframes, but no global architecture, no interactive prototype, and inconsistent terminology across three user profiles (Carrier, Cargo Generator, and SuperAdmin — each with Admin and Employee variants). What made sense internally didn't make sense to the actual users.
Before fixing screens, the team and I aligned on three design decisions that would shape everything else. Each one addressed a specific point where the experience was breaking down.
Instead of waiting for "the complete app," we prototyped one user flow at a time. Validating early beat building everything blind.
One label = one concept. The same step shouldn't have 2–3 different names depending on which profile was logged in.
Shared components across profiles, role-specific actions where needed. Less to build, easier to maintain.
I owned the design end-to-end: information architecture, user flows, high-fidelity prototypes, edge-case mapping, and the component library that engineering followed during the build. I worked closely with the PM on scoping and with the client to validate decisions at each phase.
My focus was turning a fragmented web product into a native app that worked for three user profiles — without building three different interfaces to match.
The project took roughly a year total. The first 6 months were spent cleaning up the prototype — there were hundreds of screens and flows, nothing was componentized, and we depended on client validations that reshaped flows completely along the way.
Audited the existing prototype. Labeled incomplete flows, removed unused screens, flagged what needed rebuilding.
Mapped global information architecture across the three user profiles and their national / international variants.
Defined canonical steps per role. Example: "With Offers" = Offer + Accept / Reject + Counter-Offer.
The happy path wasn't enough. Mapped critical cases: rejected documents, incomplete data, on-route incidents, failed closures.
Delivered interactive prototypes, component library, and validation guidelines for engineering.
Instead of building three parallel apps, I designed a single information architecture where shared entities (shipments, contracts, messages) looked the same for everyone — but surfaced role-specific actions where it mattered. The SuperAdmin kept full control, Carriers and Generators saw only what they needed to act on.
The old product used different terminology depending on who was logged in. I worked with the PM to collapse these into a single vocabulary. Example: "With Offers" means the same thing for every profile — Offer + Accept/Reject + Counter-Offer. Same term, same actions, same validations.
I mapped critical edge cases: rejected documents (view missing requirements, retry, or escalate), incomplete data (validate and ticket), on-route incidents (pause, reassign, or escalate to Operations), and failed closures. Good UX covers both the expected and the unexpected.
Kuyuy is an ongoing project. Here's what my work produced — tangible outputs that engineering and product could act on.
Architecture first avoids loose screens and circular discussions. One term, one action — aligning language speeds everything up.
Open to full-time, contract, and freelance roles across Germany and remote in Europe.
angie.varelab7@gmail.com