KoreanCare

International online store for Korean cosmetics

An international Shopify store for many markets and languages, with the BS Management system around it: a warehouse with barcode and voice picking, waybills for several couriers, our own checkout shipping service, sales documents, feeds, advertising, SEO and translations into many languages.

The challenge

An international Shopify store for Korean cosmetics that sells in many languages to Bulgaria, Greece and other European countries. Each market has its own language, its own courier and its own rules for addresses, cash on delivery and VAT.

Shopify runs the store and the orders, but it does not know which shelf an item sits on, which courier accepts a given address, what has been ordered from a supplier and what has arrived. All of that was handled in spreadsheets, in courier portals and by hand. Data was entered several times, and mistakes only came to light at the customer.

What we built

We built our own system that works alongside Shopify and runs the warehouse, order fulfilment, documents and advertising. Our database leads: the warehouse says how many units there are, and Shopify gets the number from there.

An order enters the picking queue, and the warehouse picks it by scanning the barcode of the bin and of the item. A voice tells the picker what comes next, and on the last item the label prints by itself. The address is checked against the relevant courier's reference data before picking starts. If the address is flagged red, the shipment stops and the system says what needs fixing.

On top of this we added supplier orders, receiving against the invoice, returns by scanning, sales documents and reconciliation of the money held by couriers. There are also feeds for Google and Meta, promotions, answer pages for search engines and AI agents that write copy and propose ads.

  • Custom sections and pages in the Shopify theme: a filtered catalogue, answer pages, an ingredients encyclopaedia
  • Warehouse with bins, stock and movements; barcode and voice picking in several sessions at once
  • Waybills for Speedy, ACS, Geniki Taxydromiki, ELTA and DHL with direct label printing
  • Our own checkout shipping service with the nearest offices and address checks
  • Supplier orders, receiving against the invoice and allocation to waiting orders
  • Returns by scanning, refunds and credit notes
  • Sales documents, the OSS VAT report and cash-on-delivery reconciliation
  • Feeds for Merchant Center and Meta, promotions with a correct compare-at price
  • Answer pages for search engines and product translations into many languages
  • AI agents for Meta advertising and product descriptions

What changed

The warehouse runs on a scanner and a printer. Every action happens at one moment on screen, and every deviation shows up straight away, before it reaches the customer.

Nothing is entered twice, because the order, the stock, the waybill and the sales document all come from one record. The modules were built in daily work and solve problems we have run into live.

Modules in this project (160)

Own shipping service at checkout

On every checkout Shopify asks our server, and the customer sees the nearest courier offices and lockers as separate options, plus home delivery. Prices, the number of pickup points and the active couriers are set on one screen, and switching it on or off is one button. Paid shipping apps are no longer needed, and the chosen office reaches the waybill without anyone retyping it.

Runs in: KoreanCare, Cosmetics of Korea

International shipping zones

Each country gets a row with a name, price and delivery time, which the same service shows at checkout instead of Shopify rates. A country is live as soon as it has at least one enabled method. Methods with the same name from different locations show up as a single option for the customer.

Runs in: KoreanCare

Single shipping charge across locations

Shopify asks for shipping separately for each location that holds items in the cart. The service charges only the first location in each round of requests and returns zero for the rest. It does not wait and keeps no memory between rounds. The customer sees one delivery at the advertised price, however many warehouses fulfil the order.

Runs in: KoreanCare

Free shipping

Each market has a permanent free-shipping threshold, and campaigns can add free shipping with a start and end date that switches on and off by itself. The discount also applies to courier-calculated rates at checkout. The cart bar that shows how much is left to the threshold always matches the discount.

Runs in: KoreanCare

Price promotions

A promotion is prepared as a draft, with a flat percentage or a price per product, and goes live on schedule or with a button. Prices are written to Shopify in bulk, so even a large promotion is applied in seconds. The discount is always taken from the regular price, never from an already reduced one.

Runs in: KoreanCare

Choosing promo products by margin

The system proposes which products go into a promotion and at what discount, taking for each the deepest one that keeps the margin above a set minimum. Only items in stock are included. The selection is shown as a list and confirmed by a person before it becomes a promotion.

Runs in: KoreanCare

Automatic discount

An extra discount for the rest of the store that Shopify applies in the cart by itself, with no code to type. It starts and stops with the promotion and does not stack on items that are already in it. An expired discount with the same name is cleared automatically so it does not block the new one.

Runs in: KoreanCare

Nightly swap of sold-out promo products

Every night the system removes products that are sold out everywhere from a live promotion and puts the same number of in-stock items in their place. Newcomers follow the same margin and discount rule, and the promotion status, dates and codes stay untouched. In the morning the promotion shows only stock that can actually be sold.

Runs in: KoreanCare

Check after a promotion goes live

Half an hour after each scheduled launch the system checks the status, prices, discount code and storefront by itself. It records line by line what went through and what did not, and the result stays in the system even if nobody reads the logs. A problem with a promotion shows up in the system in the morning, before a customer has to ask.

Runs in: KoreanCare

Promo collection and announcement bar

At launch the promo collection is filled with the promoted products and added to the store menu, and at the end it is removed. The announcement bar at the top changes with it. Nobody edits the menu by hand on campaign day.

