1. Overview

IndustryAny business moving member or customer data to a new online store, booking, or customer management program
PurposeA checking tool that compares the customer file against existing customer IDs, separates format errors and ID conflicts, and allows downloading clean new records only after the counts are confirmed
Scope2 screens with their own addresses (Check · Check History) · 4 steps (add files → map columns → trial migration → review and download) · 8 check rules · sample customer file of 36 rows and 103 existing IDs
Main flowAdd two files → auto-map columns → trial migration → review clean, auto-fixed, error, and conflict rows → confirm counts → clean new-record CSV and error-row CSV → reopen check history

Uploaded files, column mapping, trial migration results, count confirmation, and check history (last 20 runs) are saved in the browser. They stay in place after a refresh or a later visit.

Connected at rollout: loading directly into the new system (this tool builds the file to load), editing or overwriting existing records, reading Excel (xlsx) files directly, and server storage for sharing the same history across devices.

2. Challenges

1. Mistakes found after migration are hard to undo.

If you find members with inconsistent phone formats or blank names after loading them into the new system, you have to find and fix them one by one. You need to know which rows are problems before loading.

2. Existing customers must not be overwritten.

If the same customer ID already exists in the new system, existing data can be lost. Conflicting IDs must be collected separately so they don't mix with clean records.

3. The job is done only when the numbers add up.

You need to confirm in numbers how many of the total rows move and how many are left out before moving to the next step. Nothing should be downloaded without looking at the numbers.

3. Structure

The check runs on the first screen in order, steps 01 to 04. Each step opens only after the previous one is done; if the input changes, the trial migration must run again before review and download open. Check History has its own address, so past runs can be reopened.

4. Key Features

Trial Migration and Four Counts screen

Trial Migration and Four Counts

Without actually moving anything, it calculates the result and splits rows into clean new · auto-fixed · error · existing-ID conflict. The 36-row sample file splits into 25 clean (5 of them auto-fixed) · 8 errors · 3 conflicts. Tap a number to see only those rows in the table.

Error Rows and Reasons screen

Error Rows and Reasons

Each row marks the failing cells in red and adds a reason. It separately flags invalid email format, missing name, wrong mobile number length, impossible dates (February 30), duplicate IDs within the file, membership levels not on the list, no contact details at all, and invalid customer ID format.

Download Opens Only After Confirming Counts screen

Download Opens Only After Confirming Counts

The download button opens only after you check "정상 신규 25행만 옮기고, 오류 8행·충돌 3행은 따로 받아 원본을 고친다" ("move only the 25 valid new rows; download the 8 error rows and 3 conflict rows separately and fix the source") (move only the 25 clean new rows; download the 8 error rows and 3 conflict rows separately and fix the source). The clean new-record CSV never includes conflicting IDs, and the error-row CSV contains the original values plus a reason column.

Reopen Check History screen

Reopen Check History

Every trial migration run is recorded with its time, file names, and counts. Opening a record lets you review again with that run's files and column mapping; records you no longer need can be deleted.

  • Existing-ID ConflictsIDs already in the existing customer ID list are collected as conflicts even if they have no errors. They are left out of the clean new records so nothing is overwritten.
  • Values That Differ Only in Format Are Fixed AutomaticallyPhone numbers like 01000000010 become 010-0000-0010, dates like 2026.3.12 become 2026-03-12, and emails with capitals or spaces become lowercase — with the changed cells marked. Even when headers differ (member number, full name, contact, and so on), columns are mapped automatically by name.

5. Build Notes

Show details
ResponsiveLayout changes at 900 · 640px. On PC, step titles and content sit side by side, the source → destination file boxes sit next to each other with an arrow between them, and the four result boxes share one row. Below 900px, titles move above content and result boxes split into two rows; below 640px file boxes stack vertically, the arrow points down, and the result table turns each row into a card.
FontsIBM Plex Sans KR for body text, Space Mono for numbers and dates (all free open fonts). Trimmed to only the characters used on this screen, 165KB in total.
ImagesA business screen with no photos. Step markers and count tables are drawn with CSS.
MotionNo motion except a smooth scroll down to results and notification text.
AccessibilityEvery file box and column-mapping field has a label, and error cells use both color and reason text. Accessibility score 100.
TechHTML, CSS, JavaScript (no external libraries). Files are read and compared only inside the browser and never sent anywhere. Korean CSVs (EUC-KR) are also read. Downloaded CSVs are saved so Korean text doesn't break in Excel, and values starting with = or + are blocked from running as formulas in Excel.

6. QA

Results from running the pages on PC 1440 and mobile 390 screens and clicking through in the order a real user would. We also checked that data is still there after saving and refreshing. (2026-09-23)

ItemPC 1440Mobile 390
Screen errors00
Broken files00
Horizontal overflow · clipped text00
Function tests (Chrome)14 / 14 passed14 / 14 passed
Function tests (Safari engine)14 / 14 passed14 / 14 passed

The 14 function tests: first screen display · adding the two sample files and auto column mapping · running the trial migration and counts · error row reasons · existing-ID conflicts · auto-fix marking · download locked before confirming counts · clean new-record CSV after confirming · error-row CSV (original + reason) · re-run required when input changes · results kept after refresh · viewing and reopening check history · uploading a file with different headers · deleting a history record

Speed and quality scores (out of 100; mobile measured three times on a slow connection, same result each time)

PerformanceAccessibilityBest PracticesSEO
Mobile99100100100
PC100100100100

Mobile: First Contentful Paint 1.7s · Largest Contentful Paint 1.8s · Layout Shift 0.001 · Blocking Time 0ms PC: First Contentful Paint 0.4s · Largest Contentful Paint 0.4s · Layout Shift 0.001 · Blocking Time 0ms

7. Result

Try it live ↗
Desktop screenMobile screen
AutoGun Works · Representative: Gunwoo Park · Business registration no. 342-27-02011 · 92-16, Eojin-ro 102beon-gil, Namsa-eup, Cheoin-gu, Yongin-si, Gyeonggi-do, Republic of Korea · contact@autogun.co.kr
Privacy Policy