Scale your brand with better strategy.

Build a brand that actually works.

AS FEATURED IN:

Work With Camille Moore

Real Business Owners. Real Results.

Why Brands Work With Camille

Thousands of founders, CMOs, and creators have restructured their brands through my agency, tools, and teachings. I offer a blunt, no-nonsense approach.

If you want to be the next big brand,  let’s talk.

Camille's Signature Frameworks.

Camille's three signature frameworks have transformed brands of all sizes, ranging from all industries. Her frameworks are accesible through her masterclass, speaking engagements, cohorts, and more.

Brands grow in three stages– they move from “a brand” to “a good brand” to “a great brand”. These three levels of a brand are relevant for understanding where your current pain points are and what’s needed to graduate to the ultimate level of branding.

Strong brands are comprised of four core pillars, which include: Product. Story. Experience and Consistency. Most brands fail to focus on all four core pillars– if you miss one of these pillars, you will never have a great brand.

Most brands don’t make a proverbial Bud Light mistake. Instead, they make thousands of small brand mistakes, that overtime start to take a brand off track. The tiny wrong moves start to erode your brand’s trust, perception, and overall performance, leading to a dissociation with your core customers over time. I will teach you how to avoid the brand death by a 1000 cuts issues so that you can build a brand that lasts.

These frameworks are the foundation of my upcoming book, my agency, and the transformation I’ve led for hundreds of clients, brands, influencers and creators. If you are serious about branding, you have come to the right place.

Camille Moore giving a lecture

Speaking & Keynotes

Camille is an in-demand speaker trusted by major brands like Netflix, RedBull, the Skinny Confidential and Foundr to deliver sharp, tactical insights on branding (personal and business), creating content, navigating social media and more.

Whether on stage or in workshops, Camille brings a fresh perspective, interesting insights and clear frameworks that stick.

Available on Spotify, Apple, and YouTube.

Branding With Benefits

Get the free weekly newsletter giving thousands of founders, creators, and CMOs the insights and competitive edge needed to get their brand ahead.

TEI Full Logo

If they had a great campaign, they probably hired us.

Third Eye Insights is a strategic, boutique agency that does branding differently. We specialize in helping premium brands sharpen their positioning, scale with intention, and avoid the cash BBQ that is most marketing. If you want strategy done differently, reach out to us today.

Camille Moore and Phillip Millars shoulder to shoulder

This Is Your Reminder

Your brand isn’t your logo. It’s not your colors.

It’s how people feel when they find you, and whether they trust you enough to buy, tell a friend, or come back again.

Let’s make your brand unforgettable.

Social Media Cohort

The current cohort is officially full! But don't worry—we’re already planning the next one. Drop your email below to get early access before we announce it to the public.

Camille Moore

SHARE @CAMILLEMOORE'S LINKS

Share on Facebook

Share on LinkedIn

Share on Twitter

Share on WhatsApp

Share on Messenger

Share via Email