Runs in: KoreanCare

Copying a promotion to another store

The pricing rules of one store are carried over to another as a draft promotion with a price per product. The draft can be narrowed, for example to discounts above a given percentage, and goes live with a button. Two active promotions on the same variants are not allowed.

Runs in: KoreanCare

Discount codes

Discount codes are created, extended and stopped from the system, with start, end and market. The end date is moved in the way Shopify actually accepts for that discount type.

Runs in: KoreanCare

Product card

Every product has one card in our own database: names, per-store copy, prices, barcode, weights and dimensions, links to every channel. Search works in Cyrillic and by code. An edit is saved once and reaches every store without you opening each store's admin separately.

Runs in: KoreanCare, Easy App, BS Omni ERP, LedWhite

New product

A new product is created from one screen with names, description, barcode, weight and locations. The fields follow the store standard, so the product comes out ready for the storefront and the warehouse. The product is saved to our database and to the store in one action.

Runs in: KoreanCare, Easy App, LedWhite

Stock sync between stores

Stock comes from the warehouse, and the system writes it to the Shopify and WooCommerce stores. It detects new, removed and mismatched items and shows them on screen instead of quietly fixing them. A sale in one store lowers the available stock in the others.

Runs in: KoreanCare, Easy App, BS Omni ERP

Sales channels

Each store and marketplace is a channel with its own connection, currency and rules for products, stock and orders. A channel is added from settings, without new code. Every order and every stock movement carries its channel, so reports never mix stores.

Runs in: KoreanCare, Easy App, BS Omni ERP

Orders

The order list filters by payment, delivery, courier, country and fulfilment, with counters showing how many sit under each filter. Filters are saved, so the team works from the same view. An order with a red address or a hold is visible straight from the list.

Runs in: KoreanCare, Cosmetics of Korea

Order page

The order sits on one screen: items by location, payment, customer, address and history. From here you give a discount on a line or on the whole order, release a hold and send the order for picking. A red address blocks sending until someone confirms it.

Runs in: KoreanCare

Order merge

Two orders from the same customer are merged into one shipment with one button, choosing whose courier and address are kept. The merge can be undone. The system flags likely duplicates itself, and "not a duplicate" clears the flag.

Runs in: KoreanCare, Easy App

Order cancellation

Cancellation goes through the system and cleans up everything linked to it: waybills, reserved stock and lines in supplier orders. An order cancelled directly in the store shows up in work sessions and is removed with one button. No stock stays locked because of a cancelled order.

Runs in: KoreanCare, Easy App, BS Omni ERP

Item removal requests

When a customer asks to remove an item, the request appears on the order with the totals before and after. One click edits the order. If the total drops below the threshold, shipping is charged again at the price from the order, and on a paid order the difference is refunded. If you decline, the customer gets a note in their market's language.

Runs in: KoreanCare

Bundles from real orders

The system finds in the order history which products customers buy together and proposes bundles from them. For each it calculates the combined price, the cost and how much can be discounted without the order margin falling below the threshold.

Runs in: KoreanCare

Theme design

The owner describes a store block in plain words and the system builds it as a self-contained theme module. It first goes to a preview theme with a link to the real store and goes live with a button. The module can be refined with new instructions or removed.

Runs in: KoreanCare

Custom theme sections

The header, brand and collection pages and sections recreated from an existing site are written straight into the Shopify theme. Before publishing, each change is compared visually with the original. The theme stays in Shopify and the store keeps working with it as before.

Runs in: KoreanCare, LedWhite, GreekTruck, Mell laser clinic

Several stores in one system

Several stores and markets run from one system on the same logic, with the store as a setting. Every order, shipment, stock movement and stock level carries its store, and every report is filtered by it. Currency, VAT and courier are set in the store settings, with no code changes.

Runs in: KoreanCare, Easy App, BS Omni ERP

Fast catalogue with attribute filters

The first page of a collection shows instantly, while the full catalogue loads in the background and is kept for the session. Filters on product attributes (skin type, concern, routine step, texture, vegan, pregnancy-safe) cover every product, not just the first ones on the page. Links follow the visitor's language and market.

Runs in: KoreanCare

Prices in euro and lev

On the Bulgarian domain every euro price is also shown in lev at the fixed rate: in the catalogue, on the product page and in recommendations. The conversion happens in one place in the theme, so the same figure appears everywhere. On other markets the second price is not shown.

Runs in: KoreanCare

Ingredients encyclopedia

A page listing cosmetic ingredients, searchable by name, with a link from each ingredient to the products that contain it. A separate page presents active ingredients as collections. Buyers reach products through what they look for in the formula.

Runs in: KoreanCare

Shop by routine and concern

Home page sections lead to collections by routine step (cleanser, toner, essence, serum, moisturiser, sun care) and by concern, skin type, category or ingredient. Headings translate automatically to the visitor's language. Each tile is a store collection, so a new step is added without code.

Runs in: KoreanCare

Migration from an old system or Excel

We move the data from your current software, database or spreadsheets into the new system: customers, items, stock, documents and open orders. Document numbering carries on without a gap. We reconcile the numbers before go-live, and the old system stays available for reference until the new one has shown it works correctly.

