{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "unopim--unopim",
    "name": "UnoPim",
    "tagline": "Laravel PIM for catalog back office with a REST API and built-in AI agent chat.",
    "shortTagline": "Laravel PIM for catalog back office",
    "description": "Open-source Product Information Management system (Laravel 13) that centralises products, attributes, families, channels, locales, and currencies, imports and exports CSV/XLSX, and feeds storefronts. It ships a REST API (Postman collection) and an in-app AI agent chat with multi-step tool calling against ten-plus model providers. MIT core; cloud hosting is paid.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "ecommerce",
    "alternativeTo": [
      "Akeneo",
      "Salsify"
    ],
    "shape": "business-app",
    "formFactor": "web-app",
    "executionModel": "hybrid",
    "provenance": "human-written",
    "codeStack": {
      "languages": [
        "PHP",
        "JavaScript"
      ],
      "frameworks": [
        "Laravel 13",
        "Vue.js"
      ],
      "packageManager": "composer",
      "database": [
        "MySQL",
        "Elasticsearch (optional)"
      ],
      "hostingTarget": [
        "Docker",
        "any PHP host",
        "UnoPim cloud hosting"
      ]
    },
    "modelStack": {
      "providers": [
        "10+ configurable providers (OpenAI, Anthropic, Google, and others per README)"
      ],
      "models": [],
      "requiredKeys": [],
      "promptLocations": [],
      "tools": [
        "in-app AI agent chat: search, create, update, bulk edit, export, categorize, generate content"
      ]
    },
    "repos": [
      {
        "url": "https://github.com/unopim/unopim",
        "owner": "unopim",
        "name": "unopim",
        "license": "MIT",
        "stars": 10957,
        "lastCommit": "2026-09-02"
      }
    ],
    "interface": {
      "kind": "api",
      "url": "https://documenter.getpostman.com/view/37137259/2sBXVhEWjS",
      "official": true,
      "hosted": "local"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Manage products and variants",
        "reachable": true,
        "evidence": "README 'API Integration': RESTful APIs with official Postman collection; triage confirmed product endpoints"
      },
      {
        "job": "Manage categories",
        "reachable": true,
        "evidence": "triage: REST API for products, categories, attributes and channels"
      },
      {
        "job": "Manage attributes, groups, and families",
        "reachable": true,
        "evidence": "triage: attributes covered"
      },
      {
        "job": "Channels, locales, currencies",
        "reachable": true,
        "evidence": "triage: channels covered"
      },
      {
        "job": "Import and export CSV/XLSX",
        "reachable": null,
        "evidence": "Postman docs could not be fetched; unverified"
      },
      {
        "job": "Media and digital assets",
        "reachable": null,
        "evidence": "unverified"
      },
      {
        "job": "User and role management",
        "reachable": null,
        "evidence": "unverified"
      },
      {
        "job": "AI content generation and agent chat",
        "reachable": false,
        "evidence": "README describes these as admin UI features; no API endpoint documented"
      }
    ],
    "editions": [
      {
        "name": "Open source",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/unopim/unopim",
            "command": "composer create-project unopim/unopim"
          },
          {
            "kind": "container",
            "url": "https://devdocs.unopim.com/2.1.x/introduction/installation.html#install-using-docker",
            "command": "docker compose up"
          }
        ]
      },
      {
        "name": "Cloud hosting",
        "price": null,
        "open": false,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://unopim.com/cloud-hosting",
            "command": ""
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md, Claude Code plugin, or published skill found in the repo."
    },
    "customization": {
      "summary": "Copy .env.example (or .env.docker for compose) and set app, database, mail, queue, Elasticsearch, and REST token TTLs; import tuning has its own IMPORT_* variables. Catalog structure (attributes, families, channels) is modelled in the admin. AI provider credentials are stored encrypted in the admin, not env.",
      "envVars": [
        "APP_NAME",
        "APP_URL",
        "APP_ADMIN_URL",
        "APP_LOCALE",
        "APP_CURRENCY",
        "APP_TIMEZONE",
        "DB_CONNECTION",
        "DB_HOST",
        "DB_DATABASE",
        "DB_USERNAME",
        "DB_PASSWORD",
        "QUEUE_CONNECTION",
        "REDIS_HOST",
        "ELASTICSEARCH_ENABLED",
        "ELASTICSEARCH_HOST",
        "ELASTICSEARCH_INDEX_PREFIX",
        "MAIL_MAILER",
        "MAIL_HOST",
        "MAIL_FROM_ADDRESS",
        "ACCESS_TOKEN_TTL",
        "REFRESH_TOKEN_TTL",
        "REST_API_RATE_LIMIT",
        "CORS_ALLOWED_ORIGINS",
        "IMPORT_BATCH_SIZE",
        "IMPORT_BULK_CHUNK_SIZE",
        "IMPORT_DEFERRED_INDEXING",
        "COMPLETENESS_QUEUE",
        "MICROSOFT_SSO_ENABLED",
        "INSTALLER_ADMIN_EMAIL",
        "INSTALLER_ADMIN_PASSWORD"
      ],
      "configFiles": [
        ".env",
        ".env.docker"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "editCount": 32
    },
    "useWhen": [
      "I sell on several channels and need one place for product data before it reaches the stores",
      "I want an agent to enrich and bulk-edit thousands of SKUs without touching a spreadsheet"
    ],
    "accounts": [
      "model provider accounts (optional, for AI features)"
    ],
    "active": true,
    "lastActivity": "2026-09-02",
    "gotchas": [
      "Queue worker must run for imports, exports, AI agent tasks, and webhooks",
      "docs.unopim.com and devdocs.unopim.com returned 403 to automated fetch; API coverage is from the README and triage",
      "A PIM, not a store: pairs with a storefront Listing"
    ],
    "fit": {
      "adaptable": 3,
      "operable": 2
    },
    "evidence": {
      "formFactor": "README: Laravel 13 web app",
      "executionModel": "README: AI Agent Chat with multi-step tool calling and Magic AI across 10+ providers; optional",
      "operability": "README API Integration section links official Postman collection",
      "effort": ".env.example names 60+ vars; README documents docker compose",
      "editions": "MIT; README Cloud Hosting section",
      "active": "pushedAt 2026-09-02"
    },
    "confidence": {
      "formFactor": 0.95,
      "executionModel": 0.7,
      "operability": 0.85,
      "effort": 0.85,
      "reach": 0.5,
      "editions": 0.6
    },
    "openQuestions": [
      "Full REST resource list (import/export, media, users)",
      "Cloud hosting prices",
      "Whether the AI agent chat is exposed to external agents through MCP"
    ],
    "sources": [
      {
        "url": "https://github.com/unopim/unopim",
        "foundBy": "sourcing:ecommerce:github"
      },
      {
        "url": "https://documenter.getpostman.com/view/37137259/2sBXVhEWjS",
        "foundBy": "analysis"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Catalog back office with a real env surface and official REST API; Reach partly unverified because docs blocked fetch.",
      "disputed": []
    },
    "url": "apps/unopim--unopim.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/unopim--unopim.json"
  }
}