(function () { 'use strict';function smoothStep(a, b, t) { t = Math.max(0, Math.min(1, (t - a) / (b - a))); return t * t * (3 - 2 * t); } function vecLen(x, y) { return Math.sqrt(x * x + y * y); } function roundedRectSDF(x, y, w, h, r) { const qx = Math.abs(x) - w + r; const qy = Math.abs(y) - h + r; return Math.min(Math.max(qx, qy), 0) + vecLen(Math.max(qx, 0), Math.max(qy, 0)) - r; }let counter = 0;class LensGlass { constructor(el) { this.el = el; this.id = 'lgs-' + (++counter); this._build(); this._update(); }_build() { // --- Displacement canvas (hidden) --- this.dispCanvas = document.createElement('canvas'); this.dispCanvas.style.display = 'none'; this.dispCtx = this.dispCanvas.getContext('2d');// --- Visible canvas (rendered INSIDE the element as bg) --- this.lensCanvas = document.createElement('canvas'); Object.assign(this.lensCanvas.style, { position: 'absolute', inset: '0', width: '100%', height: '100%', borderRadius: 'inherit', pointerEvents: 'none', zIndex: '0', });// --- SVG filter that reads from displacement canvas --- this.svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); Object.assign(this.svg.style, { position: 'absolute', width: '0', height: '0', overflow: 'hidden', pointerEvents: 'none', }); const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs'); const filter = document.createElementNS('http://www.w3.org/2000/svg', 'filter'); filter.setAttribute('id', this.id + '_f'); filter.setAttribute('filterUnits', 'userSpaceOnUse'); filter.setAttribute('colorInterpolationFilters', 'sRGB'); filter.setAttribute('x', '0'); filter.setAttribute('y', '0');this.feImg = document.createElementNS('http://www.w3.org/2000/svg', 'feImage'); this.feImg.setAttribute('id', this.id + '_map'); this.feDisp = document.createElementNS('http://www.w3.org/2000/svg', 'feDisplacementMap'); this.feDisp.setAttribute('in', 'SourceGraphic'); this.feDisp.setAttribute('in2', this.id + '_map'); this.feDisp.setAttribute('xChannelSelector', 'R'); this.feDisp.setAttribute('yChannelSelector', 'G');filter.appendChild(this.feImg); filter.appendChild(this.feDisp); defs.appendChild(filter); this.svg.appendChild(defs);// Inject into DOM document.body.appendChild(this.dispCanvas); this.el.appendChild(this.svg); this.el.appendChild(this.lensCanvas);// Ensure el is positioned const pos = getComputedStyle(this.el).position; if (pos === 'static') this.el.style.position = 'relative'; this.el.style.overflow = 'hidden'; }_buildDisplacementMap(w, h) { const scale = Math.min(1, 400 / Math.max(w, h)); const cw = Math.round(w * scale); const ch = Math.round(h * scale);this.dispCanvas.width = cw; this.dispCanvas.height = ch;const bezel = 0.13; const hw = 0.5 - bezel; const hh = 0.5 - bezel; const rad = bezel * 0.9; const data = new Uint8ClampedArray(cw * ch * 4); const raw = []; let maxS = 0;for (let i = 0; i < data.length; i += 4) { const px = (i / 4) % cw; const py = Math.floor(i / 4 / cw); const ix = px / cw - 0.5; const iy = py / ch - 0.5; const d = roundedRectSDF(ix, iy, hw, hh, rad); const di = smoothStep(0.8, 0, d - 0.15); const sc = smoothStep(0, 1, di); const dx = (ix * sc + 0.5) * cw - px; const dy = (iy * sc + 0.5) * ch - py; maxS = Math.max(maxS, Math.abs(dx), Math.abs(dy)); raw.push(dx, dy); }maxS *= 0.5; let idx = 0; for (let i = 0; i < data.length; i += 4) { data[i] = (raw[idx++] / maxS + 0.5) * 255; data[i + 1] = (raw[idx++] / maxS + 0.5) * 255; data[i + 2] = 0; data[i + 3] = 255; }this.dispCtx.putImageData(new ImageData(data, cw, ch), 0, 0);const filter = this.svg.querySelector('filter'); filter.setAttribute('width', w.toString()); filter.setAttribute('height', h.toString()); this.feImg.setAttribute('width', cw.toString()); this.feImg.setAttribute('height', ch.toString()); this.feImg.setAttributeNS( 'http://www.w3.org/1999/xlink', 'href', this.dispCanvas.toDataURL() ); this.feDisp.setAttribute('scale', (maxS / scale).toString()); }async _captureBackground(rect) { // Temporarily hide the element so it doesn't appear in its own screenshot this.el.style.opacity = '0';return new Promise(resolve => { // html2canvas captures the area behind the element html2canvas(document.body, { x: rect.left + window.scrollX, y: rect.top + window.scrollY, width: rect.width, height: rect.height, scale: 1, useCORS: true, allowTaint: true, logging: false, }).then(capture => { this.el.style.opacity = ''; resolve(capture); }).catch(() => { this.el.style.opacity = ''; resolve(null); }); }); }async _update() { const rect = this.el.getBoundingClientRect(); const w = Math.round(rect.width); const h = Math.round(rect.height); if (!w || !h) return;this.lensCanvas.width = w; this.lensCanvas.height = h;this._buildDisplacementMap(w, h);// Capture background snapshot const bgCapture = await this._captureBackground(rect);const lctx = this.lensCanvas.getContext('2d'); lctx.clearRect(0, 0, w, h);if (bgCapture) { // Draw the captured bg into an offscreen canvas const offscreen = document.createElement('canvas'); offscreen.width = w; offscreen.height = h; const octx = offscreen.getContext('2d'); octx.drawImage(bgCapture, 0, 0, w, h);// Apply displacement pixel-by-pixel to simulate refraction const srcData = octx.getImageData(0, 0, w, h); const dispData = this.dispCtx.getImageData( 0, 0, this.dispCanvas.width, this.dispCanvas.height ); const dstData = lctx.createImageData(w, h);const dw = this.dispCanvas.width; const dh = this.dispCanvas.height; const strength = Math.min(w, h) * 0.18; // refraction strengthfor (let y = 0; y < h; y++) { for (let x = 0; x < w; x++) { // Sample displacement map (scaled) const dx = Math.floor(x / w * dw); const dy = Math.floor(y / h * dh); const di = (dy * dw + dx) * 4; const rx = ((dispData.data[di] / 255) - 0.5) * strength; const ry = ((dispData.data[di + 1] / 255) - 0.5) * strength;// Displaced source coords const sx = Math.max(0, Math.min(w - 1, Math.round(x + rx))); const sy = Math.max(0, Math.min(h - 1, Math.round(y + ry)));const si = (sy * w + sx) * 4; const ti = (y * w + x) * 4;// Only paint pixels inside the SDF shape (edge mask) const ix = x / w - 0.5; const iy = y / h - 0.5; const bezel = 0.13; const d = roundedRectSDF(ix, iy, 0.5 - bezel, 0.5 - bezel, bezel * 0.9); const alpha = smoothStep(0.02, -0.02, d) * 255;dstData.data[ti] = srcData.data[si]; dstData.data[ti + 1] = srcData.data[si + 1]; dstData.data[ti + 2] = srcData.data[si + 2]; dstData.data[ti + 3] = alpha; } }lctx.putImageData(dstData, 0, 0);// Tint: slight white glaze over the refracted background lctx.fillStyle = 'rgba(255,255,255,0.08)'; lctx.fillRect(0, 0, w, h); }// Remove backdrop-filter — the canvas IS the background now this.el.style.backdropFilter = 'none'; this.el.style.webkitBackdropFilter = 'none'; }destroy() { this.svg.remove(); this.lensCanvas.remove(); this.dispCanvas.remove(); } }// Load html2canvas then init function loadScript(src, cb) { if (document.querySelector(`script[src="${src}"]`)) { cb(); return; } const s = document.createElement('script'); s.src = src; s.onload = cb; document.head.appendChild(s); }const instances = [];function init() { instances.forEach(i => i.destroy()); instances.length = 0; document.querySelectorAll('.glass, .glass-dark, .glass-nav, .glass-pill') .forEach(el => instances.push(new LensGlass(el))); }function run() { loadScript( 'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js', () => setTimeout(init, 500) ); }if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', run); } else { run(); }})();