Runs in: KoreanCare, Ivana Agro, KB Agro

Integration with any system that has an API

We connect to any system that has an API (REST, GraphQL, SOAP, webhooks, files over FTP/SFTP or XML/CSV feeds): accounting software, banks, couriers, marketplaces, suppliers, CRMs and warehouse systems. Every request carries the external identifier, so a repeated event never creates a second movement. When the other system refuses something, we log the refusal with its reason.

Runs in: KoreanCare, Easy App, BS Omni ERP, LedWhite

Two-way synchronisation

When two systems hold the same data, such as stock, prices or order status, we decide which one leads for each field and build the sync around that rule. Nobody has to argue about which system is right. A check catches mismatches and shows them on screen instead of letting them pile up unnoticed.

Runs in: KoreanCare, Easy App, LedWhite

Documents from the old software

We move the documents from the previous software into the database, and numbering continues from their last number. An order that already has a document there does not get a second one. Reports run without a gap through the day of the switch.

Runs in: KoreanCare

Products from another store

New products from a WooCommerce store arrive in Shopify as drafts, with their images, barcode and price. The system rewrites the copy to the store's standard and translates it into the market languages. A person reviews each draft and publishes it.

Runs in: KoreanCare

Barcode picking

The picker scans the bin, then the item, and the system marks the line as picked. The list of waiting orders can be filtered by courier and country, and the screen stops a wrong item straight away. The scanning itself fulfils the order, with nothing typed in separately.

Runs in: KoreanCare, Ivana Agro, KB Agro, Cosmetics of Korea

Voice picking

On every scan a recorded voice calls out the bin and the quantity. The audio is pre-recorded, so it plays with no lag even on a modest computer. The picker can keep their eyes on the shelf instead of the screen.

Runs in: KoreanCare

Several pickers at once

Several people pick at the same time, each in their own session, split by courier, country or operator. One order cannot end up in two sessions. The list of waiting orders and its filters stay on screen, so everyone can see what is still left.

Runs in: KoreanCare

Items without a barcode

An item with no barcode is confirmed with a button, and an X of Y counter shows how many are left. The order cannot be closed while any line is unconfirmed. Nothing drops out of the parcel unnoticed.

Runs in: KoreanCare

Receiving with a scanner

Incoming goods are scanned against the purchase order, and each line shows how much was ordered and how much arrived. If an item is not on the order, the scan adds it as a new line. What arrives goes to waiting orders first, and the rest goes to stock.

Runs in: KoreanCare, Ivana Agro, KB Agro

Receiving from the invoice

Goods are booked in from the supplier invoice and then checked physically with the scanner. If someone uploads the same invoice again, the system shows only the missing lines and adds them to the original delivery. A closed delivery is never reopened.

Runs in: KoreanCare

Multi-bin receiving

A scanned bin applies to every item after it until another bin is scanned. Changing the bin before any item is scanned counts as correcting the choice. That way one delivery goes onto the shelves in a single pass.

Runs in: KoreanCare

Put-away

Received goods are put on a shelf and the bin is confirmed by scanning it. Stock per bin updates at the moment of the scan. The next person looking for the item finds it where the system says it is.

Runs in: KoreanCare

Received counts as picked

Goods received for a specific order count as already picked and are not searched for again on the shelves. In picking, that line shows as done. An order that is already fulfilled does not reserve the incoming goods.

Runs in: KoreanCare

Bin locations

Every shelf and position is a record with a barcode, and goods and spare parts are kept per bin. You can see what is in each bin and where every item sits. A bin-versus-stock check shows the differences before they cause trouble at picking.

Runs in: KoreanCare, Ivana Agro, KB Agro

Bin labels

Barcode labels for bin locations are printed from the bin list. Each label carries the bin code the scanner reads during picking and receiving. A new bin is ready for work as soon as its label is printed.

Runs in: KoreanCare, Ivana Agro, KB Agro

On hand and reserved stock

Every item has three figures: on hand, reserved and available to sell. Reservations follow open orders from every channel, and stock is written off on fulfilment. Available stock comes from one formula and reads the same everywhere.

Runs in: KoreanCare, Ivana Agro, KB Agro, Easy App, BS Omni ERP

Stock movements

Every receipt, write-off and adjustment is a line with a time, a direction and a reason. Each line links to the document or order that caused it. When stock does not add up, this is where you find out why.

Runs in: KoreanCare, Ivana Agro, KB Agro, Easy App

Stock correction

A barcode or a per-bin quantity is changed straight from the stock list. A new barcode is also written to the online store. Every correction leaves a trace in the stock ledger.

Runs in: KoreanCare

Stock count

Scan the bin, scan the items one by one, enter what was actually counted, and save. Differences are shown before saving and go into the ledger with a reason. For a shop with a till, the count is also reconciled with the till's file.

Runs in: KoreanCare, Ivana Agro, KB Agro, BS Omni ERP

Barcode import from Excel

Barcodes are uploaded from Excel by SKU. Before saving you see which are new, which match and which do not find an item. Only what you approve is saved.

Runs in: KoreanCare

Warehouse as source of truth

