PageSourceSearch

https://blendification.com/

html blendification.com collected 2026-10-04 11:00:00 UTC 11,491 bytes, 242 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" translate="no">
3  <head>
4    <meta charset="UTF-8" />
5    <link rel="icon" type="image/png" href="/favicon.png">
6    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7    <title>Blendification | Human and Business Intelligence Platform</title>
8    <meta name="description" data-rh="true" content="Blendification connects human intelligence with enterprise data through adaptive AI conversations, research-grade analytics, and interactive Live Slides.">
9    <meta name="author" content="Blendification" />
10    <meta name="robots" data-rh="true" content="index,follow" />
11    <!-- Canonical is emitted per route by <Seo /> so it always self-references. -->
12    <meta property="og:url" data-rh="true" content="https://blendification.com/" />
13    <meta property="og:site_name" data-rh="true" content="Blendification" />
14    <meta property="og:type" data-rh="true" content="website" />
15    <meta property="og:image" content="https://storage.googleapis.com/gpt-engineer-file-uploads/attachments/og-images/65c0e1ab-2624-4143-bd00-2b2f74b18239">
16
17    <meta name="twitter:card" data-rh="true" content="summary_large_image" />
18    <meta name="twitter:image" content="https://storage.googleapis.com/gpt-engineer-file-uploads/attachments/og-images/65c0e1ab-2624-4143-bd00-2b2f74b18239">
19
20    <link rel="preconnect" href="https://fonts.googleapis.com" />
21    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
22    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Manrope:wght@600;700;800&family=Instrument+Serif:ital@0;1&display=swap" rel="stylesheet" />
23    <meta property="og:title" data-rh="true" content="Blendification | Human and Business Intelligence Platform">
24  <meta name="twitter:title" data-rh="true" content="Blendification | Human and Business Intelligence Platform">
25  <meta property="og:description" data-rh="true" content="Blendification connects human intelligence with enterprise data through adaptive AI conversations, research-grade analytics, and interactive Live Slides.">
26  <meta name="twitter:description" data-rh="true" content="Blendification connects human intelligence with enterprise data through adaptive AI conversations, research-grade analytics, and interactive Live Slides.">
27  
27<script type="module" crossorigin src="/assets/index-Cysi6ppR.js"></script>
27
28  <link rel="stylesheet" crossorigin href="/assets/index-BFXnpRES.css">
29<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
29</head>
30
31  <body>
32    <div id="root"></div>
33
34    <!-- Visitor Analytics -->
35    
35<script>
36    (function(){
37      var SITE_ID = "b82e312e-f167-4792-a383-d8e427f8ad14";
38      var INGEST  = "https://kcpagaezygnefzbgnjoo.supabase.co/functions/v1/ingest-event";
39      var APIKEY  = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImtjcGFnYWV6eWduZWZ6Ymduam9vIiwicm9sZSI6ImFub24iLCJpYXQiOjE3Nzg3MjA5MzEsImV4cCI6MjA5NDI5NjkzMX0.1g-yOj5tjrVkpQ5ifmZN_EyEuThrc3_9uVuS6wALghw";
40      var SK = '__va_sid';
41      var VK = '__va_vid';
42      var IK = '__va_ident';
43      function uuid(){
44        if (window.crypto && crypto.randomUUID) return crypto.randomUUID();
45        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c){
46          var r=Math.random()*16|0,v=c==='x'?r:(r&0x3|0x8);return v.toString(16);
47        });
48      }
49      function sid(){
50        try {
51          var s = sessionStorage.getItem(SK);
52          if (!s) { s = uuid(); sessionStorage.setItem(SK, s); }
53          return s;
54        } catch(e){ return uuid(); }
55      }
56      function vid(){
57        try {
58          var v = localStorage.getItem(VK);
59          if (!v) { v = uuid(); localStorage.setItem(VK, v); }
60          return v;
61        } catch(e){ return uuid(); }
62      }
63      function getIdent(){
64        try { return JSON.parse(localStorage.getItem(IK) || 'null'); } catch(e){ return null; }
65      }
66      function setIdent(obj){
67        try { localStorage.setItem(IK, JSON.stringify(obj)); } catch(e){}
68      }
69      function normUrl(u){
70        try {
71          var url = new URL(u, location.href);
72          var path = url.pathname || '/';
73          if (path.length > 1 && path.charAt(path.length-1) === '/') path = path.slice(0,-1);
74          return url.protocol.toLowerCase() + '//' + url.hostname.toLowerCase() + path;
75        } catch(e){ return u; }
76      }
77      function device(){
78        var w = window.innerWidth || 1024;
79        if (w < 640) return 'mobile';
80        if (w < 1024) return 'tablet';
81        return 'desktop';
82      }
83      function utm(){
84        var p = new URLSearchParams(location.search), o = {};
85        ['source','medium','campaign','term','content'].forEach(function(k){
86          var v = p.get('utm_'+k); if (v) o['utm_'+k] = v;
87        });
88        return o;
89      }
90      function docDims(){
91        var d = document.documentElement, b = document.body || {};
92        return {
93          w: Math.max(d.scrollWidth||0, d.clientWidth||0, b.scrollWidth||0),
94          h: Math.max(d.scrollHeight||0, d.clientHeight||0, b.scrollHeight||0)
95        };
96      }
97      function layoutSig(){
98        try {
99          var dims = docDims();
100          return [
101            document.querySelectorAll('a').length,
102            document.querySelectorAll('button').length,
103            document.querySelectorAll('img').length,
104            document.querySelectorAll('form').length,
105            document.querySelectorAll('section,article,header,footer,nav').length,
106            Math.round(dims.h / 200)
107          ].join('.');
108        } catch(e){ return null; }
109      }
110      var ctx = {
111        tracking_site_id: SITE_ID,
112        session_id: sid(),
113        visitor_id: vid(),
114        page_url: normUrl(location.href),
115        page_path: location.pathname,
116        referrer: document.referrer || null,
117        device_type: device(),
118        user_agent: navigator.userAgent
119      };
120      Object.assign(ctx, utm());
121      var DEBUG = false;
122      try {
123        if (/[?&]va_debug=1\b/.test(location.search)) {
124          sessionStorage.setItem('__va_debug', '1');
125        }
126        if (sessionStorage.getItem('__va_debug') === '1') DEBUG = true;
127        if (localStorage.getItem('__va_debug') === '1') DEBUG = true;
128      } catch(e){}
129      if (window.va && window.va.debug === true) DEBUG = true;
130      function log(){
131        if (!DEBUG || !window.console) return;
132        try { console.log.apply(console, ['[va]'].concat([].slice.call(arguments))); } catch(e){}
133      }
134      log('init', { site_id: SITE_ID, ingest: INGEST });
135      function send(event_type, metadata){
136        var ident = getIdent();
137        var md = metadata || {};
138        if (ident && ident.email && !md.email) md.email = ident.email;
139        if (ident && ident.name && !md.name) md.name = ident.name;
140        var body = JSON.stringify(Object.assign({}, ctx, {
141          event_type: event_type,
142          metadata: md
143        }));
144        log('send', event_type, md);
145        try {
146          if (navigator.sendBeacon) {
147            var blob = new Blob([body], { type: 'application/json' });
148            if (navigator.sendBeacon(INGEST, blob)) {
149              log('beacon queued', event_type);
150              return;
151            }
152            log('beacon refused, falling back to fetch', event_type);
153          }
154        } catch(e){ log('beacon threw', e && e.message); }
155        fetch(INGEST, {
156          method: 'POST',
157          headers: { 'Content-Type': 'application/json', 'apikey': APIKEY },
158          body: body,
159          keepalive: true
160        }).then(function(r){ log('fetch', event_type, r.status); })
161          .catch(function(e){ log('fetch failed', event_type, e && e.message); });
162      }
163      function identify(email, traits){
164        if (!email) return;
165        var ident = { email: String(email).toLowerCase() };
166        if (traits && typeof traits === 'object') {
167          if (traits.name) ident.name = String(traits.name);
168          if (traits.phone) ident.phone = String(traits.phone);
169        }
170        setIdent(ident);
171        send('identify', ident);
172      }
173      function sendPageView(){
174        var dims = docDims();
175        send('page_view', { doc_w: dims.w, doc_h: dims.h, layout_sig: layoutSig() });
176      }
177      if (document.readyState === 'complete') sendPageView();
178      else window.addEventListener('load', function(){ setTimeout(sendPageView, 250); });
179      var pageStart = Date.now();
180      function flushTime(){
181        var secs = Math.round((Date.now() - pageStart) / 1000);
182        if (secs > 1) send('page_time', { seconds: secs });
183      }
184      window.addEventListener('pagehide', flushTime);
185      window.addEventListener('beforeunload', flushTime);
186      var maxDepth = 0, scrollTimer = null;
187      window.addEventListener('scroll', function(){
188        var h = document.documentElement;
189        var scrolled = (h.scrollTop || document.body.scrollTop);
190        var height = (h.scrollHeight || document.body.scrollHeight) - h.clientHeight;
191        var pct = height > 0 ? Math.round((scrolled / height) * 100) : 0;
192        if (pct > maxDepth) maxDepth = pct;
193        if (scrollTimer) clearTimeout(scrollTimer);
194        scrollTimer = setTimeout(function(){ send('scroll', { depth_pct: maxDepth }); }, 800);
195      }, { passive: true });
196      document.addEventListener('click', function(e){
197        var t = e.target;
198        while (t && t !== document.body) {
199          if (t.tagName === 'A' || t.tagName === 'BUTTON') {
200            var dims = docDims();
201            var d = document.documentElement;
202            var px = e.pageX != null ? e.pageX : e.clientX + (d.scrollLeft || 0);
203            var py = e.pageY != null ? e.pageY : e.clientY + (d.scrollTop || 0);
204            send('click', {
205              tag: t.tagName.toLowerCase(),
206              text: (t.innerText || '').slice(0, 80),
207              href: t.href || null,
208              x_pct: Math.round((e.clientX / window.innerWidth) * 100),
209              y_pct: Math.round((e.clientY / window.innerHeight) * 100),
210              page_x_pct: dims.w > 0 ? Math.round((px / dims.w) * 1000) / 10 : null,
211              page_y_pct: dims.h > 0 ? Math.round((py / dims.h) * 1000) / 10 : null,
212              doc_w: dims.w,
213              doc_h: dims.h
214            });
215            return;
216          }
217          t = t.parentNode;
218        }
219      }, true);
220      document.addEventListener('submit', function(e){
221        var f = e.target; if (!f || !f.elements) return;
222        var data = {}, email = null, name = null, phone = null;
223        for (var i = 0; i < f.elements.length; i++) {
224          var el = f.elements[i];
225          if (!el.name || el.type === 'password') continue;
226          var v = (el.value || '').toString().slice(0, 200);
227          if (!v) continue;
228          data[el.name] = v;
229          var lname = el.name.toLowerCase();
230          if (!email && (el.type === 'email' || lname.indexOf('email') >= 0)) email = v;
231          if (!name && (lname === 'name' || lname.indexOf('full') >= 0 || lname.indexOf('first') >= 0)) name = v;
232          if (!phone && (el.type === 'tel' || lname.indexOf('phone') >= 0)) phone = v;
233        }
234        if (email) identify(email, { name: name, phone: phone });
235        send('form_submit', { form_data: data, email: email, name: name, phone: phone });
236      }, true);
237      window.va = { track: send, identify: identify, debug: DEBUG };
238      window.__va = { track: send, identify: identify };
239    })();
240    </script>
240
241  </body>
242</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.