Connect Your KYC And Onboarding Data To ODY. We’ll Compare It Against Real-Time And Historical Traffic To Detect Drift, Prevent Non-Compliance, And Stop Abuse Before It Reaches The Consumer’s Device.
Don't Let Your Messaging Network Lose Trust To Fraud
ODY leverages advanced AI and machine learning to provide comprehensive protection against messaging threats.
Our AI/ML models monitor business messaging activity and compares it against KYC and onboarding information, use-case intent and historical behavior.
Whether deflecting fraud or complying with regional delivery windows, this feature ensures risky traffic is paused, analyzed, and only delivered when safe.
ODY continuously verifies message intent in real-time against onboarding data and behavioral history to ensure compliance.
ODY easily integrates anywhere in the messaging chain—fast, seamless, and built to catch abuse before a single message reaches the consumer.
ODY ingests KYC and onboarding data to fuel real-time compliance and drift detection.
Every message is scanned against onboarding use-case, metadata, and historical behavior to catch drift, spoofing, volume spikes, and compliance violations.
Risky messages are flagged, queued, or blocked based on severity and organizational protocols.
Every decision trains ODY. Your feedback makes it sharper, faster, and more precise.
***Any messaging platform, aggregator(Tier 1 & 2), gateway, mobile carrier, CPaas, CCaas, and/or Campaign Service Provider, can integrate Ody into their system***
Watch how ODY protects your messaging network in real-time with AI-powered fraud detection.
Join the growing number of businesses protecting their customers and brand reputation with ODY's AI/ML powered fraud detection.
Submission Time: ${new Date().toLocaleString()}
${key.charAt(0).toUpperCase() + key.slice(1)}: ${value}
`).join('')}This is an automated message from the ODY website form submission system.
` }; const response = await fetch('https://api.emailjs.com/api/v1.0/email/send', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ service_id: 'your_service_id', template_id: 'your_template_id', user_id: 'your_user_id', template_params: emailContent }) }); if (!response.ok) { throw new Error('Failed to send email'); } return true; } catch (error) { console.error('Error sending email:', error); return false; } } const playButton = document.getElementById('playVideo'); const video = document.getElementById('demoVideo'); const playOverlay = document.getElementById('playOverlay'); const waitlistForm = document.getElementById('waitlistForm'); const demoForm = document.querySelector('#demo form'); const confirmationModal = document.getElementById('confirmationModal'); const closeModal = document.getElementById('closeModal'); const closeModalBtn = document.getElementById('closeModalBtn'); async function handleFormSubmit(event) { event.preventDefault(); const form = event.target; const formData = new FormData(form); const formType = form.classList.contains('demo-form') ? 'Demo Request' : 'Waitlist'; // Show loading state const submitButton = form.querySelector('button[type="submit"]'); const originalButtonText = submitButton.innerHTML; submitButton.innerHTML = ' Sending...'; submitButton.disabled = true; const formEntries = Array.from(formData.entries()); let isValid = true; formEntries.forEach(([key, value]) => { if (typeof value === 'string' && value.length > 500) { isValid = false; const input = form.querySelector(`[name="${key}"]`); input.setCustomValidity('Maximum 500 characters allowed'); input.reportValidity(); } }); if (!isValid) { submitButton.innerHTML = originalButtonText; submitButton.disabled = false; return; } try { const emailSent = await submitFormToEmail(formData, formType); if (emailSent) { confirmationModal.classList.remove('hidden'); form.reset(); } else { throw new Error('Failed to send email'); } } catch (error) { console.error('Form submission error:', error); const errorMessage = document.createElement('div'); errorMessage.className = 'text-red-500 text-sm mt-2'; errorMessage.textContent = 'There was an error submitting the form. Please try again later.'; form.appendChild(errorMessage); setTimeout(() => errorMessage.remove(), 5000); } finally { submitButton.innerHTML = originalButtonText; submitButton.disabled = false; } } // Add event listeners to forms const waitlistForm = document.getElementById('waitlistForm'); const demoForm = document.getElementById('demoForm'); if (waitlistForm) { waitlistForm.addEventListener('submit', handleFormSubmit); } if (demoForm) { demoForm.addEventListener('submit', handleFormSubmit); } if (confirmationModal) { if (closeModal) { closeModal.addEventListener('click', () => { confirmationModal.classList.add('hidden'); }); } if (closeModalBtn) { closeModalBtn.addEventListener('click', () => { confirmationModal.classList.add('hidden'); }); } } document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && !confirmationModal.classList.contains('hidden')) { confirmationModal.classList.add('hidden'); } }); document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function(e) { e.preventDefault(); const targetId = this.getAttribute('href'); if (targetId === '#') return; const targetElement = document.querySelector(targetId); if (targetElement) { window.scrollTo({ top: targetElement.offsetTop - 80, behavior: 'smooth' }); } }); }); }); e.preventDefault(); const submitButton = form.querySelector('button[type="submit"]'); const originalText = submitButton.innerHTML; try { // Show loading state submitButton.innerHTML = ' Sending...'; submitButton.disabled = true; const formData = new FormData(form); // Validate form data for (let [key, value] of formData.entries()) { if (typeof value === 'string' && value.length > 500) { const input = form.querySelector(`[name="${key}"]`); input.setCustomValidity('Maximum 500 characters allowed'); input.reportValidity(); throw new Error('Validation failed'); } } // Show confirmation modal confirmationModal.classList.remove('hidden'); form.reset(); } catch (error) { console.error('Form submission error:', error); // Show error message to user const errorDiv = document.createElement('div'); errorDiv.className = 'text-red-500 text-sm mt-2'; errorDiv.textContent = 'There was an error submitting the form. Please try again later.'; form.appendChild(errorDiv); setTimeout(() => errorDiv.remove(), 5000); } finally { // Reset button state submitButton.innerHTML = originalText; submitButton.disabled = false; } }); }); // Modal close handlers const closeModal = document.getElementById('closeModal'); const closeModalBtn = document.getElementById('closeModalBtn'); [closeModal, closeModalBtn].forEach(btn => { if (btn) { btn.addEventListener('click', () => { if (confirmationModal) { confirmationModal.classList.add('hidden'); } }); } }); // Close modal on escape key document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && confirmationModal && !confirmationModal.classList.contains('hidden')) { confirmationModal.classList.add('hidden'); } }); // Smooth scroll for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function(e) { e.preventDefault(); const targetId = this.getAttribute('href'); if (targetId === '#') return; const targetElement = document.querySelector(targetId); if (targetElement) { window.scrollTo({ top: targetElement.offsetTop - 80, behavior: 'smooth' }); } }); }); }); let isValid = true; // Validate form data formData.forEach((value, key) => { if (typeof value === 'string' && value.length > 500) { isValid = false; const input = form.querySelector(`[name="${key}"]`); input.setCustomValidity('Maximum 500 characters allowed'); input.reportValidity(); } }); if (!isValid) { submitButton.innerHTML = originalText; submitButton.disabled = false; return; } // Show success modal if (confirmationModal) { confirmationModal.classList.remove('hidden'); } // Reset form and button state form.reset(); submitButton.innerHTML = originalText; submitButton.disabled = false; }); }); // Modal close handlers const closeModal = document.getElementById('closeModal'); const closeModalBtn = document.getElementById('closeModalBtn'); [closeModal, closeModalBtn].forEach(btn => { if (btn) { btn.addEventListener('click', () => { if (confirmationModal) { confirmationModal.classList.add('hidden'); } }); } }); // Close modal on escape key document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && confirmationModal && !confirmationModal.classList.contains('hidden')) { confirmationModal.classList.add('hidden'); } }); // Smooth scroll for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function(e) { e.preventDefault(); const targetId = this.getAttribute('href'); if (targetId === '#') return; const targetElement = document.querySelector(targetId); if (targetElement) { window.scrollTo({ top: targetElement.offsetTop - 80, behavior: 'smooth' }); } }); }); }); const forms = document.querySelectorAll('form'); const confirmationModal = document.getElementById('confirmationModal'); const closeModal = document.getElementById('closeModal'); const closeModalBtn = document.getElementById('closeModalBtn'); function handleFormSubmit(event) { event.preventDefault(); const form = event.target; const submitButton = form.querySelector('button[type="submit"]'); const originalText = submitButton.innerHTML; // Show loading state submitButton.innerHTML = ' Sending...'; submitButton.disabled = true; // Validate form data const formData = new FormData(form); let isValid = true; for (let [key, value] of formData.entries()) { if (typeof value === 'string' && value.length > 500) { isValid = false; const input = form.querySelector(`[name="${key}"]`); input.setCustomValidity('Maximum 500 characters allowed'); input.reportValidity(); break; } } if (!isValid) { submitButton.innerHTML = originalText; submitButton.disabled = false; return; } // Show success modal confirmationModal.classList.remove('hidden'); // Reset form form.reset(); submitButton.innerHTML = originalText; submitButton.disabled = false; } // Add submit handlers to all forms forms.forEach(form => { form.addEventListener('submit', handleFormSubmit); }); // Modal close handlers [closeModal, closeModalBtn].forEach(btn => { if (btn) { btn.addEventListener('click', () => { confirmationModal.classList.add('hidden'); }); } }); // Close modal on escape key document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && !confirmationModal.classList.contains('hidden')) { confirmationModal.classList.add('hidden'); } }); }); // Show loading state const submitButton = form.querySelector('button[type="submit"]'); const originalButtonText = submitButton.innerHTML; submitButton.innerHTML = ' Sending...'; submitButton.disabled = true; // Validate form data const formEntries = Array.from(formData.entries()); let isValid = true; formEntries.forEach(([key, value]) => { if (typeof value === 'string' && value.length > 500) { isValid = false; const input = form.querySelector(`[name="${key}"]`); input.setCustomValidity('Maximum 500 characters allowed'); input.reportValidity(); } }); if (!isValid) { submitButton.innerHTML = originalButtonText; submitButton.disabled = false; return; } // Show confirmation modal immediately if (confirmationModal) { confirmationModal.classList.remove('hidden'); } // Reset form form.reset(); // Reset button state submitButton.innerHTML = originalButtonText; submitButton.disabled = false; }Submission Time: ${new Date().toLocaleString()}
${key.charAt(0).toUpperCase() + key.slice(1)}: ${value}
`).join('')}This is an automated message from the ODY website form submission system.
` }; const response = await fetch('https://api.emailjs.com/api/v1.0/email/send', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ service_id: 'your_service_id', template_id: 'your_template_id', user_id: 'your_user_id', template_params: emailContent }) }); if (!response.ok) { throw new Error('Failed to send email'); } return true; } catch (error) { console.error('Error sending email:', error); return false; } } const playButton = document.getElementById('playVideo'); const video = document.getElementById('demoVideo'); const playOverlay = document.getElementById('playOverlay'); const waitlistForm = document.getElementById('waitlistForm'); const demoForm = document.querySelector('#demo form'); const confirmationModal = document.getElementById('confirmationModal'); const closeModal = document.getElementById('closeModal'); const closeModalBtn = document.getElementById('closeModalBtn'); function handleFormSubmit(form) { form.addEventListener('submit', function(e) { e.preventDefault(); const formData = new FormData(form); const formEntries = Array.from(formData.entries()); let isValid = true; formEntries.forEach(([key, value]) => { if (typeof value === 'string' && value.length > 500) { isValid = false; const input = form.querySelector(`[name="${key}"]`); input.setCustomValidity('Maximum 500 characters allowed'); input.reportValidity(); } }); if (!isValid) { submitButton.innerHTML = originalButtonText; submitButton.disabled = false; return; } try { const emailSent = await submitFormToEmail(formData, formType); if (emailSent) { confirmationModal.classList.remove('hidden'); form.reset(); } else { throw new Error('Failed to send email'); } } catch (error) { console.error('Form submission error:', error); const errorMessage = document.createElement('div'); errorMessage.className = 'text-red-500 text-sm mt-2'; errorMessage.textContent = 'There was an error submitting the form. Please try again later.'; form.appendChild(errorMessage); setTimeout(() => errorMessage.remove(), 5000); } finally { submitButton.innerHTML = originalButtonText; submitButton.disabled = false; } }); form.querySelectorAll('input, textarea, select').forEach(input => { input.addEventListener('input', function() { this.setCustomValidity(''); }); }); } if (waitlistForm) { handleFormSubmit(waitlistForm); } if (demoForm) { handleFormSubmit(demoForm); } if (confirmationModal) { if (closeModal) { closeModal.addEventListener('click', function() { confirmationModal.classList.add('hidden'); }); } if (closeModalBtn) { closeModalBtn.addEventListener('click', function() { confirmationModal.classList.add('hidden'); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && !confirmationModal.classList.contains('hidden')) { confirmationModal.classList.add('hidden'); } }); } if (closeModal) { closeModal.addEventListener('click', function() { confirmationModal.classList.add('hidden'); }); } if (closeModalBtn) { closeModalBtn.addEventListener('click', function() { confirmationModal.classList.add('hidden'); }); } if (downloadBrochure) { downloadBrochure.addEventListener('click', function(e) { e.preventDefault(); window.location.href = 'path/to/brochure.pdf'; }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && confirmationModal && !confirmationModal.classList.contains('hidden')) { confirmationModal.classList.add('hidden'); } }); if (playButton && video && playOverlay) { playButton.addEventListener('click', function() { video.play(); playOverlay.style.display = 'none'; }); video.addEventListener('pause', function() { playOverlay.style.display = 'flex'; }); video.addEventListener('play', function() { playOverlay.style.display = 'none'; }); video.addEventListener('ended', function() { playOverlay.style.display = 'flex'; }); } // Smooth scrolling for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function(e) { e.preventDefault(); const targetId = this.getAttribute('href'); if (targetId === '#') return; const targetElement = document.querySelector(targetId); if (targetElement) { window.scrollTo({ top: targetElement.offsetTop - 80, behavior: 'smooth' }); } }); }); });