Stock is calculated from the bins, pending documents and what has already been picked. The online store receives the exact quantity rather than a difference, so errors do not pile up. A nightly reconciliation catches anything that drifted during the day.

Runs in: KoreanCare

Supplier purchase orders

What the orders are short of is gathered into a purchase order per supplier, with quantities you can adjust by hand. The order goes out by email or as a file, and anything already ordered is not ordered twice. On receiving, deliveries are checked against the order line by line.

Runs in: KoreanCare, Ivana Agro, KB Agro, Easy App, BS Omni ERP

Checking purchase orders against orders

Before it is sent, the draft purchase order is checked against the customer orders. Cancelled and removed items come off, and items added to an order go on. Orders on hold are left alone.

Runs in: KoreanCare

Restock requests by brand

Out-of-stock and low-stock items are listed grouped by brand. Supplier and price are chosen by hand, the list is exported to Excel and saved as an expected delivery. When the goods arrive they are received against it.

Runs in: KoreanCare

Reorder forecast

From sales velocity and supplier lead time the system tells you when an item will run out. Items are ranked by urgency: out, critical, low. Selected lines become a purchase order in one step.

Runs in: KoreanCare, Ivana Agro, KB Agro

Supplier card

Each supplier has a card with contacts, price list and lead time. It is marked as a daily supplier or an external one with a longer lead time. Purchase orders and forecasts use this data without it being entered again.

Runs in: KoreanCare, Ivana Agro, KB Agro, Easy App, BS Omni ERP

Returns

The warehouse scans the returned parcel, which puts the goods back in stock and cancels the order. The item also comes off the supplier order if it has not been ordered yet. The refund is a separate button, and for cash on delivery a credit note is issued.

Runs in: KoreanCare, Cosmetics of Korea

Direct label printing

A small local app on the warehouse computer prints labels and A6 waybills straight to the thermal printer. There is no print dialog and no printer choice for each parcel. The label comes out the moment the order is confirmed.

Runs in: KoreanCare

Label archive

Every printed label is kept as a PDF in a folder on the warehouse computer. One button downloads them all at once, so every waybill stays at hand after printing.

Runs in: KoreanCare

Speedy

The system creates the waybill straight from the order, to an address, office or locker, with cash on delivery when the order needs it. The label prints at once and the tracking number is saved on the order. Before issuing, the system checks the address against Speedy's own address lists.

Runs in: KoreanCare, LedWhite

DPD abroad via Speedy

Shipments to neighbouring countries go through Speedy's international service and are delivered by DPD. Cash on delivery is collected in the recipient's local currency. The address is checked by the rules of the destination country.

Runs in: KoreanCare

ACS Greece

The system prepares shipments to Greece to ACS requirements: postcode, email and address lines within the allowed length. If a required field is missing, the shipment stops and the screen says why. Pickup points are offered only where the service allows them.

Runs in: KoreanCare

Geniki Taxydromiki

Geniki waybills are created from the order, with cash on delivery and island zones. The label comes back as a PDF and prints straight away. The system checks the address against the Greek address lists the courier uses.

Runs in: KoreanCare

ELTA

ELTA labels come through a broker. Before printing, the system checks the number, because the broker can reissue a waybill under a new number without warning. That way an outdated label never ends up on the box.

Runs in: KoreanCare

DHL and attached labels

You attach a label issued outside the system to the order as a PDF, and the system reads the tracking number from the file itself. A split shipment can have several labels. They print together and all the numbers go into one fulfilment. Couriers without a full connection follow the same path as the rest.

Runs in: KoreanCare

Manual tracking numbers

For postal services and couriers with no connection, the tracking number is typed into the order by hand. From then on the parcel is visible and tracked like the rest. You can also choose your own transport, with a price entered by hand.

Runs in: KoreanCare, Easy App, BS Omni ERP

Reprint the latest label

The "Get latest label" button reprints the most recent waybill, whatever the courier. It helps when the printer jams or a label tears. No new shipment is created.

Runs in: KoreanCare

Address verification

The system checks the address against the lists of the courier that will carry the parcel. A check with one courier does not count for another. An unrecognised address is flagged red and the parcel does not go out until someone confirms it. If the operator is sure of the address, they can release the parcel deliberately.

Runs in: KoreanCare, LedWhite

Greek addresses

The system matches the Greek address to the list couriers use when handing parcels to each other. It searches literally and never offers a neighbouring village in place of a missing one. A place without a postcode does not mean the address is wrong, and the system does not reject it on its own.

Runs in: KoreanCare

Town names in Latin script

The system finds a town written in Latin script even when it is transliterated differently. The customer may have spelled it their own way, and the system still finds the right record. The parcel is not held up by spelling.

Runs in: KoreanCare

Office from the address field

When the customer chose office delivery but wrote the office into the address field, the system recognises it from the text. The operator confirms the suggested office in one click, so the final say is theirs.

Runs in: KoreanCare

Office picker with map

The system lists the courier's nearest offices with street, distance and a map. The operator sees which office is actually close to the customer and picks it in one click. The choice is saved on the order and goes into the waybill.

Runs in: KoreanCare, LedWhite, Easy App

Courier statuses

The system pulls parcel statuses from the courier and copies them into the order in the store. The customer is notified at the two moments that matter: out for delivery and delivered. A missed status is picked up at the next check.

