// Metis — Page Components const T = { cream: '#F6F7FA', dark: '#16213E', sage: '#5B6B8C', accent: '#1F5FBF', creamDark: '#E9ECF3', }; const Label = ({ children, color = T.accent }) => (
{children}
); const EditorialHeading = ({ children, size = 72, style = {} }) => (

{children}

); const SansBody = ({ children, style = {} }) => (

{children}

); const DarkBtn = ({ children, onClick }) => { const [hov, setHov] = React.useState(false); return ( ); }; const GhostBtn = ({ children, onClick }) => { const [hov, setHov] = React.useState(false); return ( ); }; // ─── CUSTOM SELECT ──────────────────────────────────────────────────────── const CustomSelect = ({ value, onChange, options, placeholder = 'Select…', error }) => { const [open, setOpen] = React.useState(false); const ref = React.useRef(null); const selected = options.find(o => o.value === value); React.useEffect(() => { const handler = (e) => { if (ref.current && !ref.current.contains(e.target)) setOpen(false); }; document.addEventListener('mousedown', handler); return () => document.removeEventListener('mousedown', handler); }, []); return (
{/* Trigger */}
setOpen(o => !o)} style={{ padding: '11px 0', borderBottom: `1px solid ${error ? T.accent : open ? T.dark : 'rgba(22,33,62,0.2)'}`, display: 'flex', justifyContent: 'space-between', alignItems: 'center', cursor: 'pointer', transition: 'border-color 0.2s', fontFamily: "Cormorant Garamond, Georgia, serif", fontSize: '19px', color: selected ? T.dark : 'rgba(22,33,62,0.65)', }} > {selected ? selected.label : placeholder}
{/* Dropdown panel */} {open && (
{options.map(opt => (
{ onChange(opt.value); setOpen(false); }} style={{ padding: '14px 16px', fontFamily: "Cormorant Garamond, Georgia, serif", fontSize: '18px', color: value === opt.value ? T.dark : 'rgba(22,33,62,0.85)', background: value === opt.value ? T.creamDark : 'transparent', borderBottom: '1px solid rgba(22,33,62,0.06)', cursor: 'pointer', transition: 'background 0.15s', display: 'flex', alignItems: 'center', justifyContent: 'space-between', }} onMouseEnter={e => { if (value !== opt.value) e.currentTarget.style.background = T.creamDark; }} onMouseLeave={e => { if (value !== opt.value) e.currentTarget.style.background = 'transparent'; }} > {opt.label} {value === opt.value && ( )}
))}
)}
); }; const Divider = ({ style = {} }) => (
); const ImgPlaceholder = ({ label, width = '100%', height = 320, bg = T.creamDark }) => (
{label}
); // ─── HOME PAGE ────────────────────────────────────────────────────────────── const HomeEditorial = ({ setPage }) => (
{/* Hero */}
Verify every business.
Instantly.
Metis is the pre-submission risk intelligence platform built for insurance agents — digitizing workers' comp risk evaluation so you can quote faster, smarter, and with confidence.
setPage('contact')}>View a Demo setPage('solutions')}>See How It Works
{[['Pre-submission', 'Risk Evaluation'], ['Instant', 'Business Verification'], ['Built for', 'Insurance Agents']].map(([line1, line2]) => (
{line1}
{line2}
))}
{/* Value Props */}
{[ { num: '01', title: 'Instant Business Verification', body: 'Pull entity status, OSHA history, contractor licensing, and X-Mod scores from authoritative sources — in seconds, not hours.' }, { num: '02', title: 'Pre-Submission Risk Scoring', body: 'Evaluate workers\' comp risk before the submission leaves your desk. Catch red flags early and improve placement rates.' }, { num: '03', title: 'Built for Agents', body: 'Designed for the way agents work. No complex onboarding, no carrier dependency. Start verifying on day one.' }, ].map(item => (
{item.num}
{item.title}
{item.body}
))}
{/* CTA Band */}
Ready to transform your workflow? setPage('contact')}>View a Demo
); const HomeSplit = ({ setPage }) => (
{/* Hero Split */}
Verify every business.
Instantly.
Metis digitizes the pre-submission workers' comp risk evaluation process — giving insurance agents the speed and confidence to quote more, faster.
setPage('contact')}>View a Demo setPage('solutions')}>Explore Solutions
{[['10x', 'Faster Evaluation'], ['Zero', 'Carrier Dependency'], ['100%', 'Agent-Focused']].map(([stat, label]) => (
{stat}
{label}
))}
Risk Evaluation Dashboard
{[ { label: 'Business Verified', status: 'complete' }, { label: 'FEIN Confirmed', status: 'complete' }, { label: 'Payroll Estimate', status: 'complete' }, { label: 'Risk Score Generated', status: 'active' }, { label: 'Submission Ready', status: 'pending' }, ].map(row => (
{row.label} {row.status === 'complete' ? '✓ Done' : row.status === 'active' ? '● Live' : '– Pending'}
))}
Risk Score A–
{/* Features row */}
{[ { title: 'Instant Verification', body: 'Real-time business data from authoritative sources.' }, { title: 'Pre-Sub Risk Scoring', body: 'Evaluate risk before the submission leaves your desk.' }, { title: 'Agent-Native Design', body: 'No complex onboarding. Start quoting on day one.' }, { title: 'Carrier Independent', body: 'Works across markets. No lock-in, no gatekeeping.' }, ].map(f => (
{f.title}
{f.body}
))}
{/* Dark CTA */}
Ready to transform your submission workflow? setPage('contact')}>View a Demo
); // ─── ABOUT PAGE ───────────────────────────────────────────────────────────── const AboutPage = ({ setPage }) => (
Counsel for insurance agents.
We built the tool we wished existed. Workers' compensation is one of the most complex, data-intensive lines of insurance — yet the pre-submission process for agents is still largely manual, fragmented, and slow. Metis changes that. Our platform transforms hours of underwriting research into minutes, giving agents instant access to the business intelligence they need to evaluate risk, build stronger submissions, and move opportunities forward faster. Less research. Better submissions. More placement.
A front-row seat to the industry. Metis began with a front-row seat to the workers' compensation industry. Growing up, our founder watched his father build and operate a workers' compensation underwriting agency and saw firsthand the challenges caused by incomplete information, manual research, and lengthy underwriting processes. Years later, after working closely with underwriters and agents—including family members in the industry—he gained a deeper understanding of the hours spent gathering data, verifying businesses, and preparing submissions. What started as a mission to help one agency work more efficiently became a platform built to help insurance professionals everywhere spend less time researching and more time placing business.
{[ { title: 'Deep Domain Expertise', body: 'Built by people who understand workers\' comp — the nuances, the gotchas, and the agent workflow that makes or breaks a placement.' }, { title: 'Agent-First Philosophy', body: 'We sit on your side of the table. Our product serves agents, not carriers. Every decision we make reflects that.' }, { title: 'Speed as a Feature', body: 'Time kills deals. Metis compresses the pre-submission research cycle from days to seconds — without sacrificing accuracy.' }, ].map(item => (
{item.title}
{item.body}
))}
Interested in learning more? setPage('contact')}>View a Demo
); // ─── SOLUTIONS PAGE ────────────────────────────────────────────────────────── const SolutionsPage = ({ setPage }) => (
Everything you need to know before you quote. Metis pulls business entity status, OSHA history, contractor licenses, x-mod scores, DOT safety records, Google satellite and street views, and more into a single report — in under a minute. No more manual research. No more surprises at the carrier.
{/* How it works */}
{[ { step: '01', title: 'Enter the Business', body: 'Enter the business name, choose the appropriate industry report, and provide the business address. Metis can automatically populate address details from a copied address and instantly recognize previously researched businesses, pulling historical information to streamline the process.' }, { step: '02', title: 'Metis Does the Research', body: 'In under a minute, Metis pulls Secretary of State status, OSHA violation history, contractor license standing, experience modification scores, DOT safety records, and more — all from authoritative sources, automatically.' }, { step: '03', title: 'Quote with Confidence', body: 'Review a clean, structured report with a Green / Yellow / Red appetite indicator. Add notes, export to PDF, and walk into the carrier conversation with everything already done.' }, ].map((item, i) => (
{item.step}
{item.title}
{item.body}
))}
{/* Features detail */}
{[ { title: 'Secretary of State Verification', body: 'Instant business entity status. Active / Suspended / Terminated status, FTB and SOS standing, officers, registered agent, and formation date — confirmed in seconds, not tabs.' }, { title: 'OSHA Violation History', body: 'Surface Cal/OSHA citations, violation types, and penalty history before your carrier asks. One of the most overlooked risk signals in workers\' comp underwriting, automated.' }, { title: 'Contractor License Verification', body: 'Real-time state licensing board lookup for license status, classifications, bond amounts, and expiration dates. Disciplinary actions flagged automatically — no more manual license board searches.' }, { title: 'Experience Modification (X-Mod) Lookup', body: 'NCCI x-mod access across 39 states, with California WCIRB x-mod coming soon. Most agents don\'t know they can pull this data before quoting — now it\'s automatic on every report.' }, { title: 'DOT & FMCSA Safety Records', body: 'For commercial auto and trucking risks, Metis pulls SAFER carrier profiles, safety ratings, inspection history, and out-of-service violations. Every commercial risk, fully researched.' }, { title: 'Appetite Score & Carrier-Ready Report', body: 'Every search delivers a Green / Yellow / Red appetite indicator with all key data points formatted for the carrier conversation. Export to PDF in one click and submit with confidence.' }, { title: 'Full Report History', body: 'Every report your agency has ever run is saved, searchable, and available in one place. Re-run a report on a returning client in seconds using saved business profiles — no re-entering information.' }, { title: 'Submission Notes & Deal Tracking', body: 'Add private notes directly to any report to track where a submission stands — carrier conversations, follow-ups, declinations, and wins. Your entire pipeline, organized by risk.' }, { title: 'Agency Admin Dashboard', body: 'Agency leaders get a real-time view of team activity — reports run, appetite trends, and usage by agent. Know what your team is working on and how the book is shaping up, without asking.' }, ].map(f => (
{f.title}
{f.body}
))}
See Metis in action.
setPage('contact')}>View a Demo setPage('about')}>Learn About Us
); // ─── INLINE LIGHT BUTTON (for dark backgrounds) ──────────────────────────── const InlineLightBtn = ({ children, onClick }) => { const [hov, setHov] = React.useState(false); return ( ); }; // ─── VIEW DEMO PAGE ────────────────────────────────────────────────────────── const ContactPage = () => { const [playing, setPlaying] = React.useState(false); const videoRef = React.useRef(null); const handlePlay = () => { setPlaying(true); if (videoRef.current) videoRef.current.play(); }; return (
{/* Header */}
See Metis in action. Watch how Metis transforms the pre-submission workers' comp risk evaluation process — from hours of manual research to instant, agent-ready intelligence.
{/* Video Player */}
{/* Placeholder — swap src for your real video URL */}
{/* Caption */}
Metis Platform Walkthrough
Workers' Compensation · Risk Intelligence
Metis, 2026
{/* What you'll see */}
{[ { num: '01', title: 'Business Lookup', body: 'Enter any business and watch Metis pull authoritative data in seconds.' }, { num: '02', title: 'Risk Evaluation', body: 'See how our scoring engine surfaces red flags and signals in real time.' }, { num: '03', title: 'Submission Summary', body: 'Auto-generated packet ready for your carrier conversation.' }, ].map(item => (
{item.num}
{item.title}
{item.body}
))}
{/* Dark footer CTA */}
Want to learn more about Metis? Reach out directly and we'll walk you through how Metis fits your workflow. window.__metisNav && window.__metisNav('contact_us')}>Contact Us
); }; // ─── CONTACT US PAGE ──────────────────────────────────────────────────────── const contactInputStyle = (err) => ({ width: '100%', padding: '11px 0', background: 'transparent', border: 'none', borderBottom: `1px solid ${err ? T.accent : 'rgba(22,33,62,0.2)'}`, fontFamily: "Cormorant Garamond, Georgia, serif", fontSize: '19px', color: T.dark, outline: 'none', boxSizing: 'border-box', transition: 'border-color 0.2s', }); const InquiryField = ({ label, id, type, form, setForm, errors, setErrors, children }) => (
{children || ( { setForm(f => ({ ...f, [id]: e.target.value })); setErrors(err => ({ ...err, [id]: null })); }} style={contactInputStyle(errors[id])} onFocus={e => e.target.style.borderBottomColor = T.dark} onBlur={e => e.target.style.borderBottomColor = errors[id] ? T.accent : 'rgba(22,33,62,0.2)'} /> )}
); const CONTACT_INQUIRY_URL = 'https://metisinsured.com/contact-inquiry'; const ContactUsPage = () => { const [inquiryType, setInquiryType] = React.useState(''); const [form, setForm] = React.useState({ name: '', phone: '', email: '', business: '' }); const [submitted, setSubmitted] = React.useState(false); const [submitting, setSubmitting] = React.useState(false); const [submitError, setSubmitError] = React.useState(''); const [errors, setErrors] = React.useState({}); const teamContacts = [ { name: 'Lachlan Van Rosmalen', title: 'Founder & CEO', email: 'Lachlan@metisinsured.com', phone: '(213) 572-9852' }, { name: 'John Rosmalen', title: 'Partner', email: 'Johnrosmalen@imacoinsurance.com', phone: '(213) 239-3825' }, ]; const validate = () => { const e = {}; if (!form.name.trim()) e.name = 'Required'; if (!form.phone.trim()) e.phone = 'Required'; if (!form.email.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) e.email = 'Valid email required'; if (!form.business.trim()) e.business = 'Required'; return e; }; const handleSubmit = async (e) => { e.preventDefault(); const errs = validate(); if (Object.keys(errs).length) { setErrors(errs); return; } setSubmitting(true); setSubmitError(''); try { const res = await fetch(CONTACT_INQUIRY_URL, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(form), }); if (!res.ok) throw new Error('Request failed'); setSubmitted(true); } catch (err) { setSubmitError("Something went wrong sending this — please email us directly instead, or try again in a moment."); } finally { setSubmitting(false); } }; const fieldProps = { form, setForm, errors, setErrors }; return (
{/* Header */}
Contact Us
{/* Two-column body */}
{/* LEFT — Team Contacts */}
{teamContacts.map((c, i) => ( ))}
{/* RIGHT — Inquiry Form */}
{submitted ? (
*
Thank you, {form.name.split(' ')[0]}. We've received your inquiry and will be in touch shortly.
) : (
{submitError && (
{submitError}
)} )}
); }; Object.assign(window, { HomeEditorial, HomeSplit, AboutPage, SolutionsPage, ContactPage, ContactUsPage, InlineLightBtn, CustomSelect });