{"id":22,"date":"2026-05-21T14:00:34","date_gmt":"2026-05-21T14:00:34","guid":{"rendered":"http:\/\/diksqpd.cluster100.hosting.ovh.net\/?page_id=22"},"modified":"2026-05-29T18:11:40","modified_gmt":"2026-05-29T18:11:40","slug":"metodologia","status":"publish","type":"page","link":"https:\/\/wearesenti.com\/en\/metodologia\/","title":{"rendered":"Methodology"},"content":{"rendered":"<div class=\"section-wrapper \" style=\"--color-text: #f0ede6; --color-back: #111111\">\n\t<div style=\"--senti-bg-image: url(http:\/\/wearesenti.com\/wp-content\/uploads\/2026\/05\/metrology-error-map.png);--senti-overlay: 10\" class=\"senti-section wp-block-senti-blocks-senti-section\">\n\n\t\t<div class=\"senti-section__background\">\n\t\t\t\t\t\t\t<div class=\"senti-section__overlay\" aria-hidden=\"true\"><\/div>\n\t\t\t\t\t<\/div>\n\n\t\t\n\t\t<div class=\"senti-section__inner\">\n\n\t\t\t\t\t\t\t<p class=\"senti-section__context\">M\u00e9TODO<\/p>\n\t\t\t\n\t\t\t\t\t\t\t<h2 class=\"senti-section__title\">Trabajamos desde dentro de la mente de tu cliente hacia fuera.<\/h2>\n\t\t\t\n\t\t\t\t\t\t\t<h3 class=\"senti-section__subtitle\">Una arquitectura emocional que se puede vivir, repetir y medir.<\/h3>\n\t\t\t\n\t\t\t\n\t\t\t<div class=\"senti-section__body\">\n\t\t\t\t\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\t\t\t<\/div>\n\n\t\t<\/div>\n\t<\/div>\n\n\t\n<\/div>\n\n\n<div class=\"section-wrapper \" style=\"--color-text: #111111; --color-back: #f0ede6\">\n\t<div class=\"senti-section wp-block-senti-blocks-senti-section\">\n\n\t\t<div class=\"senti-section__background\">\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<canvas id=\"senti-canvas-83-6a2086805a098156171564\" class=\"senti-section__canvas\" aria-hidden=\"true\"><\/canvas>\n\t\t\n\t\t<div class=\"senti-section__inner\">\n\n\t\t\t\t\t\t\t<p class=\"senti-section__context\">01 &#8211; DIAGNOSTICAMOS<\/p>\n\t\t\t\n\t\t\t\t\t\t\t<h2 class=\"senti-section__title\">Antes de proponer, entendemos.<\/h2>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<div class=\"senti-section__body\">\n\t\t\t\t\n\n<p class=\"wp-block-paragraph\">Analizamos comportamiento, percepci\u00f3n y emoci\u00f3n para localizar las fugas que impactan directamente en la decisi\u00f3n.<br>No partimos de suposiciones. Partimos de evidencia y de datos cualitativos y cuantitativos sobre c\u00f3mo piensa y siente tu cliente real.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><\/li>\n<\/ol>\n\n\t\t\t<\/div>\n\n\t\t<\/div>\n\t<\/div>\n\n\t\t\t<script>\n\t\t( function () {\n\t\t\tvar __el = document.getElementById( 'senti-canvas-83-6a2086805a098156171564' );\n\t\t\tif ( ! __el ) return;\n\t\t\tconst canvas = __el;\r\nconst ctx = canvas.getContext('2d');\r\nlet W, H;\r\n \r\nfunction isDark() { return window.matchMedia('(prefers-color-scheme: dark)').matches; }\r\n \r\nconst CHANNELS = [\r\n  { label: 'EEG \u03b1', freq: [1.1, 2.3, 3.7], amp: [0.4,  0.25, 0.15], noise: 0.12, speed: [1.4, 1.9, 1.1], gray: 0.75 },\r\n  { label: 'EEG \u03b2', freq: [2.9, 5.1, 8.3], amp: [0.15, 0.10, 0.10], noise: 0.09, speed: [2.4, 3.4, 1.6], gray: 0.55 },\r\n  { label: 'GSR',   freq: [0.3, 0.7, 1.2], amp: [0.5,  0.2,  0.1 ], noise: 0.06, speed: [0.7, 1.1, 0.5], gray: 0.35 },\r\n  { label: 'BVP',   freq: [1.0, 2.0, 0.2], amp: [0.55, 0.15, 0.1 ], noise: 0.08, speed: [2.0, 3.8, 0.4], gray: 0.15 },\r\n];\r\n \r\nconst phases = CHANNELS.map(ch => ch.freq.map(() => Math.random() * Math.PI * 2));\r\nconst noiseSeeds = CHANNELS.map(() => Array.from({length: 200}, () => (Math.random()-0.5)));\r\nlet t = 0;\r\n \r\nlet freqScale = 1;\r\n\r\nfunction init() {\r\n  W = canvas.width  = window.innerWidth  * devicePixelRatio;\r\n  H = canvas.height = window.innerHeight * devicePixelRatio;\r\n  canvas.style.width  = window.innerWidth  + 'px';\r\n  canvas.style.height = window.innerHeight + 'px';\r\n  freqScale = Math.min(1, window.innerWidth \/ 900);\r\n}\r\n \r\nfunction smoothNoise(seed, x) {\r\n  const i = Math.floor(x) % seed.length;\r\n  const j = (i + 1) % seed.length;\r\n  const f = x - Math.floor(x);\r\n  const s = f * f * (3 - 2 * f);\r\n  return seed[(i+seed.length)%seed.length]*(1-s) + seed[(j+seed.length)%seed.length]*s;\r\n}\r\n \r\nfunction sampleWave(ch, idx, xNorm) {\r\n  let v = 0;\r\n  for (let k = 0; k < ch.freq.length; k++) {\r\n    v += Math.sin(xNorm * ch.freq[k] * Math.PI * 6 * freqScale + t * ch.speed[k] + phases[idx][k]) * ch.amp[k];\r\n  }\r\n  v += smoothNoise(noiseSeeds[idx], xNorm * 40 + t * 2.2) * ch.noise;\r\n  if (ch.label === 'BVP') {\r\n    v += Math.pow(Math.max(0, Math.sin(xNorm * Math.PI * 4 * freqScale + t * 2.0 + phases[idx][0])), 6) * 0.5;\r\n  }\r\n  return v;\r\n}\r\n \r\nfunction loop() {\r\n  ctx.clearRect(0, 0, W, H);\r\n  t += 0.014;\r\n \r\n  const dark = isDark();\r\n  const midY = H \/ 2;\r\n  const amp  = H * 0.28;\r\n  const PAD  = 52 * devicePixelRatio;\r\n  const STEPS = Math.floor(W \/ devicePixelRatio);\r\n \r\n  const refGray = dark ? 220 : 30;\r\n  ctx.beginPath();\r\n  ctx.strokeStyle = `rgba(${refGray},${refGray},${refGray},0.5)`;\r\n  ctx.lineWidth = 0.8 * devicePixelRatio;\r\n  ctx.moveTo(0, midY);\r\n  ctx.lineTo(W, midY);\r\n  ctx.stroke();\r\n \r\n  for (let idx = 0; idx < CHANNELS.length; idx++) {\r\n    const ch = CHANNELS[idx];\r\n    const g = dark;\r\n      \/\/? Math.round(120 + ch.gray * 120)\r\n      \/\/: Math.round(20  + ch.gray * 160);\r\n    const col = `${g},${g},${g}`;\r\n    let lastY = midY;\r\n \r\n    ctx.beginPath();\r\n    ctx.strokeStyle = `rgba(${col},0.5)`;\r\n    ctx.lineWidth = devicePixelRatio;\r\n \r\n    for (let s = 0; s <= STEPS; s++) {\r\n      const xNorm = s \/ STEPS;\r\n      const x = xNorm * (W - PAD);\r\n      const v = sampleWave(ch, idx, xNorm);\r\n      const y = midY - v * amp;\r\n      if (s === STEPS) lastY = y;\r\n      s === 0 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);\r\n    }\r\n    ctx.stroke();\r\n \r\n    ctx.font = `${10 * devicePixelRatio}px monospace`;\r\n    ctx.fillStyle = `rgba(${col},0.6)`;\r\n    ctx.textAlign = 'left';\r\n    ctx.fillText(ch.label, W - PAD + 8 * devicePixelRatio, lastY + 3.5 * devicePixelRatio);\r\n  }\r\n \r\n  requestAnimationFrame(loop);\r\n}\r\n \r\nwindow.addEventListener('resize', init);\r\ninit();\r\nloop();\t\t} )();\n\t\t<\/script>\n\t\n<\/div>\n\n\n<div class=\"section-wrapper \" style=\"--color-text: #111111; --color-back: #f0ede6\">\n\t<div class=\"senti-section wp-block-senti-blocks-senti-section\">\n\n\t\t<div class=\"senti-section__background\">\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<canvas id=\"senti-canvas-111-6a2086805a46e018400345\" class=\"senti-section__canvas\" aria-hidden=\"true\"><\/canvas>\n\t\t\n\t\t<div class=\"senti-section__inner\">\n\n\t\t\t\t\t\t\t<p class=\"senti-section__context\">02 - DISE\u00d1AMOS<\/p>\n\t\t\t\n\t\t\t\t\t\t\t<h2 class=\"senti-section__title\">Construimos desde principios del comportamiento humano,<\/h2>\n\t\t\t\n\t\t\t\t\t\t\t<h3 class=\"senti-section__subtitle\">no desde tendencias.<\/h3>\n\t\t\t\n\t\t\t\n\t\t\t<div class=\"senti-section__body\">\n\t\t\t\t\n\n<p class=\"wp-block-paragraph\">Dise\u00f1amos rituales, experiencias, activaciones, eventos o productos aplicando principios cognitivos universales. Desde la conceptualizaci\u00f3n estrat\u00e9gica hasta el protocolo operativo.<br>Prototipamos y contrastamos que la percepci\u00f3n dise\u00f1ada coincide con la percepci\u00f3n real a trav\u00e9s de biometr\u00eda y los m\u00e9todos m\u00e1s adecuados para cada caso.<\/p>\n\n\t\t\t<\/div>\n\n\t\t<\/div>\n\t<\/div>\n\n\t\t\t<script>\n\t\t( function () {\n\t\t\tvar __el = document.getElementById( 'senti-canvas-111-6a2086805a46e018400345' );\n\t\t\tif ( ! __el ) return;\n\t\t\tconst canvas = __el;\r\nconst ctx = canvas.getContext('2d');\r\nlet W, H;\r\n \r\nfunction isDark() { return window.matchMedia('(prefers-color-scheme: dark)').matches; }\r\n \r\nlet freqScale = 1;\r\n\r\nfunction init() {\r\n  W = canvas.width  = window.innerWidth  * devicePixelRatio;\r\n  H = canvas.height = window.innerHeight * devicePixelRatio;\r\n  canvas.style.width  = window.innerWidth  + 'px';\r\n  canvas.style.height = window.innerHeight + 'px';\r\n  freqScale = Math.min(1, window.innerWidth \/ 900);\r\n}\r\n \r\nlet t = 0;\r\n \r\nfunction loop() {\r\n  ctx.clearRect(0, 0, W, H);\r\n  t += 0.018;\r\n \r\n  const dark = isDark();\r\n  const g = dark ? 150 : 80;\r\n  const col = `${g},${g},${g}`;\r\n  const midY = H \/ 2;\r\n  const STEPS = Math.floor(W \/ devicePixelRatio);\r\n \r\n  ctx.beginPath();\r\n  ctx.strokeStyle = `rgba(${g},${g},${g},0.35)`;\r\n  ctx.lineWidth = 1.2 * devicePixelRatio;\r\n  ctx.moveTo(0, midY);\r\n  ctx.lineTo(W, midY);\r\n  ctx.stroke();\r\n \r\n  ctx.beginPath();\r\n  ctx.strokeStyle = `rgba(${col},0.7)`;\r\n  ctx.lineWidth = devicePixelRatio;\r\n \r\n  for (let s = 0; s <= STEPS; s++) {\r\n    const xNorm = s \/ STEPS;\r\n    const x = xNorm * W;\r\nconst envelope = Math.sin(xNorm * Math.PI * 1.4 * freqScale + t * 0.4) * 0.5 + 0.5;\r\nconst wave = Math.sin(xNorm * Math.PI * 8 * freqScale + t * 2.4);\r\n    const y = midY - wave * envelope * H * 0.38;\r\n    s === 0 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);\r\n  }\r\n  ctx.stroke();\r\n \r\n  requestAnimationFrame(loop);\r\n}\r\n \r\nwindow.addEventListener('resize', init);\r\ninit();\r\nloop();\t\t} )();\n\t\t<\/script>\n\t\n<\/div>\n\n\n<div class=\"section-wrapper \" style=\"--color-text: #111111; --color-back: #f0ede6\">\n\t<div class=\"senti-section wp-block-senti-blocks-senti-section\">\n\n\t\t<div class=\"senti-section__background\">\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<canvas id=\"senti-canvas-113-6a2086805a7e0433234307\" class=\"senti-section__canvas\" aria-hidden=\"true\"><\/canvas>\n\t\t\n\t\t<div class=\"senti-section__inner\">\n\n\t\t\t\t\t\t\t<p class=\"senti-section__context\">03 - SISTEMATIZAMOS<\/p>\n\t\t\t\n\t\t\t\t\t\t\t<h2 class=\"senti-section__title\">Convertimos la experiencia en un activo estrat\u00e9gico <\/h2>\n\t\t\t\n\t\t\t\t\t\t\t<h3 class=\"senti-section__subtitle\">de marca, replicable y escalable, que genera valor.<\/h3>\n\t\t\t\n\t\t\t\n\t\t\t<div class=\"senti-section__body\">\n\t\t\t\t\n\n<p class=\"wp-block-paragraph\">Medimos su evoluci\u00f3n en el tiempo y ajustamos cuando los datos lo indican.<br>No dise\u00f1amos experiencias aisladas. Dise\u00f1amos sistemas que dan forma a la percepci\u00f3n.<\/p>\n\n\t\t\t<\/div>\n\n\t\t<\/div>\n\t<\/div>\n\n\t\t\t<script>\n\t\t( function () {\n\t\t\tvar __el = document.getElementById( 'senti-canvas-113-6a2086805a7e0433234307' );\n\t\t\tif ( ! __el ) return;\n\t\t\tconst canvas = __el;\r\nconst ctx = canvas.getContext('2d');\r\nlet W, H, t = 0;\r\n\r\nfunction isDark() { return window.matchMedia('(prefers-color-scheme: dark)').matches; }\r\n\r\nconst CHANNELS = [\r\n  { label: 'EEG \u03b1', baseFreq: 2.1,  envFreq: 0.55, envSpeed: 0.35, speed: 1.8,  noise: 0.07, noiseSpeed: 1.1, gray: 0.75 },\r\n  { label: 'EEG \u03b2', baseFreq: 5.3,  envFreq: 0.80, envSpeed: 0.50, speed: 3.1,  noise: 0.05, noiseSpeed: 1.8, gray: 0.55 },\r\n  { label: 'GSR',   baseFreq: 1.0,  envFreq: 0.40, envSpeed: 0.22, speed: 0.9,  noise: 0.04, noiseSpeed: 0.6, gray: 0.35 },\r\n  { label: 'BVP',   baseFreq: 3.5,  envFreq: 0.70, envSpeed: 0.60, speed: 2.2,  noise: 0.06, noiseSpeed: 0.9, gray: 0.15 },\r\n];\r\n\r\nconst phaseOffsets    = CHANNELS.map(() => Math.random() * Math.PI * 2);\r\nconst envPhaseOffsets = CHANNELS.map(() => Math.random() * Math.PI * 2);\r\nconst noiseSeeds      = CHANNELS.map(() => Array.from({length: 256}, () => (Math.random() - 0.5)));\r\n\r\nfunction smoothNoise(seed, x) {\r\n  const i = Math.floor(x);\r\n  const f = x - i;\r\n  const s = f * f * (3 - 2 * f);\r\n  return seed[i & 255] * (1 - s) + seed[(i + 1) & 255] * s;\r\n}\r\n\r\nlet freqScale = 1;\r\n\r\nfunction init() {\r\n  const dpr = devicePixelRatio || 1;\r\n  W = canvas.width  = window.innerWidth  * dpr;\r\n  H = canvas.height = window.innerHeight * dpr;\r\n  canvas.style.width  = window.innerWidth  + 'px';\r\n  canvas.style.height = window.innerHeight + 'px';\r\n\r\n  \/\/ Scale frequencies so mobile shows fewer, wider cycles\r\n  freqScale = Math.min(1, window.innerWidth \/ 900);\r\n}\r\n\r\nfunction loop() {\r\n  ctx.clearRect(0, 0, W, H);\r\n  t += 0.016;\r\n\r\n  const dark = isDark();\r\n  const dpr  = devicePixelRatio || 1;\r\n  const midY = H \/ 2;\r\n  const amp  = H * 0.34;\r\n  const PAD  = 52 * dpr;\r\n  const STEPS = Math.floor(W \/ dpr);\r\n\r\n  const refGray = dark ? 220 : 40;\r\n  ctx.beginPath();\r\n  ctx.strokeStyle = `rgba(${refGray},${refGray},${refGray},0.25)`;\r\n  ctx.lineWidth = 0.8 * dpr;\r\n  ctx.moveTo(0, midY);\r\n  ctx.lineTo(W, midY);\r\n  ctx.stroke();\r\n\r\n  for (let idx = 0; idx < CHANNELS.length; idx++) {\r\n    const ch = CHANNELS[idx];\r\n    const gv = dark\r\n      ? Math.round(120 + ch.gray * 120)\r\n      : Math.round(20  + ch.gray * 160);\r\n    const col = `${gv},${gv},${gv}`;\r\n    let lastY = midY;\r\n\r\n    ctx.beginPath();\r\n    ctx.strokeStyle = `rgba(${col},0.65)`;\r\n    ctx.lineWidth = dpr;\r\n\r\n    for (let s = 0; s <= STEPS; s++) {\r\n      const xNorm = s \/ STEPS;\r\n      const x = xNorm * (W - PAD);\r\n\r\nconst env  = Math.sin(xNorm * Math.PI * ch.envFreq * 2 * freqScale + t * ch.envSpeed + envPhaseOffsets[idx]) * 0.5 + 0.5;\r\nconst wave = Math.sin(xNorm * Math.PI * ch.baseFreq * 2 * freqScale + t * ch.speed + phaseOffsets[idx]);\r\n      const n    = smoothNoise(noiseSeeds[idx], xNorm * 12 + t * ch.noiseSpeed) * ch.noise;\r\n      const v    = wave * env + n * (env * 0.7 + 0.3);\r\n\r\n      const y = midY - v * amp;\r\n      if (s === STEPS) lastY = y;\r\n      s === 0 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);\r\n    }\r\n    ctx.stroke();\r\n\r\n    ctx.font = `${10 * dpr}px monospace`;\r\n    ctx.fillStyle = `rgba(${col},0.6)`;\r\n    ctx.textAlign = 'left';\r\n    ctx.fillText(ch.label, W - PAD + 8 * dpr, lastY + 3.5 * dpr);\r\n  }\r\n\r\n  requestAnimationFrame(loop);\r\n}\r\n\r\nwindow.addEventListener('resize', init);\r\ninit();\r\nloop();\t\t} )();\n\t\t<\/script>\n\t\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-22","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/wearesenti.com\/en\/wp-json\/wp\/v2\/pages\/22","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wearesenti.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wearesenti.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wearesenti.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/wearesenti.com\/en\/wp-json\/wp\/v2\/comments?post=22"}],"version-history":[{"count":20,"href":"https:\/\/wearesenti.com\/en\/wp-json\/wp\/v2\/pages\/22\/revisions"}],"predecessor-version":[{"id":294,"href":"https:\/\/wearesenti.com\/en\/wp-json\/wp\/v2\/pages\/22\/revisions\/294"}],"wp:attachment":[{"href":"https:\/\/wearesenti.com\/en\/wp-json\/wp\/v2\/media?parent=22"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}