Runs in: KoreanCare

Daily courier report

For each courier you see delivery success, returns and cash-on-delivery amounts. A delivered COD order is marked paid automatically, with no manual tick. The report shows which courier or market is underperforming.

Runs in: KoreanCare

COD reconciliation

The system reads courier COD statements and invoices from email, or you can upload them as files. It matches lines to shipments by waybill number and recognises columns by their content, wherever they sit. You see what has been paid out, what is missing and where the courier's fee differs from the expected one.

Runs in: KoreanCare, Easy App, BS Omni ERP

Waybills for supplier deliveries

The system issues waybills for the daily shipments from the supplier to the warehouse. It attaches the waybill to the purchase order so they go out together. The supplier does not have to book a courier themselves.

Runs in: KoreanCare

COD amount

One place in the system decides whether a parcel is cash on delivery and for what amount. Every courier uses that decision instead of working it out its own way. The amount on the label matches the amount on the order.

Runs in: KoreanCare

Sales documents

The system issues the sales receipt or invoice from the order as it stands at the moment of issue, with separate numbering for each document series. If the order was edited before shipping, the document reflects the edit. Issuing again for the same order never creates a second document.

Runs in: KoreanCare

Documents sent automatically

The document is emailed to the customer the moment it is issued, both for a sale and for a credit note. A repeated event never sends a second email. If sending fails, the reason is logged and a button for manual sending stays on the screen.

Runs in: KoreanCare

Credit note for a returned parcel

When a cash-on-delivery parcel comes back unpaid, scanning it on return issues a credit note against the sales document. The sale and its reversal sit side by side in the reports. Nobody issues the note by hand, so nobody can forget it.

Runs in: KoreanCare

Tax audit export

The system builds the monthly e-shop XML file for the Bulgarian tax authority from the documents issued in the chosen month. Dates are calculated in the company's time zone, so a document from the first day of the month never slips into the previous one. The file downloads with one button.

Runs in: KoreanCare

OSS VAT report

EU One-Stop-Shop VAT is calculated per buyer country, separately from domestic VAT. The base and tax are shown after returns, and a sale counts on its payment date. The final figure goes into the return without extra calculations.

Runs in: KoreanCare

Bank and payments

Bank accounts are connected through open banking and transactions arrive on their own, with history going back. Each counterparty sits on one line, however many ways the bank spells it. Transfers between your own accounts count as neither income nor expense. Courier payouts are matched to their statements by protocol number.

Runs in: KoreanCare

Payment orders with approval

A payment order is written as a draft and does not go out until the person in charge presses "Approve" and confirms in the bank. If a supplier's IBAN is new or has changed, a red warning blocks approval until someone confirms the account. Access to the section requires a password and an approved device.

Runs in: KoreanCare

Cash held by couriers

Shows, per courier, how much cash on delivery has been collected but not yet paid out. The system reads payout statements from email and matches them to the bank transfers. You see parcels without a statement, late payouts and differences in amounts. A delivered cash-on-delivery order is marked as paid.

Runs in: KoreanCare, BS Omni ERP

Supplier invoices

The system reads supplier invoices from email and links their lines to warehouse items. Debt is kept as a balance per supplier, with advances and partial payments, and each transfer goes first to the invoice whose number appears in the payment reference. Expenses without an invoice are marked paid with one button.

Runs in: KoreanCare

Loans and instalments

Loan instalments and credit card repayments are recognised from the bank transfer reference and split into principal, interest, fees and insurance. A drawn loan is not counted as income. A separate section shows how much has been paid on each loan.

Runs in: KoreanCare

Sales history

Sales going back years sit in the system's own database, not only in the store platform. Imported old orders are counted by their real date, not the day they were imported. Analysis by period comes back in seconds.

Runs in: KoreanCare

Promotion revenue

For each promotion you see the revenue and margin it brought in, per product. You decide whether to repeat it based on the numbers.

Runs in: KoreanCare

Sales and money reports

Reports on sales, money, stock movements and stock levels, with Excel export. The system compares what was ordered from a supplier with what arrived, line by line. Every report states what is included in the figure and what is not.

Runs in: KoreanCare, Easy App, BS Omni ERP

Meta catalogues

The Facebook and Instagram catalog is filled from the store, and product sets are managed from the system. Campaigns are tracked on the same screen, and a button saves the current results so you can compare them later. Price and stock in the catalog are the store's own.

Runs in: KoreanCare, LedWhite

Meta promo feeds

Each market has a separate feed containing only the products in the current promotion, for the ads that feature it. The system never publishes an empty feed, because an empty feed wipes the catalogue in Meta. After a restart Meta gets the last finished feed while the new one is being built.

Runs in: KoreanCare

Product cards in the feed

Instead of the product photo, the ad shows a card made by the system with the product's benefit and the price the customer actually pays after the promotion and discount. When the price changes, the card gets a new address so the old one does not linger in Meta's cache. Card texts are edited separately per market.

Runs in: KoreanCare

Pixel check

After a pixel change the system checks whether conversions actually start arriving in the ad account. The check runs on a schedule and raises one alert rather than repeating it on every run. If the pixel goes quiet, you know within hours, before a week of data is lost.

