# Smart Store Suite (ListeningMind) > Smart Store Suite joins three checks for Naver Smart Store sellers into one flow. Step 1, store check, collects products from a store URL (Smart Store, Brand Store, Shopping Window, Naver+) or from product, sales and margin CSVs and combines search demand with margin or reviews and sales to show which products to grow and which to drop. Step 2 rewrites a product title in the words searchers actually use, and step 3 scores how well a detail page covers the buying criteria searchers look for and suggests fixes. Smart Store sellers, brand managers and commerce MDs use it. Data comes from the ListeningMind Data API (keyword_info, intent_finder, cluster_finder, path_finder), maistro-lmpipe and LLMs (MiniMax, Claude); the market is Korea (Naver Shopping). Korean: 스마트스토어에서 어떤 상품을 키우고, 상품명과 상세페이지를 검색자의 말로 어떻게 고칠까 · Japanese: スマートストアのどの商品を伸ばし、商品名と詳細ページを検索者の言葉でどう直すか ## Use it as an agent - [MCP server](https://daas-store.listeningmind.ai/mcp): Streamable HTTP, JSON-RPC. 32 app tools plus app_guide, result store tools (results_sync, results_list, results_get, results_compare, results_export) and settings sweeps (plan_batch, batch_status) - WebMCP: every page of this app registers the same tools in `document.modelContext` for a browser agent; calls that spend credits ask the person on the page - [OpenAPI](https://daas-store.listeningmind.ai/.well-known/openapi.json): the same tools as a REST contract (operationId = tool name) - [agents.md](https://daas-store.listeningmind.ai/agents.md): step-by-step guide · [API catalog](https://daas-store.listeningmind.ai/.well-known/api-catalog) · [MCP server card](https://daas-store.listeningmind.ai/.well-known/mcp/server-card.json) - Every page answers `Accept: text/markdown` with a markdown version - Tools of kind run or delete spend credits or delete data: over MCP the call returns confirm_url for a person, then call confirmation_status - Accounts: reading results and history is open. Starting a run or changing data needs a ListeningMind member: the person approving confirm_url signs in or [signs up](https://daas-store.listeningmind.ai/_lm/auth/signup); other changes over MCP need the member's agent key (LM-User-Key header, created at https://daas-store.listeningmind.ai/_lm/account) ## What you give and what you get - Inputs: Store check: a Naver store URL (50/100/200/500 products, optional tracking every 7/14/30 days) or product, sales and margin CSVs (uploaded in the web page), dormant product rules, a corrected representative keyword per product. Title rewrite: current product name (up to 200 characters, required), category path, product note, tags, seed category word. Detail page intent: a Smart Store product URL or typed data (name, price, category, options, detail text, reviews and Q&A, detail images, bookmarklet capture) and a seed keyword. - Outputs: Store check: a class per product (margin mode: grow, improve margin, niche intent, reduce or exit; sales-power mode: proven, opportunity, niche, slow; demand only: high or low demand), demand, margin, sales power, momentum, portfolio and risk scores, recommended actions with reasons, priority, counts per class and action, product detail (volume, trend, intents and SERP features of the representative keyword), CSV. Title rewrite: title score (TIS) and grade, word breakdown, identity candidates with fit, front 3 word sets, category fit, noise words, A/B titles with predicted scores, tag and option plan, policy check. Detail page intent: coverage score (ICS) and page score (CPS), grade, 6 axis scores, verdict and evidence per buying criterion, missed opportunities, recommendations (structure, title, FAQ, review prompts, comparison frame) and changes after a re-check. - Cost: Store check uses keyword_info (about 10 credits per keyword) and one intent_finder call (limit 100) per new representative keyword. For 100 products with all-new keywords that is about 1,000 keyword_info credits plus 100 intent_finder calls; the app does not record the intent_finder price, so the exact total is unknown. Keywords fetched in the last 7 days are free, and with a MiniMax key one LLM call is added per 30 products. Title rewrite and detail page intent, for a category not seen before, call path_finder (limit 300, about 8,450 credits at the Funnel Leak Finder rate), cluster_finder, intent_finder, keyword_info for 150-190 keywords and a maistro-lmpipe analysis, which can exceed 10,000 credits; with the 30-day category cache they need only a few hundred keyword_info credits or less. LLM calls: 1-4 per title analysis; a detail page check makes several to more than 20 depending on images and intent items. Collecting a store URL spends no credits. When the server runs in mock mode, store check search data is synthetic and spends no credits. ## How a result is made (in order) 1. `collect_store_products`: Collect the store's products from its URL (replaces the current product set). Own-store CSVs are uploaded in the web page /portfolio/upload. 2. `preview_dormant_products`: For a large catalog, preview dormant products and exclude them with exclude_dormant_products to save credits. 3. `start_store_check`: Start the store check. 4. `get_store_check`: Poll until run.status is completed, then read classes and priorities. 5. `get_store_check_product`: Read the detail of the chosen product; fix a wrong keyword with rescore_store_check_product. 6. `download_store_check_csv`: Download the result as CSV. 7. `start_title_analysis`: Step 2: start a title rewrite with the chosen product's name (plus category path and tags). 8. `get_title_analysis`: Poll until status is done and read the A/B titles and scores. 9. `select_title_identity`: Optionally recompose the title around another identity candidate. 10. `start_detail_page_analysis`: Step 3: start the detail page intent check with the product URL or typed page data. 11. `get_detail_page_analysis`: Poll until status is done and read the missed criteria and recommendations. 12. `rescore_detail_page`: After editing the detail page, re-check it to see what changed. 13. `add_watch`: Optionally register the store for periodic tracking so sales momentum appears from the next collection (each later run spends credits). 14. `list_store_checks`: Find earlier store checks; title and detail page history are in list_title_analyses and list_detail_page_analyses. Run stages reported by the app: pending → running → completed → failed → queued → done → error ## Method (how the analysis works) 1. Collect the store's products from its URL (or CSVs uploaded in the web page) and exclude dormant products if needed. 2. Pick a representative search keyword per product and read keyword_info and intent_finder for it. 3. Score search demand, margin or sales power, momentum and risk, classify each product and recommend actions in priority order. 4. For a chosen product, split the title into words, rank the category's identity candidates and compose A/B titles with predicted scores (TIS). 5. For the detail page, build the category's buying criteria on 6 axes, judge each covered, partial or missing with evidence, and score ICS and CPS with recommendations. ## Reading the result - Store check items are ordered by priority; classification, recommendedAction and reason say which products to grow and which to reduce. - dataBasis per product shows which data the score used (margin, sales power or demand only). - tis and grade score the current title; title_variants are the A/B titles with predicted_tis, and noise_keywords are words to drop. - category_fit and the policy check flag titles that do not fit the category or break policy. - For the detail page, ics is the coverage of buying criteria and cps the page score; cards.missed and recommendations show what to add. ## Requests this app answers well - Pick which products in our Smart Store to grow and which to drop - Rewrite this product title into A/B versions using the words searchers actually use - Score how well this Smart Store detail page covers searchers' buying criteria and suggest fixes - I edited the detail page; check it again and tell me how much the score changed ## Continue in another app - [Demand Forecast](https://daas-forecast.listeningmind.ai/llms.txt) (MCP `https://daas-forecast.listeningmind.ai/mcp`): When products are classed to grow and you need their season timing. Carry: Their representative keywords as seeds (up to 5), with market kr. - [ACO](https://daas-aco.listeningmind.ai/llms.txt) (MCP `https://daas-aco.listeningmind.ai/mcp`): When you also want to check whether the product page can be cited by AI answers and used by shopping agents. Carry: The Smart Store product URL with market kr; Smart Store often blocks server fetches, so pass pasted HTML as well. ## Using the screens (browser agents) - `describe_screen`: menus, tabs, fields and buttons of the current screen, and what the page is for - `go_to`: open a menu or page of this app by its label or path - `fill_field`: type a value into a field by its label (never presses run; runs go through the run tools, which ask the person) - `read_this_page`: the text and ids of what the person is looking at ## Tools - `collect_store_products` (run, POST /portfolio/api/uploads/store-url): Collects the products of a Naver store (smartstore.naver.com/{id}, brand.naver.com/{id}, shopping.naver.com/window/{vertical}/store/{channelId} or a Naver+ store shopping.naver.com/{slug}) by popularity order, with price, category, review count, rating, sales count (Shopping Window) and rank, and stores a review snapshot for momentum. By default it first REMOVES the current product set (past results stay). Returns {ok, store{name, storeId, host}, imported, totalAvailable, via (http or browser), note, watching}. Uses a headless browser when Naver blocks plain requests; can take tens of seconds to a few minutes. Then call start_store_check. - `preview_dormant_products` (read, POST /portfolio/api/products/dormant): Counts which current products would be excluded as dormant (no reviews or sales and in the bottom popularity share, or old) before an analysis, without changing anything. Returns {preview{totalEvaluated, totalActiveWithSales, totalNoSignalField, matchedRank, matchedAge, matchedUnion, ageApplicable, examples[]}, storeSize}. - `exclude_dormant_products` (action, POST /portfolio/api/products/dormant): Marks the products that match the dormant rules as excluded from analysis, so start_store_check skips them and spends fewer credits. Returns {ok, excluded}. Undo with restore_dormant_products. - `restore_dormant_products` (action, POST /portfolio/api/products/dormant): Clears the dormant exclusion on every current product. Returns {ok, restored}. - `clear_store_products` (delete, DELETE /portfolio/api/uploads/products): Deletes the current product set (with its sales and margin data) so a new store can be loaded. Past store check results and review snapshots are kept. Returns {ok, deleted, note}. - `download_sample_csv` (read, GET /portfolio/api/samples/{kind}): Downloads a sample CSV that shows the columns of the product, sales or margin upload used on /portfolio/upload. Uploading CSV files is done in the web page (multipart upload), not through this tool set. - `start_store_check` (run, POST /portfolio/api/analysis/portfolio/start): Starts a store check on the current product set (from collect_store_products or CSV uploads), skipping dormant-excluded products. In the background it picks a representative search keyword per product (rules, plus an LLM when the server has a MiniMax key), reads keyword_info and intent_finder for each new keyword, scores search demand, margin (with margin CSV) or sales power (reviews, sales count), momentum (review growth since the last collection) and risk, classifies every product and recommends actions. Returns {ok, runId} (or {ok, runId, resumed: true} when a run is already in progress); 400 when there are no products or all are excluded. Poll get_store_check. - `get_store_check` (read, GET /portfolio/api/analysis/{run_id}/portfolio): Returns one store check: run {id, label (store name), status (pending, running, completed, failed), totalCount, doneCount, excludedCount, errorMessage, startedAt, completedAt}, summary (dominantMode margin/proxy/demand, counts per classification and per recommended action, withMargin, withReview, withMomentum, pending) and items[] per product ordered by priority (scoreId, productName, category, salePrice, revenue, reviewCount, representativeKeyword, demandQualityScore, marginScore, popularityScore, momentumScore, portfolioScore, riskScore, classification, analysisMode, recommendedAction[], reason, dataBasis[], priority). Repeat until run.status is completed or failed; progress is doneCount/totalCount. - `get_store_check_product` (read, GET /portfolio/api/analysis/{run_id}/portfolio/{score_id}): Returns one product of a store check: product (name, category, brand, productUrl, salePrice, cost fields, reviewCount, reviewScore, collectionRank, dataSource), sales totals, score (keywords, all scores and statuses with breakdowns, classification, recommendedAction, reason, priority, dataBasis) and signal for the representative keyword (volume, Naver volume, trend, competition, CPC, intents, AI Overview, 12 monthly volumes, SERP features). preserved is true when the product was removed since and only the snapshot remains. - `rescore_store_check_product` (run, PATCH /portfolio/api/analysis/{run_id}/portfolio/{score_id}): Replaces the representative keyword of one product in a store check (use when the automatic keyword is wrong or had no search data), fetches its search data and rescores the product, then recomputes priorities in the run. Overwrites the stored product result. Returns {ok}; read get_store_check_product after. Fails with 409 for products removed since the run. - `download_store_check_csv` (read, GET /portfolio/api/analysis/{run_id}/portfolio/export): Downloads the store check as CSV (UTF-8 with BOM): priority, product_id, product_name, representative_keyword, analysis_mode, scores and statuses, review and momentum figures, classification and label, recommended_actions, data_basis, reason, revenue. - `list_store_checks` (read, GET /portfolio/api/analysis/runs): Lists up to 100 store check runs, newest first: {runs[{id, label, status, totalCount, analyzed, startedAt, completedAt, dominantMode, topClass, withMomentum, classCount}]}. - `list_watches` (read, GET /portfolio/api/watch): Lists stores registered for periodic re-collection: {watches[{id, url, label, intervalDays, productLimit, active, nextRunAt, lastRunAt, lastRunId, lastStatus, lastError, runCount}]}. lastRunId opens the latest store check. - `add_watch` (run, POST /portfolio/api/watch): Registers (or updates and re-activates) a store for periodic tracking. A server timer runs daily at 09:05 and, for every due store, replaces the product set with a fresh collection and runs a full store check, so momentum (review growth) appears from the second run. A new watch is due immediately. Returns {ok, watch}. - `set_watch_active` (action, PATCH /portfolio/api/watch/{watch_id}): Pauses (active false) or resumes (active true) a store watch. Resuming lets the daily timer spend credits again. Returns {ok, watch}. - `delete_watch` (delete, DELETE /portfolio/api/watch/{watch_id}): Removes a store watch. Past store checks stay. Returns {ok}. - `lookup_keyword_info` (run, POST /portfolio/api/listeningmind/keyword-info): Calls ListeningMind keyword_info (Korea) through the store check module for up to 50 keywords: volume, Naver volume, competition, CPC (KRW), intents, 12 monthly volumes, SERP features and AI Overview presence. Returns {ok, mode (real or mock), data[]}. mode mock means synthetic numbers. - `lookup_intent_keywords` (run, POST /portfolio/api/listeningmind/intent-finder): Calls ListeningMind intent_finder keyword_list (Korea, volume 100 or more, sorted by volume) through the store check module: search queries that contain the keyword. Returns {ok, mode (real or mock), data[] of keyword strings}. - `start_title_analysis` (run, POST /api/v1/titles/analyses): Starts a background title analysis for one Smart Store product name: splits it into brand, category, attribute, spec and noise words with keyword_info (an LLM only for unclear words), builds or reuses the category's identity candidates (search modifiers that really have volume, from intent_finder, cluster_finder, path_finder, keyword_info and maistro-lmpipe), ranks them, scores the current title (TIS 0-100) and composes A/B titles, front 3 word sets, category fit, noise words and tag / option plans. Returns {analysis_id, status: queued}. Poll get_title_analysis. 429 when 12 jobs are already queued or running. - `get_title_analysis` (read, GET /api/v1/titles/analyses/{analysis_id}): Returns one title analysis: analysis_id, raw_title, seed_keyword, gl, status (queued, running, done, error), error_code (SEED_AMBIGUOUS, NO_VALID_IDENTITY, INTERNAL), error_detail, tis, grade (S/A/B/C/D), selected_identity_id, created_at, finished_at, tokens[] and, when done, report {title_score, identity_diagnosis{candidates[], selected_identity_id, seed_refined, seed_warning}, front3_recommendations, category_diagnosis, noise_keywords, title_variants[] (A/B with predicted_tis and policy findings), tag_option_plan, policy_report, data_meta}. Repeat until status is done or error. - `select_title_identity` (run, POST /api/v1/titles/analyses/{analysis_id}/select-identity): Re-runs the title analysis of the same product name and seed with a chosen identity candidate (report.identity_diagnosis.candidates[].identity_id), so the A title is built around it. Creates a NEW analysis and returns {analysis_id, status: queued, parent_analysis_id, identity_id}. Poll get_title_analysis with the new id. - `list_title_analyses` (read, GET /api/v1/titles/analyses): Lists the 30 newest title analyses: {analyses[{analysis_id, raw_title, seed_keyword, status, error_code, tis, grade, created_at, finished_at}]}. - `delete_title_analysis` (delete, DELETE /api/v1/titles/analyses/{analysis_id}): Deletes one stored title analysis. Cannot be undone. Returns {ok, deleted}. - `start_detail_page_analysis` (run, POST /api/v1/analyses): Starts a background check of how well one product page covers the buying criteria searchers use. It reads the page (Smart Store URL, then a reader fallback; usually blocked, so pass tier3 data), OCRs detail images, picks a seed keyword (LLM candidates checked with keyword_info, raised to a broader category under 1,000 monthly searches), builds or reuses the category's intent items on 6 axes (price, performance, use, comparison, risk, trust), judges each item covered / partial / missing with evidence (two LLM passes plus a tie-break), scores ICS and CPS and writes recommendations. Returns {analysis_id, status: queued}. Poll get_detail_page_analysis. 429 when 12 jobs are queued or running. - `set_detail_page_seed` (action, POST /api/v1/analyses/{analysis_id}/seed): Replaces the seed keyword the running analysis just proposed. Only works during the 5-second window after the seed is proposed (the web page shows it as a live prompt); later calls have no effect on the result. For agents, seed_override in start_detail_page_analysis is the reliable way. Returns {ok, seed}; 404 when the analysis is no longer running. - `get_detail_page_analysis` (read, GET /api/v1/analyses/{analysis_id}): Returns one detail page analysis: analysis_id, product_url, product_title, seed_keyword, status (queued, running, done, error), error_code (EXTRACT_BLOCKED, LOW_DATA, SEED_AMBIGUOUS, INTERNAL), error_detail, ics, cps, grade (S/A/B/C/D), parent_analysis_id, created_at, finished_at and, when done, report {scores{ics, cps, grade, axis_scores, cps_parts}, axes[], items[] (intent item, keywords, volume, verdict, evidence), cards{covered, missed}, recommendations{restructure, title_suggestions, faq, review_prompts, comparison_frame}, seed, data_quality, report_meta, diff (after a re-check)}. Repeat until status is done or error. - `rescore_detail_page` (run, POST /api/v1/analyses/{analysis_id}/rescore): Re-checks a product after its detail page was edited: reuses the earlier page data and seed, replaces it with any new tier3 data (for example the new detail text), and adds diff (score change and verdict changes) to the report. Creates a NEW analysis and returns {analysis_id, status: queued, parent_analysis_id}. Poll get_detail_page_analysis. - `get_category_universe` (read, GET /api/v1/categories/{seed}/universe): Returns the cached intent items of a category seed (built by an earlier detail page check, kept 30 days): items on the 6 axes with keywords and volumes, data quality and cache info. 404 when no cached library exists for that seed. - `list_detail_page_analyses` (read, GET /api/v1/analyses): Lists the 30 newest detail page analyses: {analyses[{analysis_id, product_url, product_title, seed_keyword, status, error_code, ics, cps, grade, created_at, finished_at, parent_analysis_id}]}. - `delete_detail_page_analysis` (delete, DELETE /api/v1/analyses/{analysis_id}): Deletes one stored detail page analysis. Cannot be undone. Returns {ok, deleted}. - `get_i18n_strings` (read, POST /api/v1/i18n): Returns UI strings for a language (called on language switch; no cost, no ledger entry). - `list_recent_discoveries` (read, GET /api/v1/discover/recent): Seeds recently explored in keyword discovery, with counts. Signed-in members only. ## Pages - [Smart Store Suite home](https://daas-store.listeningmind.ai/): Guide to the three steps (store check, title rewrite, detail page intent) and a summary of the latest store check. - [Store check](https://daas-store.listeningmind.ai/portfolio): Step 1 start screen with recent checks. - [Data upload](https://daas-store.listeningmind.ai/portfolio/upload): Store URL collection, product / sales / margin CSV upload with column mapping, dormant filter, start of analysis, data reset. - [Past store checks](https://daas-store.listeningmind.ai/portfolio/history): List of earlier store checks. - [Store watches](https://daas-store.listeningmind.ai/portfolio/watch): Tracked stores with pause, resume, removal and links to the latest check. - [Title rewrite](https://daas-store.listeningmind.ai/title): Step 2: title input, bookmarklet capture paste, progress and result. ?title= prefills the name. - [Detail page intent](https://daas-store.listeningmind.ai/fit): Step 3: product URL or typed data, seed confirmation, progress, result and history. ?url= or ?title=&cat= prefills the form. ## Limits - Market: Korea (Naver) only. Detail page URLs must be on smartstore.naver.com, brand.naver.com or shopping.naver.com; store collection accepts Smart Store, Brand Store, Shopping Window and Naver+ store URLs. The store check module holds a single product set, so collect_store_products (without append) and clear_store_products remove the current products, and start_store_check returns the run already in progress (a run stuck for more than 10 minutes is marked failed and a new one starts). Smart Store often blocks server fetches, so pass tier3 data (typed or captured) with a detail page check. Title and detail page analyses each run 3 at a time and return 429 above 12 queued or running. Category data is cached 30 days, store check keyword metrics 7 days. The app has no accounts: history and deletes are shared by everyone. History lists return the 30 newest title or detail page analyses and up to 100 store checks. ## The ListeningMind apps (same account, same tools, call any of them) Each app has `/mcp`, `/llms.txt`, `/agents.md` and WebMCP on its pages. `family_apps` and `recommend_app` return this list with addresses. - [ACO](https://daas-aco.listeningmind.ai/llms.txt): Diagnoses whether a product detail page can be cited by AI answers and used by shopping agents (MCP `https://daas-aco.listeningmind.ai/mcp`) - [AOO](https://daas-aoo.listeningmind.ai/llms.txt): Measures whether AI agents can get real tasks done on a website (MCP `https://daas-aoo.listeningmind.ai/mcp`) - [Brand Finder](https://daas-brand.listeningmind.ai/llms.txt): Which brands lead search by generation or field, and what their brand assets are (MCP `https://daas-brand.listeningmind.ai/mcp`) - [Brand Naming Agent](https://daas-naming.listeningmind.ai/llms.txt): Creates and checks brand name candidates grounded in search data (MCP `https://daas-naming.listeningmind.ai/mcp`) - [Brand Wiki](https://daas-wiki.listeningmind.ai/llms.txt): Turns a brand website into the entities, wiki pages and evidence AI assistants read (MCP `https://daas-wiki.listeningmind.ai/mcp`) - [CEP Finder](https://daas-cep.listeningmind.ai/llms.txt): In which situations do people start looking for this category (category entry point map) (MCP `https://daas-cep.listeningmind.ai/mcp`) - [Creative Finder](https://daas-creative.listeningmind.ai/llms.txt): Finds purchase situations (CEP) in search data and drafts a creative, an image and a video for each (MCP `https://daas-creative.listeningmind.ai/mcp`) - [Demand Forecast](https://daas-forecast.listeningmind.ai/llms.txt): What category demand looks like in the next 3-6 months and when to launch or campaign (MCP `https://daas-forecast.listeningmind.ai/mcp`) - [Funnel Leak Finder](https://daas-funnel.listeningmind.ai/llms.txt): Where category search journeys leak to competitors (MCP `https://daas-funnel.listeningmind.ai/mcp`) - [GEO Audit](https://daas-geo.listeningmind.ai/llms.txt): Checks whether a web page is ready to be read and cited by search engines and AI answer engines (MCP `https://daas-geo.listeningmind.ai/mcp`) - [ICSS](https://daas-icss.listeningmind.ai/llms.txt): Synthetic consumer panel conditioned on search intent, for surveys and FGDs (MCP `https://daas-icss.listeningmind.ai/mcp`) - [Intent KG](https://daas-intent.listeningmind.ai/llms.txt): What people look for about a topic, why, and how they choose (Intent Knowledge Graph) (MCP `https://daas-intent.listeningmind.ai/mcp`) - [Prompt Builder](https://daas-prompt.listeningmind.ai/llms.txt): Finds what consumers ask AI and builds managed brand prompts with AI visibility (MCP `https://daas-prompt.listeningmind.ai/mcp`) - [Pulse Finder](https://daas-pulse.listeningmind.ai/llms.txt): What is rising in search for a gender and age segment right now (MCP `https://daas-pulse.listeningmind.ai/mcp`) - [Taste Finder](https://daas-taste.listeningmind.ai/llms.txt): In what sensory and emotional words do people choose this (consumer taste report from search data) (MCP `https://daas-taste.listeningmind.ai/mcp`) - [ListeningMind Data API](https://daas.listeningmind.ai/llms.txt): the search data behind every app (MCP `https://daas.listeningmind.ai/mcp`) · [glossary](https://daas.listeningmind.ai/en/glossary) · [all apps](https://daas.listeningmind.ai/en/apps) ## Optional - ListeningMind data and other apps: https://www.listeningmind.com · contact m-support@listeningmind.com