Taewon Kwon

Kunyang

Helping a Korean zipper distributor founded in 1970 reach a younger generation of buyers, from search presence to its first-ever inventory record to a redesigned sample book.

Role
Sole builder and designer, end to end
Type
Paid client engagement
When
Jan – Oct 2026
Status
All four parts delivered, Oct 2026
Stack
Supabase (Postgres), Flutter web, an offline count app
Scope
Inventory system · website & search · sample book · business cards

Kunyang (건양통상) distributes zippers and apparel materials, and has run on relationships with older client companies since 1970. It had no inventory record at all. I delivered four things under one fixed deadline and budget: a website that makes it findable, its first inventory system, a redesigned sample book, and business cards.

4.08M
pieces counted in two days by four people, Sep 11–12
628
distinct stocked items under 41 product names
~10,000
pieces moved every week
42
shelf QR codes, the only labels in the system

The problem

Two problems, one company. Outside, younger buyers find suppliers through search and maps, and Kunyang barely showed up in either. The business relied on long-standing relationships alone.

Inside, the company kept over-ordering because it couldn’t see what it already had. No inventory record existed anywhere. Its invoicing software issues invoices and tax invoices but doesn’t track stock, so what sat on the shelves lived in veteran workers’ memory.

Train of thought

Most of the inventory design changed once the plan met the warehouse. The filled markers are where it changed.

  1. Jan 2026The goal: win younger clients through organic discoverability, and stop the over-ordering by giving the company a record of its stock.
  2. Per-shelf quantitiesThe first design tracked quantity on every shelf. But stock leaves on invoices, and invoices never say which shelf it came from. Every per-shelf number would have been a guess nobody could check. I narrowed the promise to an exact total per item, plus where each item was last seen and how long ago.
  3. The master listThe invoicing export looked like a catalog. It was really a log of every line ever typed, with names coined per customer and per era, and colour codes that mixed the undyed base on the shelf with the dyed finish a customer ordered. So the shelf became the authority, and the catalog was reconciled against the count afterward.
  4. What identifies a boxEvery item needed a stable identity. Company insiders pointed out that shorthand varies by writer and YKK’s item number changes per delivery batch. The printed name, size and colour is consistent and matches YKK’s delivery documents. Their call overrode my earlier design.
  5. Sep 11–12, the countThe first hour of counting was far too slow, and the bottleneck was typing, not counting. I rebuilt the count tool during the count: 14 versions in 36 hours, against live use.
  6. After the countPer-carton serial scanning, per-box stickers and container tracking were each designed and then removed once it was clear nothing downstream used them.
  7. Oct 2026All four parts delivered. The system runs live, with the kiosk and the daily invoice import keeping stock current.

Inventory system

The company’s first inventory record. A Supabase (Postgres) backend with a Flutter web front end: a kiosk app on two Android tablets (a receiving station on the first floor and a lookup station in the basement), plus an office and admin app.

It was built for five or six workers in their 50s to 70s, standing, sometimes gloved, in a dim basement. So the interface is Korean-only, has four buttons, and asks almost nothing of anyone.

찾기Find
입고Put away
이동Move
관리Manager
Four buttons, and none for taking stock out. Pickers record nothing. The invoice the office already types for every order is imported once a day as the outbound record.

The whole worker contract

  1. Taking stock outDo nothing.
  2. Putting it awayScan the shelf’s QR once.
  3. Moving itScan the shelf’s QR once.
Stock is never stored, only derived. Every stock figure traces back to the ledger entries that produced it.

Design rules

  1. Promise the number that matters.The exact total per item is what stops over-ordering. A dated sighting is enough to send someone to the right shelf.
  2. A missing count is caught, not absorbed.An invoice line that would push an item below zero is refused and flagged, not written. Stock leaving that was never recorded is what a missed shelf looks like.
  3. Uncertainty is marked, not hidden.Bundles and cartons are counted exactly. Only an open bag’s loose remainder is estimated, stored separately and shown as 약 (“approx.”). An approximate total is an exact base plus a small tail.
  4. Receiving counts blind.Staff tally boxes with the document’s expected count hidden until they finish. A visible target invites matching it instead of counting.
  5. Cut what has no user.Serial scanning, box stickers and container tracking all went. The only labels in the system are 42 shelf QR codes.

The opening count

I froze orders for a Friday afternoon and all of Saturday, September 11–12, and counted everything once. Four people counted on their own phones, and the system then had to run live for at least a week before I left, so errors would surface while I could still fix them.

  1. Basement2.63M
  2. 2F794K
  3. 1F346K
  4. Stairwell312K
  5. Total4.08M
4.08 million pieces, 1,225 counted entries. Five product lines hold 99% of the pieces. One line alone spans 218 colours, so colour is where the item count lives.

Rebuilding the count tool during the count

There were four counters, and the tablets hadn’t been bought yet. So I built a standalone offline web app for the counters’ own phones, with no server and no login. Each phone exported one file, sent over KakaoTalk and merged on a laptop by script.

The first hour was far too slow, and the bottleneck was typing. Over 36 hours I shipped 14 versions:

  • Recent-first suggestions on every field.
  • Remembered defaults: 100 per bundle, and per-box counts learned for each product.
  • Fewer fields: photos and item numbers dropped.

Those suggestions are why 1,225 entries collapsed to 41 product names, with only case and spacing drift.

Reconciling the catalog

The count captured exactly what each box label prints. The catalog was then reconciled against it by deterministic parsing.

  1. 24,878invoice lines in the company’s invoicing history
  2. 1,826distinct product names typed into them
  3. ~8,500candidate SKUs once parsed, many of them domestic products bought to order that never enter the warehouse
  4. 628items actually on the shelves
From invoice history to what’s on the shelves. The shelf, not the master list, decides what exists.

I didn’t use LLM clustering. A wrong merge reads as correct and corrupts the ledger permanently, so every match had to be explainable by a rule.

Search presence

A new website on Cloudflare, email moved to Zoho, Google SEO and Naver Place registration, live since mid-September. I launched with Naver Place and base SEO only, and deferred a Naver blog content pipeline until the basics were in place.

Sample book

Two binders that show the physical zipper samples. Book I covers Standard and Standard Plus; Book II covers Noble and Nylon/Vislon. Each opens with the same company introduction, then a category page per line, then minimal sample pages with three sizes of one product hung side by side.

Manufacturing took most of the budget, so I designed every page, the binder and the mood references myself. The manufacturer recreated it from my files and only touched up the layout, which saved the cost of a designer.

  1. Five directions, two formats each.Every direction came in a tall (4:5) and a wide (9:8) version.
  2. The client team judged on taste.They know their buyers, so the choice was theirs.
  3. The manufacturer checked feasibility.Cover colours, hanger placement and format.
  4. Version 6 combined the strongest parts of all five.The client got a book shaped by their own picks, not a take-it-or-leave-it option.

A new set of business cards completed the physical rebrand. I scrapped a printed catalogue and kept the physical work to the cards and the sample book.

Outcome

Every floor was counted once, 4.08 million pieces in two days with four people. That count became the opening balance of the ledger. Since then, stock stays current through shelf scans on put-away and the daily invoice import, with no data entry by pickers.

The question the system exists for, “do we already have this?”, is now answered from a kiosk or the office in seconds, instead of a trip to the basement or a veteran’s memory. That is the check that was missing before every reorder.

The website has been live since mid-September and is registered on Google and Naver Place, so buyers who don’t already know the company can find it.

What it shows: owning delivery end to end for a non-technical, traditional business, across software and physical work, under a fixed deadline and budget, and redesigning under live use when the plan met the warehouse.