Runs in: KoreanCare

Google Ads dashboard

Every day the system pulls spend, conversions and return per campaign from Google Ads. The dashboard sits next to orders and stock, so you see advertising alongside what actually sells. There is no need to open the ad account for the daily review.

Runs in: KoreanCare

Google Ads audit

The audit checks account structure, budgets and settings, and includes calculators for budgets and ad maths. It only reads and changes nothing in the account. A person makes any changes after reading the audit.

Runs in: KoreanCare

Google Ads search terms

The screen shows the actual searches the ads appeared for, with spend and conversions for each. The system suggests searches that spend without selling as negative keywords. A person decides which ones go in.

Runs in: KoreanCare

Impression share

You see impression share per campaign, how it moves day by day and why impressions were lost: budget or rank. You can tell when a competitor has started bidding harder. That is what you base budget decisions on.

Runs in: KoreanCare

Change log

Every change to the ad account is shown with its date, time and author, including changes Google makes on its own. Changes to bidding, budget and status are flagged as risky, so no change goes unnoticed.

Runs in: KoreanCare

Real return on ad spend

The system compares the conversions the ad platform reports with the orders in the store. The gap shows how much of the reported figure is real revenue. You set the budget on real orders rather than on the number in the ad account.

Runs in: KoreanCare

Merchant Center feed

Our own product feed for Google Merchant Center, built from the prices and stock in the system. The regular price and the sale price are sent separately, so Google shows the correct discount. Each product's performance in Google is shown next to it.

Runs in: KoreanCare

Unit price in the feed

The system reads the volume, weight or count from the product name and description and sends it in the feed. Google then shows a price per litre, kilogram or unit, as EU rules require. Nobody fills in measures by hand product by product.

Runs in: KoreanCare

ChatGPT ads

Campaigns, product feed and pixel for ads in ChatGPT. The server also reports each new order as a purchase, because the theme pixel does not reach the checkout. The system prepares the feed in the format the platform requires.

Runs in: KoreanCare

Email campaigns

An agent proposes a campaign, picks the products and writes the email in two languages following the store's rules for links and images. A person reviews and sends it. After sending, the campaign's revenue is reported alongside it.

Runs in: KoreanCare, Cosmetics of Korea

Weekly email campaigns

The work runs in weekly cycles. Each week has a sale showcase and two emails: one at launch and one reminder. The system makes sure no product leads the emails too often and swaps part of the showcase every week. Subscribers get something new each time instead of the same list with a new date.

Runs in: KoreanCare, Cosmetics of Korea

Newsletter sending

Newsletters go out from your own domain in order and on a schedule, with retries and an unsubscribe link in every email. Before each batch the system checks the price and stock of the featured products again, so no outdated offer goes out. Sending can also target subscribers in a single city.

Runs in: KoreanCare, Shishko, Cosmetics of Korea

Competitor prices

The system checks competitors' prices for the same products on a schedule. When a price changes, it alerts you and shows the gap against your price. A person decides whether to respond.

Runs in: KoreanCare

Pricing strategy

For each product you see the cost price, the margin and how they change at different discounts. Strategies differ by minimum margin and maximum discount, and a scenario is tried before it goes live. The suggested discount never pushes margin below the chosen floor.

Runs in: KoreanCare

Sales priority

The system ranks the assortment by what should get space in promotions and emails. Own stock is weighed by how long it will sit in the warehouse, and made-to-order stock by margin and turnover. A drop after a stock-out is not counted as lost demand.

Runs in: KoreanCare

Bundle suggestions

The system suggests bundles from product pairs that customers already buy together. For each pair it works out how much discount is possible without the order margin falling below the threshold. Average order value goes up with products that real data shows are bought together.

Runs in: KoreanCare

SEO audits

The audit walks through the store's pages and products and checks titles, meta descriptions, structured data and Merchant Center data. Each issue gets a written fix proposal. Nothing reaches the store until a person approves it.

Runs in: KoreanCare

SEO lab

Enter a site address and start an audit: technical, schema, E-E-A-T, speed and AI-search readiness. The agent crawls the site in the background and you follow its log live. At the end you get a report with charts and a downloadable PDF.

Runs in: KoreanCare

Search Console

Google Search Console data is shown inside the system, split by market and domain: queries, impressions, clicks and average position. You see which pages are slipping and which queries get impressions but no clicks. That tells you what to rewrite, so you are not guessing.

Runs in: KoreanCare

Blog

Topics are chosen from what people search for. Each article is written from a template and translated into the store's languages, and internal links point to the page in the same language. You can publish by hand or let the autopilot write at a pace you set. The finished article goes into the Shopify blog.

Runs in: KoreanCare

Buyer guide pages

Each page answers one buyer question, such as "which one should I pick" or "which is better", with an explanation, specific products from the catalog and an FAQ. Products are picked from stock by code rather than by the model, so the page never recommends something you don't sell. The text is written separately for each language.

Runs in: KoreanCare

Finding new topics

On a schedule, the system looks at what people are searching for right now and picks a topic the catalog actually covers. Topics without enough products in stock, or that already have a page, are skipped. The chosen topic becomes a new buyer guide page.

