Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 32 additions & 6 deletions .vitepress/version-configs/2.0.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,38 @@ export default [
text: 'Magic AI',
link: `/${version}/magic/magic-ai`,
collapsed: false,
items: setVersionPrefix([
['magic-ai/platforms', 'Platforms'],
['magic-ai/settings', 'Settings'],
['magic-ai/prompts', 'Prompts'],
['magic-ai/system-prompts', 'System Prompts'],
])
items: [
{
text: 'Platforms',
link: `/${version}/magic-ai/platforms`,
collapsed: true,
items: [
{
text: 'Providers',
link: `/${version}/magic-ai/providers/`,
collapsed: true,
items: setVersionPrefix([
['magic-ai/providers/openai', 'OpenAI'],
['magic-ai/providers/anthropic', 'Anthropic'],
['magic-ai/providers/gemini', 'Google Gemini'],
['magic-ai/providers/groq', 'Groq'],
['magic-ai/providers/ollama', 'Ollama'],
['magic-ai/providers/xai', 'xAI (Grok)'],
['magic-ai/providers/mistral', 'Mistral'],
['magic-ai/providers/deepseek', 'DeepSeek'],
['magic-ai/providers/azure', 'Azure OpenAI'],
['magic-ai/providers/openrouter', 'OpenRouter'],
['magic-ai/providers/custom', 'Custom (OpenAI-compatible)'],
])
}
]
},
...setVersionPrefix([
['magic-ai/settings', 'Settings'],
['magic-ai/prompts', 'Prompts'],
['magic-ai/system-prompts', 'System Prompts'],
]),
]
},

