Aily Kang
Front-end Developer · UI Designer · Product Engineer
I turn ambiguous requests into running services.
I started in design in 2013 and expanded into web development. I shape the structure, design the screens, build the markup and the front-end, ship it to a server, and keep it running after handoff — as one continuous responsibility rather than a chain of handoffs. My archive from 2016 onward covers 205 separate clients — most of them received several deliverables — spanning public-sector portals, commerce settlement systems, automation tooling, and brand and print work.
What I bring
No handoff between design and engineering
I draw the concepts and then write the markup for those same concepts. Nothing is lost in translation at build time, and there is no coordination overhead between two roles.
I've worked where mistakes cost money
I built and maintained tax-invoice API integration, automated bank deposit reconciliation, and member point and settlement logic in live production systems. I know from practice that display bugs and settlement bugs have very different tolerances.
I use AI with a rulebook
Before handing a codebase to an AI agent, I define the working rules — naming, CSS variables, breakpoints, prohibited patterns and documentation procedures. That's how I take the speed without losing the quality bar.
I document the case for not building
My own products carry written promotion criteria per stage; if a stage fails its criteria, the next one doesn't get built. Deciding not to add a feature is the harder judgement.
Experience
11 years and 5 months on the national employment record. Company names withheld.
Commerce operations, development and design
Distribution and commerce (Incheon)
- Sole author of product detail pages — planning, art direction, imagery, HTML build and per-channel slicing
- Built a supplier data collector that replaced repetitive manual listing work (Python, Playwright, shipped as a desktop app)
- Automated per-channel product listing and the cleanup of pricing and option data
Registered sole trader, freelance
Web, brand and print
- Registered a business and won work directly: corporate sites, commerce, brand identity, catalogues and print
- Public-sector portals, manufacturer catalogues and websites, healthcare and franchise brands
- Frequently owned a single client end to end — logo, print, web and server
Content and imagery
Distributor
- Product photography, retouching and content management
Online commerce operations
Commerce operator
- Built and ran online stores, product listings and detail pages
- Site improvements and day-to-day online sales operations
Web design and development
Web agency
- Website design and markup, PHP web application development and database integration
- Built and maintained online stores, from planning through to operation
Web design, markup and PHP
Web agency
- HTML, CSS and JavaScript markup; PHP CMS customisation and database integration
- International trade-show print and web, a public agency promotional e-book, and UI design for an energy company's ESS system
Web design and markup
Web agency
- Corporate site and store design and markup, UI/UX improvement
- Brochures, leaflets and banners alongside the web work
Graphic design
Design studio
- Business cards, envelopes, brochures, leaflets, banners and signage
- Press checks and production ordering
Photography, imaging and installation
Early career
- Product photography, retouching, online listing and customer support
- Screen printing and vinyl installation — hands-on production experience
Own products
Opportunity OS
A platform that collects, scores and recommends Korean public funding notices. Flutter single codebase (web, Android, iOS), a Python collector, and a Firebase Functions proxy to the Claude API.
- Kept the API key out of the client bundle entirely, isolated in server secrets
- Abstracted the backend behind an `AiBackend` interface so a future NestJS migration replaces one implementation
- Structured extraction of notice detail pages, cached to remove re-run cost
- Wrote explicit promotion criteria into SPEC.md — v3 does not begin until willingness to pay is verified
EXITO Supply Collector
A supplier product-data collection engine with a plugin crawler architecture, shipped as a distributable desktop application.
- `BaseCrawler` plus `CrawlerRegistry` turns adding a supplier into a registration task rather than a development task
- Unsupported sites fall back through JSON-LD → OpenGraph → meta tags → DOM via a GenericCrawler
- CustomTkinter MVC interface and PyInstaller packaging so a non-technical operator can run it
- Rewrites image references in collected HTML to local paths, so output survives source changes and hotlink blocking
Content Factory
An event-bus system automating content discovery, writing and publishing.
- Implemented three of eight engines and left the rest as interfaces only, deliberately constraining scope
- Forbade direct engine-to-engine calls, routing everything through an event bus to preserve replaceability
- Documented the MVP goal as 'produce and schedule real content within three minutes' rather than 'complete the architecture'
Education and certification
- 2013.03 – 2022.02
- Seoul Digital University, BA — Applied Music, with Visual Design as a second major (3.45/4.5)
- 2012.10
- Computer Graphics Operation Technician (national certification)
- 2011.11 – 2012.03
- AutoCAD professional and ATC certification course; 3D MAX modelling and rendering
Skills
- Front-end
- Next.js, React, TypeScript, HTML/CSS, responsive markup, web accessibility
- Backend & systems
- PHP, MySQL, Node.js, third-party API integration (tax, banking), server setup and migration
- App & automation
- Flutter, Python, Playwright, web scraping, PyInstaller distribution
- Design
- Figma, Photoshop, Illustrator, After Effects, InDesign — UI, print and motion
- Practice
- Information architecture, screen specification, documentation-driven delivery, AI agent workflow design
One more thing
I find it hard to pick a single job title. What I can define precisely is the scope I'm accountable for: everything from an unstructured request through to a service that actually runs and that somebody else can operate.
Print this page (Ctrl/⌘ + P) to save it as a PDF.