Runs in: KoreanCare

Content performance

Every morning the system records figures for each published page: impressions and position from Search Console, sessions and revenue by landing page from GA4, and, for pages with no impressions, whether they are indexed at all. You see how things change over time, and which content brings sales and which brings nothing.

Runs in: KoreanCare

Collection SEO

Each collection gets an intro above the products, a longer text below them and an FAQ that is published as FAQPage markup. The copy is written from the products actually in the collection, and brand names are never translated. The SEO title and meta description in Shopify are filled in too.

Runs in: KoreanCare, LedWhite, GreekTruck

Collection and brand listing pages

The collections and brands listing pages are built from the live catalog, so a new brand appears on its own. Collections are grouped by their address, each brand links to its collection and empty ones are hidden. The copy is stored for each language, so search engines see real text on the page.

Runs in: KoreanCare

Translations

A product, page or article is translated into all of the store's languages with one button, or in bulk overnight. The translation adapts the text to the market, and chosen fields such as ingredients stay untranslated. The system also finds stale translations, where the original changed after it was translated.

Runs in: KoreanCare, BS Omni ERP

Product naming

The title is assembled from one formula in every language: product type, brand, original Latin name and size. The Latin name stays exactly as the manufacturer writes it, because that is how people search for it. Where channels need a different name, the product carries two names.

Runs in: KoreanCare, BS Omni ERP

Name check

Before saving, the system checks that the new name describes the same product. A neighbouring variant from the range or a different scent does not pass. When in doubt the product is not saved and the operator sees why. That way a wrong name never reaches the store.

Runs in: KoreanCare

AI agent readiness audit

The check crawls the whole catalogue, every product and every collection, and fetches each page the way an agent sees it, without JavaScript. For each page it reports whether it shows the price, stock, who the product is for and where it ships. It follows fixed rules with no AI model involved, and you can run it as often as you like.

Runs in: KoreanCare

Visibility in AI assistants

We ask a web-searching AI assistant real buyer questions in the language of each market. We record who it cites, on which topics the store is missing and who shows up instead. That result is the starting point against which we measure every fix.

Runs in: KoreanCare

Site speed

Once a day the system runs the most visited pages through PageSpeed, for mobile and desktop. Results are kept per day, so you can see when, and after which change, the site slowed down. The test starts on its own; nobody has to run it.

Runs in: KoreanCare

Traffic analytics

Google Analytics 4 data is shown inside the system: sessions, sources, landing pages and revenue. Revenue is credited to the page where the visitor entered the site, rather than to checkout. That shows which page actually leads to a purchase.

Runs in: KoreanCare, Cosmetics of Korea

Meta ads agent

The agent reviews Facebook and Instagram campaign results per market and proposes what to launch, pause or rewrite, with the copy ready. Every ad links to the site for its market. A post with no link to the site cannot become an ad. A person launches the ad with a button.

Runs in: KoreanCare

Ad video and voiceover

The agent writes the clip script and the video-generation prompt, marking word stress so the Bulgarian voiceover sounds right. The clip is made in an external tool and then uploaded back into the system. From there, one button turns it into a post or an ad.

Runs in: KoreanCare

AI ad images

The system makes ad images from the brand profile and a brief, in the format each platform needs. Each image passes an automatic quality check before you see it. If image generation is unavailable, you still get the finished brief and the prompts.

Runs in: KoreanCare

Lead agent

The lead agent assigns tasks to the other agents, reviews their work and sends weak results back for another go. It tracks AI spend against the budget and stops when the budget runs out. In the operations chat it answers questions and takes instructions.

Runs in: KoreanCare

Agent permissions and approvals

There is a check between the model's decision and the action itself. The agent can read freely. Actions that send, spend, delete or change a setting stop and wait for explicit confirmation, each one separately. If no confirmation arrives in time, the agent does nothing.

Runs in: KoreanCare

SEO agents with approval

After the audit, the agents write a proposal for each task, check each other's work and hand it to the owner. Once the owner approves, translations into every language start on their own. One sentence in the chat pauses or resumes the work. Nothing goes live without approval.

Runs in: KoreanCare

AI agent briefings

When you hand a task to an external AI agent, you put the briefing together here. The system adds the context itself: the company rules and an up-to-date map of the API with its available endpoints. The agent starts with an accurate picture instead of guessing.

Runs in: KoreanCare

AI product copy

The system writes each description to a fixed template with the same sections for every product, then adapts it for each store and language. The text is built from the product's own data. A person reviews it and saves it.

Runs in: KoreanCare, BS Omni ERP, Easy App, LedWhite, UltraFeeds

AI invoice reading

You upload a supplier invoice and the system reads its lines and matches them to catalogue items by SKU, by links it has already learned and by name. You confirm uncertain matches by hand, and the system remembers them for next time. The confirmed invoice books the goods into stock.

Runs in: KoreanCare

Shipping label reading

The operator attaches a shipping label PDF and the courier and tracking number fill in on their own. The model reads the page as a person would, including the number under the barcode. A number typed by hand always wins over the one that was read.

Runs in: KoreanCare

AI mail triage

Every incoming email gets a priority, category, language and short summary, so urgent mail is seen first. A foreign-language email is translated with one button.

