I build the kiosk client that runs unattended AI experiences such as AI photos, tarot, personality tests, photo cards, and AI music at pop-up stores and exhibitions. It has run 65-70 events without major issues, from game companies, theme parks, and department store pop-ups to an event in Singapore. I migrated the legacy C# WPF client to Electron + Next.js, and the renewed version is deployed on ~150 kiosks, handling ~30K card payments and ~8K coupon uses in a year.
WebSiteUrl ->Experience content at an idol-themed pop-up (brands and faces blurred)
Kiosks that run on site
65-70
offline events in Korea and abroad
~150
renewed kiosks deployed
~30K
card payments a year (~8K coupon uses)
2,000+
peak payments in a day
Five digital kuji kiosks in a shopping mall event hallK-pop experience event, debut fortune contentGame IP pop-up, badge and card made with AI photo
One program per booth, JSON settings per store
I designed the kiosk client with Electron and Next.js, owning IPC, logging and data management, and device authentication. Each booth runs its own program, and per-store settings are toggled through JSON configuration.
AI photo
Photo strips
Tarot
Personality test
Kuji
Claw machine
Roulette
AI music
Voice chat (LLM)
…etc
Kiosks that last a day without staff
WatchDog restarts the app if it dies; on-site "app closed" calls stopped after rollout
Kiosk mode and automatic shutdown at closing time
Sentry monitoring with Slack alerts to catch failures like AI polling right away
A remote management client customized from open source
A back-office for kiosk sales and device status
From payment to print
Coupon codes, cards, Samsung Pay, and Apple Pay are integrated through the KICC payment module (payments, refunds, cardless refunds). Results print on photo, card, and POS receipt printers, and can be downloaded with an on-screen QR code. Downloadable files are deleted automatically after a set time.
Coupon entry, payment method, and AI music genre screens (client logos blurred)
Overseas events in 5 languages
next-intl supports Korean, English, Japanese, and Simplified and Traditional Chinese, and dayjs formats dates and times for the event's country.
Accessible kiosks
Windows TTS reads the screen aloud, and Electron dual screens show an assistive display alongside the main one.
AI models as on-site content
From an AI music SaaS to an open-source model
AI music content such as "make your debut song" depended on an external SaaS. Switching to the open-source ACE-STEP 1.5 Turbo brought the API cost per request to $0 and removed the dependency on an outside service. A 120-second song takes about 8-14 seconds in the queue.
Workflow nodes blurred
One photo, eight styles
In the AI photo content, users pick one of eight styles such as virtual character, anime, pixel, retro, figure, and cubism, and the photo is converted and printed. Style guide assets are managed in 5 languages.
A model that answers yes or no to a camera feed
Given questions like "Is there a fire?" or "Are the person's eyes closed?", the vision language model Clef-Flash judges the camera feed as yes or no, used for on-site safety monitoring. It runs a Q8_0 quantized model with llama.cpp CUDA on a single Windows PC (RTX 4070 Ti SUPER 16GB, 16GB RAM) without external APIs, at about 110-130ms per judgment.
No on a wall, yes on a fire scene. Real-time speed, faces blurred
A 3D model from one photo
The Idol model turns a single image into a 3D Gaussian Splat, used for event content that needed 3D output. On a single Windows PC (RTX 4070 Ti SUPER 16GB, 16GB RAM), one generation with 262,144 Gaussians and 50 steps takes about 50 seconds at 94% GPU usage.
Generation at 10x speed, rotation in real time
Running Hugging Face models myself
I like pulling new models, running them on a local GPU, and measuring speed and resource usage to see if they can become on-site content. Models I've run so far: