{"id":8615,"date":"2026-01-14T20:49:24","date_gmt":"2026-01-14T19:49:24","guid":{"rendered":"https:\/\/innovacore.group\/?post_type=portfolio&p=8615"},"modified":"2026-03-17T15:32:39","modified_gmt":"2026-03-17T13:32:39","slug":"shopisan","status":"publish","type":"portfolio","link":"https:\/\/innovacore.group\/bg\/portfolio\/shopisan\/","title":{"rendered":"Shopisan &#8211; \u0420\u0435\u0432\u0438\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043c\u0435\u0441\u0442\u043d\u0430\u0442\u0430 \u0442\u044a\u0440\u0433\u043e\u0432\u0438\u044f"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Shopisan is the first private &#8222;local attention operator&#8220; dedicated to revitalizing city center commerce. By combining physical event management with a digital platform (Live &amp; Replay), they transform passive retail spaces into dynamic, traffic-generating hubs. Their B2B model aligns the interests of merchants, cities, and private partners to create &#8222;Shopisan Weeks&#8220;\u2014industrialized promotional events that boost footfall and sales while digitizing local inventory.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0415\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u0438\u044f\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0437\u0430 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043c\u0435\u0441\u0442\u043d\u0430\u0442\u0430 \u0442\u044a\u0440\u0433\u043e\u0432\u0438\u044f, \u043e\u0431\u0435\u0434\u0438\u043d\u044f\u0432\u0430\u0449 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u044a\u0431\u0438\u0442\u0438\u044f \u0441 \u043e\u043d\u043b\u0430\u0439\u043d \u043f\u0430\u0437\u0430\u0440\u0443\u0432\u0430\u043d\u0435 \u043d\u0430 \u0436\u0438\u0432\u043e.<\/p>\n","protected":false},"featured_media":2369,"parent":0,"template":"","meta":{"inline_featured_image":false,"company_name":"Shopisan","summary":"<span class=\"ic-nycd\">\u0420\u0435\u0432\u0438\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0435<\/span> \u041c\u0435\u0441\u0442\u043d\u0430 \u0442\u044a\u0440\u0433\u043e\u0432\u0438\u044f","mission":"<p>\u0414\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0438\u043c \u043a\u0440\u0438\u0437\u0430\u0442\u0430 \u043d\u0430 \u043c\u0435\u0441\u0442\u043d\u0430\u0442\u0430 \u0442\u044a\u0440\u0433\u043e\u0432\u0438\u044f \u0432 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432 \u0430\u043a\u0442\u0438\u0432. Shopisan \u0446\u0435\u043b\u0438 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0442\u043e \u0437\u0432\u0435\u043d\u043e, \u043a\u043e\u0435\u0442\u043e \u043b\u0438\u043f\u0441\u0432\u0430 \u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u0442\u0430 \u0432\u043b\u0430\u0441\u0442, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u044f\u0449\u043e \u0446\u044f\u043b\u043e\u0441\u0442\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0435\u0442\u043e \u0432\u0440\u044a\u0449\u0430 \u043f\u0440\u0438\u044f\u0442\u0435\u043b\u0441\u043a\u0430\u0442\u0430 \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u0430, \u0446\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u0430 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442 \u0438 \u0442\u044a\u0440\u0433\u043e\u0432\u0441\u043a\u0430\u0442\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430 \u0432 \u0433\u0440\u0430\u0434\u0441\u043a\u0438\u0442\u0435 \u0446\u0435\u043d\u0442\u0440\u043e\u0432\u0435, \u043e\u0431\u043b\u0430\u0433\u043e\u0434\u0435\u0442\u0435\u043b\u0441\u0442\u0432\u0430\u0439\u043a\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0438 \u0442\u044a\u0440\u0433\u043e\u0432\u0446\u0438 \u0438 \u043c\u0435\u0441\u0442\u043d\u0438\u0442\u0435 \u043e\u0431\u0449\u043d\u043e\u0441\u0442\u0438.<\/p>\n","impact":"<p>Shopisan \u0430\u0434\u0440\u0435\u0441\u0438\u0440\u0430 \u201e\u0442\u0438\u0445\u0430\u0442\u0430 \u043a\u0440\u0438\u0437\u0430\u201c \u043d\u0430 \u043f\u0440\u0430\u0437\u043d\u0438\u0442\u0435 \u0442\u044a\u0440\u0433\u043e\u0432\u0441\u043a\u0438 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0447\u0440\u0435\u0437 \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430\u0449\u0438\u0442\u0435 \u0442\u044a\u0440\u0433\u043e\u0432\u0441\u043a\u0438 \u043f\u043b\u043e\u0449\u0438, \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0430 \u0441\u0442\u0440\u043e\u0438 \u043d\u043e\u0432\u0438 \u0441\u0433\u0440\u0430\u0434\u0438 (\u043f\u0435\u0441\u0442\u0435\u043d\u0435 \u043d\u0430 \u0437\u0435\u043c\u044f). \u0427\u0440\u0435\u0437 \u043f\u0440\u043e\u0444\u0435\u0441\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u0440\u043e\u043c\u043e\u0446\u0438\u044f\u0442\u0430 \u043d\u0430 \u043c\u0435\u0441\u0442\u043d\u0430\u0442\u0430 \u0442\u044a\u0440\u0433\u043e\u0432\u0438\u044f \u0442\u0435 \u043f\u0440\u0435\u043d\u0430\u0441\u044f\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435\u0442\u043e \u043a\u044a\u043c \u043c\u0435\u0441\u0442\u043d\u0438\u0442\u0435, \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u044f\u0442 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438 (\u0432\u0442\u043e\u0440\u0438\u0447\u043d\u0438 \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u0438, \u043c\u0435\u0441\u0442\u043d\u0438 \u0437\u0430\u043d\u0430\u044f\u0442\u0447\u0438\u0438) \u0438 \u0432\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u0442 \u0441\u043e\u0446\u0438\u0430\u043b\u043d\u0438\u0442\u0435 \u0432\u0440\u044a\u0437\u043a\u0438 \u0432 \u0433\u0440\u0430\u0434\u0441\u043a\u0438\u0442\u0435 \u0440\u0430\u0439\u043e\u043d\u0438.<\/p>\n","company_logo":"https:\/\/innovacore.group\/wp-content\/uploads\/shopisan-logo-innov-innovacore-optimized.jpg","website_url":"","linkedin_url":"","location":"\u041f\u0430\u0440\u0438\u0436, \u0424\u0440\u0430\u043d\u0446\u0438\u044f","founded_year":"2026","key_numbers":{"item-0":{"metric_label":"\u0426\u0435\u043b \u0437\u0430 \u0442\u043e\u0447\u043a\u0438 \u0437\u0430 \u043f\u0440\u043e\u0434\u0430\u0436\u0431\u0430 (K+)","metric_value":"270"},"item-1":{"metric_label":"% B2B &amp; B2C \u043c\u043e\u0434\u0435\u043b","metric_value":"100"},"item-2":{"metric_label":"% \u0426\u0435\u043b EBITDA","metric_value":"20"}},"hiring_status":"\u043d\u0430\u0431\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b","sector":"\u043f\u0430\u0437\u0430\u0440\u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430","company_type":"\u0441\u0442\u0430\u0440\u0442\u0430\u043f","audience":["b2b_a_b2c"],"geo_scope":["\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0435\u043d"],"business_model":["\u043f\u0430\u0437\u0430\u0440\u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430","\u0443\u0441\u043b\u0443\u0433\u0438"],"funding_stage":"\u0432 \u043f\u0440\u043e\u0446\u0435\u0441 \u043d\u0430 \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u0430\u043d\u0435","partnership_type":"\u0441\u044a\u0437\u0434\u0430\u0432\u0430\u043d\u0435","logo_animation":"<div id=\"shopisan-particle-root\">rn    <canvas id=\"shopisanCanvas\"><\/canvas>rn<\/div>rnrn<style>rn    #shopisan-particle-root {rn        width: 100%;rn        height: 300px;rn        display: flex;rn        justify-content: center;rn        align-items: center;rn        background: transparent;rn        overflow: hidden;rn        cursor: crosshair;rn    }rn<\/style>rnrn<script>rn(function() {rn    const canvas = document.getElementById('shopisanCanvas');rn    const ctx = canvas.getContext('2d', { willReadFrequently: true });rn    const root = document.getElementById('shopisan-particle-root');rn    rn    let width, height;rn    let particles = [];rn    let mouse = { x: -1000, y: -1000 };rn    const particleColor = '#f5f5f5';rn    let time = 0;rnrn    function init() {rn        width = root.offsetWidth;rn        height = 300;rn        rn        const dpr = window.devicePixelRatio || 1;rn        canvas.width = width * dpr;rn        canvas.height = height * dpr;rn        canvas.style.width = width + 'px';rn        canvas.style.height = height + 'px';rn        ctx.scale(dpr, dpr);rnrn        createLogoParticles();rn    }rnrn    function createLogoParticles() {rn        particles = [];rn        const cx = width \/ 2;rn        const cy = height \/ 2;rn        const isMobile = width < 600;rnrn        \/\/ --- 1. CONFIGURATION ---rn        ctx.fillStyle = 'white';rn        ctx.strokeStyle = 'white';rn        rn        const iconSize = isMobile ? 60 : 90;rn        const fontSize = isMobile ? 35 : 60;rn        const separatorH = isMobile ? 50 : 80;rn        const gap = isMobile ? 20 : 35;rnrn        ctx.font = `bold ${fontSize}px Arial, Helvetica, sans-serif`;rn        const textMetrics = ctx.measureText('SHOPISAN');rn        const textWidth = textMetrics.width;rnrn        const totalWidth = iconSize + gap + 2 + gap + textWidth;rn        const startX = cx - (totalWidth \/ 2);rnrn        \/\/ --- 2. DESSIN DU GABARIT (Invisible) ---rn        const ix = startX + (iconSize \/ 2);rn        const iy = cy - (iconSize * 0.1);rn        const radius = iconSize * 0.35;rn        rn        ctx.lineWidth = iconSize * 0.08;rn        ctx.lineCap = 'round';rn        ctx.lineJoin = 'round';rnrn        \/\/ Srn        ctx.font = `bold ${iconSize * 0.5}px Arial, sans-serif`;rn        ctx.textAlign = 'center';rn        ctx.textBaseline = 'middle';rn        ctx.fillText('S', ix, iy);rnrn        \/\/ Arcsrn        ctx.beginPath();rn        ctx.arc(ix, iy, radius * 0.8, Math.PI, 0); rn        ctx.stroke();rn        ctx.beginPath();rn        ctx.arc(ix, iy, radius * 1.3, Math.PI, 0); rn        ctx.stroke();rnrn        \/\/ Pointern        ctx.beginPath();rn        ctx.moveTo(ix - radius * 0.8, iy + 5);rn        ctx.lineTo(ix, iy + iconSize * 0.5);rn        ctx.lineTo(ix + radius * 0.8, iy + 5);rn        ctx.stroke();rn        ctx.beginPath();rn        ctx.moveTo(ix - radius * 1.3, iy + 5);rn        ctx.lineTo(ix, iy + iconSize * 0.8);rn        ctx.lineTo(ix + radius * 1.3, iy + 5);rn        ctx.stroke();rnrn        \/\/ Barrern        const lineX = startX + iconSize + gap;rn        ctx.lineWidth = 2;rn        ctx.beginPath();rn        ctx.moveTo(lineX, cy - separatorH \/ 2);rn        ctx.lineTo(lineX, cy + separatorH \/ 2);rn        ctx.stroke();rnrn        \/\/ Textern        const textX = lineX + gap;rn        ctx.textAlign = 'left';rn        ctx.fillStyle = 'white';rn        ctx.font = `bold ${fontSize}px Arial, Helvetica, sans-serif`;rn        ctx.fillText('SHOPISAN', textX, cy);rnrn        \/\/ --- 3. SCAN ---rn        const density = 4;rn        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height).data;rn        const dataWidth = canvas.width; rnrn        for (let y = 0; y < canvas.height; y += density) {rn            for (let x = 0; x < canvas.width; x += density) {rn                if (imageData[(y * dataWidth + x) * 4 + 3] > 128) {rn                    const dpr = window.devicePixelRatio || 1;rn                    particles.push({rn                        x: x \/ dpr,rn                        y: y \/ dpr,rn                        originX: x \/ dpr,rn                        originY: y \/ dpr,rn                        vx: 0, rn                        vy: 0,rn                        size: Math.random() * 1.5 + 0.5,rn                        force: Math.random() rn                    });rn                }rn            }rn        }rn        ctx.clearRect(0, 0, width, height);rn    }rnrn    function draw() {rn        ctx.clearRect(0, 0, width, height);rn        rn        \/\/ MODIF 1 : Animation de vague beaucoup \u0431\u043e\u043b\u0435\u0435 lentarn        time += 0.02; \/\/ Avant c'\u00e9tait 0.05rnrn        ctx.fillStyle = particleColor;rn        rn        particles.forEach(p => {rn            \/\/ Vague doucern            const waveX = Math.sin(time * 0.5 + p.y * 0.05) * 2;rn            const waveY = Math.cos(time * 0.3 + p.x * 0.05) * 2;rnrn            const dx = mouse.x - p.x;rn            const dy = mouse.y - p.y;rn            const dist = Math.sqrt(dx*dx + dy*dy);rn            const radius = 80;rnrn            let repelX = 0;rn            let repelY = 0;rnrn            if (dist < radius) {rn                const force = (radius - dist) \/ radius;rn                const angle = Math.atan2(dy, dx);rn                rn                \/\/ MODIF 2 : R\u00e9pulsion \u043c\u043d\u043e\u0433\u043e \u043f\u043e-\u0441\u043b\u0430\u0431\u0430 (8 \u0432\u043c\u0435\u0441\u0442\u043e 20)rn                repelX = -Math.cos(angle) * force * 8;rn                repelY = -Math.sin(angle) * force * 8;rn            }rnrn            const targetX = p.originX + waveX;rn            const targetY = p.originY + waveY;rnrn            \/\/ MODIF 3 : Retour \u00e0 la position tr\u00e8s souple (0.03 au lieu de 0.08)rn            const ax = (targetX - p.x) * 0.03;rn            const ay = (targetY - p.y) * 0.03;rnrn            p.vx += ax;rn            p.vy += ay;rn            p.vx += repelX * 0.3; \/\/ On applique aussi menos de force sourisrn            p.vy += repelY * 0.3;rn            rn            \/\/ MODIF 4 : Friction \u043f\u043e-\u0432\u0438\u0441\u043e\u043a\u0430 \u0437\u0430 \u0434\u0430 \u0441\u0435 \"\u043f\u043b\u044a\u0437\u0432\u0430\" (0.90 \u0432\u043c\u0435\u0441\u0442\u043e 0.85)rn            p.vx *= 0.90; rn            p.vy *= 0.90;rnrn            p.x += p.vx;rn            p.y += p.vy;rnrn            ctx.beginPath();rn            ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);rn            ctx.fill();rn        });rnrn        requestAnimationFrame(draw);rn    }rnrn    const updateMouse = (e) => {rn        const r = canvas.getBoundingClientRect();rn        const cx = e.touches ? e.touches[0].clientX : e.clientX;rn        const cy = e.touches ? e.touches[0].clientY : e.clientY;rn        mouse.x = cx - r.left;rn        mouse.y = cy - r.top;rn    };rnrn    window.addEventListener('resize', init);rn    canvas.addEventListener('mousemove', updateMouse);rn    canvas.addEventListener('touchmove', updateMouse, {passive: true});rn    canvas.addEventListener('mouseleave', () => { mouse.x = -1000; mouse.y = -1000; });rn    canvas.addEventListener('touchend', () => { mouse.x = -1000; mouse.y = -1000; });rnrn    setTimeout(init, 50);rn    draw();rn})();rn<\/script>"},"pt":[],"pipeline":[],"class_list":["post-8615","portfolio","type-portfolio","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/innovacore.group\/bg\/wp-json\/wp\/v2\/portfolio\/8615","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/innovacore.group\/bg\/wp-json\/wp\/v2\/portfolio"}],"about":[{"href":"https:\/\/innovacore.group\/bg\/wp-json\/wp\/v2\/types\/portfolio"}],"version-history":[{"count":1,"href":"https:\/\/innovacore.group\/bg\/wp-json\/wp\/v2\/portfolio\/8615\/revisions"}],"predecessor-version":[{"id":8616,"href":"https:\/\/innovacore.group\/bg\/wp-json\/wp\/v2\/portfolio\/8615\/revisions\/8616"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/innovacore.group\/bg\/wp-json\/wp\/v2\/media\/2369"}],"wp:attachment":[{"href":"https:\/\/innovacore.group\/bg\/wp-json\/wp\/v2\/media?parent=8615"}],"wp:term":[{"taxonomy":"pt","embeddable":true,"href":"https:\/\/innovacore.group\/bg\/wp-json\/wp\/v2\/pt?post=8615"},{"taxonomy":"pipeline","embeddable":true,"href":"https:\/\/innovacore.group\/bg\/wp-json\/wp\/v2\/pipeline?post=8615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}