Runs in: KoreanCare, Easy App, UltraFeeds

Daily AI brief

Every day the system pulls together data from sales, ads, traffic and search and writes a short review. It says what is rising, what is falling, where money goes without results and what to do first. It takes minutes to read in the morning.

Runs in: KoreanCare

Ads chat

Ask in plain language about Google Ads campaigns, such as what spends without sales or which search terms to exclude, and the chat answers from the real data. A short daily digest of changes comes too. A person makes the actual changes to the campaigns.

Runs in: KoreanCare

AI sales analysis

The code calculates the figures. The model gets the finished table and writes the conclusions and recommendations. It never makes up numbers, and the conclusions are in plain language.

Runs in: KoreanCare, MyCRM

Scheduled automations

Recurring work runs on a schedule: store syncs, reconciliations, supplier orders, promotions, reports and checks. Nobody has to remember to start them, and their results show up in the relevant module.

Runs in: KoreanCare

Native iOS app

A native iPhone app for running the store from a phone: orders, products, warehouse stock and the daily dashboard. It uses the same API as the web system, so the data is the same and nothing has to be synced separately.

Runs in: KoreanCare

Warehouse terminal screen

Scanning runs full screen with no menu and nothing extra, suited to a terminal or a phone on the picking cart. The warehouse worker sees only the current step and large buttons.

Runs in: KoreanCare

Warehouse mode

You switch a specific computer or phone in the warehouse to show only the warehouse modules. The setting applies to the device whoever is logged in, so the warehouse machine does not open reports or finance by mistake.

Runs in: KoreanCare

Mobile-ready system

Every screen of the system opens on a phone, with no separate app. Wide tables turn into cards and the main actions stay within thumb reach.

Runs in: KoreanCare

Daily dashboard

This is the first screen in the morning: today's orders, overdue tasks and the things waiting for a decision. The manager sees where to start without going through the menu. The dashboard is shown only to people allowed to see it.

Runs in: KoreanCare, Ivana Agro, KB Agro, Easy App, BS Omni ERP

Business analytics

Turnover, margin, returns, stock turnover and markets, calculated from the orders in the system with no separate spreadsheet. You pick the period and market on screen. Reports and stock work from the same records, so the numbers do not drift apart.

Runs in: KoreanCare, Easy App, BS Omni ERP

Decision centre

Suggestions from the agents and findings from the reports land in one list, ranked high, medium or low priority. Each item leads to the screen where you act on it. The decision and the action stay with a person.

Runs in: KoreanCare

Customer file

Everything about a customer is in one place: contacts, orders, tasks and conversations. Wholesale customers also have their own price list, payment terms and an account manager. Search works by name, company ID, city and phone, and the system stops a second record with the same company ID at entry. A sales rep sees their own customers, and the manager sees all of them.

Runs in: KoreanCare, Ivana Agro, KB Agro, Easy App, BS Omni ERP, MyCRM

Approvals

Actions that need a human decision wait in one list: payments, till discounts above the limit, actions proposed by an agent. The person in charge presses "Approve" or "Reject" and the action goes ahead or stops. Every decision is recorded with who made it and when.

Runs in: KoreanCare, BS Omni ERP

Mail

Mail lives inside the system, full screen, with several mailboxes, replies and attachments. Messages are read directly from the mail server and nothing is copied. The team handles mail without switching to another program.

Runs in: KoreanCare, Easy App, BS Omni ERP

Calendar

Team meetings, tasks and events sit in one shared calendar. Everyone sees what is coming up today and this week, and meetings do not stay hidden in someone's personal phone.

Runs in: KoreanCare, Ivana Agro, KB Agro

Customer risk check

From the order, the system checks the customer's phone, email and name against a public register of unreliable buyers. The result is shown next to the order before the parcel is sent. Whether to ship stays a human decision.

Runs in: KoreanCare

Customer quiz

A quiz on the site asks customers what they need. The answers are saved to their profile and are visible in the system. Customers are then grouped by the needs they stated themselves.

Runs in: KoreanCare

Public tenders and programmes

The system pulls procedures from the public portal together with their documents, with no manual downloads. It assesses whether we are a fit and flags suspicious ones. For a chosen procedure it prepares a draft offer to its requirements.

Runs in: KoreanCare

Car bulb finder

Find the right bulb by make, model and position through the manufacturer's public catalog. Data fetched once is kept in our cache, so the next search does not wait for the external service. Fetching runs slowly and steadily to stay within the catalog's rate limit.

Runs in: KoreanCare

System map

An interactive diagram of the modules and the links between them. It shows which module connects to which. It helps when a new employee starts and before any change to the system.

Runs in: KoreanCare

Training

Team courses inside the system, with a test at the end. The correct answers never reach the browser, so the score appears only after submitting. Every attempt is stored with its score and pass or fail.

Runs in: KoreanCare, Ivana Agro, KB Agro

Themes and quick search

Each user picks a colour theme that suits them for the whole day. Ctrl+K opens a search across every module, and a few keystrokes take you to the screen you need without digging through the menu.

Runs in: KoreanCare

Got a process that keeps getting stuck?

Describe it briefly. We will tell you how we would solve it.

Send an inquiry
Call us