{
Expand Down
107 changes: 52 additions & 55 deletions src/2.0/dashboard/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,48 +2,23 @@

The **Dashboard** is the landing page you see immediately after logging in to [UnoPim](https://unopim.com/). It's designed as a single-screen command center: in under a second you should be able to tell *how big* your catalog is, *how healthy* it is, *what your team has been doing*, and *what needs attention next* — without clicking into any other page.

<ImagePopup src="/assets/2.0/images/dashboard/dashboard-overview.png" alt="Dashboard Overview" />
## How the Dashboard is organised

## What is the Dashboard for?
The Dashboard is split into **three vertical bands**, each answering a different question:

The Dashboard exists to answer four questions the moment you log in:
| Band | Question it answers | What's in it |
|---|---|---|
| **1. Overview** | *How big is my catalog and what needs attention right now?* | Welcome banner, Catalog Overview cards, Catalog Structure cards, Needs Attention alerts |
| **2. Analytics** | *How healthy is my data?* | Product Statistics, Product Activity chart, Completeness, Channel Readiness |
| **3. Operations** | *What has the team been doing?* | Recent Activity feed, Data Transfer panel |

| Question | Where the answer lives |
|---|---|
| **How big is my catalog?** | Catalog Overview + Catalog Structure cards |
| **How healthy is my data?** | Needs Attention, Completeness, Channel Readiness |
| **What has the team been doing?** | Product Statistics, Product Activity chart, Recent Activity |
| **What do I do next?** | Welcome Banner quick actions, Needs Attention alerts, Data Transfer panel |

It's deliberately read-heavy — the Dashboard reports state, then points you at the right page to act. Every card and panel is either clickable (to jump to the relevant listing) or paired with a quick-action button.

## How the Dashboard works

The page is composed of independent **widgets**, each sourced from a different part of UnoPim:

```
┌───────────────────────────────────────────────────┐
│ Welcome Banner (user greeting + quick actions) │
├───────────────────────────────────────────────────┤
│ Catalog Overview ← products + categories tables │
│ Catalog Structure ← attributes, locales, channels│
├───────────────────────────────────────────────────┤
│ Needs Attention ← completeness engine │
├───────────────────────────────────────────────────┤
│ Analytics ← product stats + 7-day chart │
│ Completeness ← per-channel completeness │
│ Channel Readiness ← per-channel ready counts │
├───────────────────────────────────────────────────┤
│ Operations ← activity log + Job Tracker │
├───────────────────────────────────────────────────┤
│ AI Agent button (floating, bottom-right) │
│ Theme toggle (top-right, next to bell) │
└───────────────────────────────────────────────────┘
```

Counts and charts are computed on page load (no scheduled jobs), so the Dashboard always reflects the current state of the database.

## Widgets
Counts and charts are computed on page load (no scheduled jobs), so the Dashboard always reflects the current state of the database. The rest of this page walks through the three bands, explains every widget, and shows the corresponding screenshot.

---

## 1. Overview

The Overview band is the first thing you see after login. It greets you, summarises the size of the catalog, exposes the structural building blocks, and surfaces any items that need attention right now.

### Welcome Banner

Expand Down Expand Up @@ -87,9 +62,15 @@ Surfaces items that need admin action **right now**. The most common alert is **
Unenriched products may not be ready for distribution to your sales channels. Review this section regularly to keep the catalog shippable.
:::

### Analytics
<ImagePopup src="/assets/2.0/images/dashboard/dashboard-overview.png" alt="Dashboard Overview band — Welcome banner, Catalog Overview, Catalog Structure, Needs Attention" />

---

## 2. Analytics

The Analytics band answers *how healthy is my data?*. It shows the size and shape of the catalog over time, plus the per-channel completeness picture so you can decide where to focus enrichment work.

#### Product Statistics
### Product Statistics

A numerical breakdown of the catalog — the quickest way to judge health over time.

Expand All @@ -103,7 +84,7 @@ A numerical breakdown of the catalog — the quickest way to judge health over t
| **Avg Completeness** | Average completeness score across all products. |
| **Enriched** | Number of products flagged as fully enriched. |

#### Product Activity (Last 7 Days)
### Product Activity (Last 7 Days)

A two-line chart plotting **Created** vs. **Updated** products per day for the last seven days. Flat lines at zero are a cue that the catalog has gone quiet; spikes usually mean a bulk import or enrichment run just finished.

Expand All @@ -128,40 +109,54 @@ Work on the lowest-scoring channel-locale pair first. A product can be ready for

### Channel Readiness

A horizontal **progress bar per channel** reading *"X of Y products ready"* with a percentage (e.g., *"2 of 3 products ready — 67%"*). Where the Completeness widget shows *average quality*, Channel Readiness shows *shippable count* — the number of products that clear that channel's required-field bar.
A horizontal **progress bar per channel** reading *"X of Y products ready"* with a percentage (e.g., *"1 of 12 products ready — 8%"*). Where the Completeness widget shows *average quality*, Channel Readiness shows *shippable count* — the number of products that clear that channel's required-field bar.

### Operations
<ImagePopup src="/assets/2.0/images/dashboard/dashboard-analytics.png" alt="Dashboard Analytics band — Product Statistics, Product Activity chart, Completeness, Channel Readiness" />

#### Recent Activity
---

## 3. Operations

The Operations band sits at the bottom of the Dashboard and answers *what has the team been doing?*. It pairs a chronological activity feed with the latest import / export job statuses so you can spot anomalies at a glance.

### Recent Activity

A chronological feed of changes across the system. Every entry captures:

| Field | Meaning |
|---|---|
| **Action type** | Created, updated, or deleted. |
| **Entity type** | Family, Attribute, Product, Category, Channel, etc. |
| **Entity type** | Family, Attribute, Product, Category, Channel, Job, etc. |
| **User name** | Who performed the action. |
| **Timestamp** | When it happened. |

This is the fastest way to answer *"did someone change X recently?"* without opening the history tab on each entity.

#### Data Transfer
### Data Transfer

Status panel for your most recent import and export jobs. Each job shows one of five states:
Status panel for your most recent import and export jobs. Each row shows the profile code, type (Import / Export / System), rows processed, and one of five states:

| Status | Meaning |
|---|---|
| **Completed** | The job finished successfully. |
| **Validated** | The job passed validation but hasn't been imported yet. |
| **Processing** | The job is currently running. |
| **Pending** | The job is queued and waiting to start. |
| **Failed** | The job encountered errors. |
| **Cancelled** | The job was manually cancelled. |

Click **"View All Jobs"** to open the full **Job Tracker** with per-step progress bars and pause/resume/cancel controls.
Click **"View All Jobs"** at the bottom of the panel to open the full **Job Tracker** with per-step progress bars and pause / resume / cancel controls.

<ImagePopup src="/assets/2.0/images/dashboard/dashboard-operations.png" alt="Dashboard Operations band — Recent Activity feed and Data Transfer panel" />

---

## Always-on controls

Two controls live on the Dashboard chrome (and every other admin page) rather than inside one of the three bands.

### AI Agent

A floating **"Open Agenting PIM"** button sits in the bottom-right corner of the Dashboard (and every other admin page). Clicking it opens the conversational AI Agent — type what you need in plain English and it calls the right PIM tool on your behalf.
A floating **"Open Agentic PIM"** button sits in the bottom-right corner. Clicking it opens the conversational AI Agent — type what you need in plain English and it calls the right PIM tool on your behalf.

::: tip
The AI Agent can create products, enrich content, run data-quality scans, and answer questions about your catalog without you navigating the sidebar. See **[AI Agent Chat](../ai-agent/ai-agent-chat.md)** for the full list of 30+ tools.
Expand All @@ -177,14 +172,16 @@ UnoPim supports a **Dark / Light Theme** toggle. Click the sun/moon icon in the
The theme toggle is global. Whichever mode you choose applies everywhere in the admin, not just the Dashboard.
:::

---

## Typical Dashboard workflow

A common way admins use the Dashboard at the start of a shift:

1. **Check Needs Attention** — clear any urgent alerts (e.g., unenriched products).
2. **Scan Completeness and Channel Readiness** — pick the weakest channel/locale and plan a cleanup.
3. **Skim Recent Activity** — confirm overnight jobs finished and teammates' changes make sense.
4. **Open Data Transfer** — watch any running imports/exports, or click through to the Job Tracker for detail.
1. **Check Needs Attention** (Overview band) — clear any urgent alerts (e.g., unenriched products).
2. **Scan Completeness and Channel Readiness** (Analytics band) — pick the weakest channel/locale and plan a cleanup.
3. **Skim Recent Activity** (Operations band) — confirm overnight jobs finished and teammates' changes make sense.
4. **Open Data Transfer** (Operations band) — watch any running imports/exports, or click through to the Job Tracker for detail.
5. **Launch work** — use a Welcome Banner quick action or the AI Agent button to start the day's tasks.

Following this flow turns the Dashboard into a daily triage screen rather than just a landing page.
52 changes: 51 additions & 1 deletion src/2.0/magic-ai/platforms.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ You can register **as many Platforms as you like**. A common setup is one premiu

Click the **Add Platform** button in the top-right corner. A modal opens with the following fields:

1. **Provider** — Select from the dropdown (OpenAI, Anthropic, Gemini, Ollama, Groq, etc.).
1. **Provider** — Select from the dropdown. UnoPim supports 11 providers (see [Supported Providers](#supported-providers) below).
2. **Label** — A descriptive name such as *"OpenAI Production"* or *"Gemini Translation"*. This is what you'll see in the Settings dropdowns.
3. **API Key** — Paste the key from your provider account. It's encrypted before it hits the database.
4. **Models** — Multi-select the models you want to expose. Only the models you tick here appear in the downstream Text / Image / Translation / Agentic PIM dropdowns on the Settings page.
Expand All @@ -51,6 +51,56 @@ Click the **Add Platform** button in the top-right corner. A modal opens with th
API credentials are stored with encrypted credential storage for security. Your API keys are never stored in plain text.
:::

## Supported Providers

The **Provider** dropdown in the Add / Edit Platform modal exposes these 11 options. Each one is a distinct integration with its own credential format, model catalogue, and capability set (text-only vs. text + image, hosted vs. self-hosted, etc.). Click any row for the full per-provider page (models confirmed working with UnoPim, how to get the key, step-by-step configuration, capability routing, tips and limits).

| # | Provider | ID | What it is | Typical use |
|---|----------|----|------------|-------------|
| 1 | **[OpenAI](./providers/openai.md)** | `openai` | OpenAI's hosted models — GPT-4o family for text, DALL-E 2/3 for images. | Default choice when you want best-in-class quality for both content generation and image generation in one place. |
| 2 | **[Anthropic](./providers/anthropic.md)** | `anthropic` | Claude model family (Opus, Sonnet, Haiku). Text generation and reasoning only — no image generation. | High-quality long-form descriptions, careful reasoning, agentic workflows. Pair with another provider for images. |
| 3 | **[Google Gemini](./providers/gemini.md)** | `gemini` | Google's Gemini family — `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-2.0-flash`, `gemini-1.5-flash-latest`, `gemini-1.5-pro`. Supports text and image generation. | Cost-efficient translation and bulk content; the `flash` tiers are popular for translation workloads. |
| 4 | **[Groq](./providers/groq.md)** | `groq` | Groq-hosted open-source models running on custom inference hardware — DeepSeek-R1 distill, Llama 3.1, Qwen 3, Kimi K2, GPT-OSS, and Groq Compound. Text only. | Very fast, low-latency text generation when speed matters more than absolute quality. |
| 5 | **[Ollama](./providers/ollama.md)** | `ollama` | Local / self-hosted runner for open-source models — Llama 2/3, Mistral, Qwen, DeepSeek-Coder, Phi, LLaVA. | Air-gapped or privacy-sensitive deployments where data must not leave the network. Requires a running Ollama server. |
| 6 | **[xAI (Grok)](./providers/xai.md)** | `xai` | xAI's Grok models. Supports text and image generation. | Alternative to OpenAI / Anthropic with its own personality; useful as a fallback or A/B option. |
| 7 | **[Mistral](./providers/mistral.md)** | `mistral` | Mistral AI's hosted models (Mistral Large, Mistral Small, Codestral, etc.). Text only. | European-hosted alternative; strong multilingual performance, useful for translation into European locales. |
| 8 | **[DeepSeek](./providers/deepseek.md)** | `deepseek` | DeepSeek's hosted models (`deepseek-chat`, `deepseek-reasoner`). Text only, strong on reasoning and code-style tasks. | Cost-aggressive option for bulk text generation and reasoning-heavy prompts. |
| 9 | **[Azure OpenAI](./providers/azure.md)** | `azure` | OpenAI models served through Microsoft Azure with an enterprise SLA, regional hosting, and Azure-managed keys. | Enterprises that already standardise on Azure for compliance and billing. |
| 10 | **[OpenRouter](./providers/openrouter.md)** | `openrouter` | A meta-provider that proxies to 100+ models behind a single API key. | One-stop access when you want to experiment across many models without registering each provider individually. |
| 11 | **[Custom (OpenAI-compatible)](./providers/custom.md)** | `custom` | Any third-party endpoint that speaks the OpenAI Chat Completions API — vLLM, LM Studio, LiteLLM proxy, in-house gateways, etc. | Bring-your-own infrastructure. Enter the base URL and the API key; UnoPim treats it like any other OpenAI-style provider. |

> **Want a deep dive?** The [Providers index](./providers/) page has a capability matrix and a decision guide for choosing between them.

### Choosing a provider

Three questions narrow the choice:

- **Do you need image generation?** Only **OpenAI**, **Gemini**, and **xAI (Grok)** generate images. For Magic AI → Settings → **Image Generation**, pick one of those.
- **Does data have to stay on-prem?** Use **Ollama** (local model server) or a **Custom (OpenAI-compatible)** endpoint pointed at your own gateway.
- **What capability is the bottleneck — quality, speed, or cost?** Quality → OpenAI / Anthropic / Gemini-Pro. Speed → Groq, Gemini-Flash. Cost → DeepSeek, Gemini-Flash, Mistral-Small.

You don't have to commit to one. Register multiple Platforms and route each capability separately under **Magic AI → Settings**:

- **Text Generation** → e.g. Anthropic `claude-sonnet`
- **Image Generation** → e.g. OpenAI `dall-e-3`
- **Translation** → e.g. Gemini `gemini-1.5-flash`
- **Agentic PIM** → e.g. OpenAI `gpt-4o`

::: tip
Register a cheap, fast provider (Gemini Flash, Groq, DeepSeek) for translation and a premium provider (Claude, GPT-4o) for content generation. The split typically cuts translation cost by 80–95% with no quality drop on short locale-string tasks.
:::

### Credentials by provider

Different providers expect different fields. Most need just an **API Key**, but a few have extras:

- **OpenAI / Anthropic / Gemini / Groq / xAI / Mistral / DeepSeek / OpenRouter** — single **API Key** field.
- **Azure OpenAI** — API Key plus the **Azure endpoint URL** and the **deployment name** you created in the Azure portal.
- **Ollama** — usually no API key; you supply the **Base URL** of your Ollama server (e.g. `http://localhost:11434`).
- **Custom (OpenAI-compatible)** — **Base URL** of your endpoint plus an **API Key** if your gateway requires one.

The Add / Edit Platform modal renders only the fields relevant to the selected Provider, so you won't be prompted for an Azure deployment name when you pick OpenAI, for example.

## Platform Actions

- **Star icon** — Sets the platform as the **default**. Anywhere the Settings page shows *"Use Default Platform"*, it resolves to the starred platform. Only one can be the default at a time.
Expand Down
Loading