// OEG Homepage — page sections (everything below the hero) const SectionHead = ({ index, title, kicker }) => (
{index} {kicker}

{title}

); // ============================================================ // Customer logo strip — animated infinite scroller, full color // ============================================================ const FALLBACK_LOGOS = [ { src: "managed-media/client-logos/Aveva.png", alt: "Aveva" }, { src: "managed-media/client-logos/Phillips66.png", alt: "Phillips 66" }, { src: "managed-media/client-logos/Marathon_Logo.svg", alt: "Marathon" }, { src: "managed-media/client-logos/Halliburton_Logo.svg", alt: "Halliburton" }, { src: "managed-media/client-logos/Total.png", alt: "TotalEnergies" }, { src: "managed-media/client-logos/Motiva_Logo.png", alt: "Motiva" }, { src: "managed-media/client-logos/WoodsideEnergy_Logo.png", alt: "Woodside Energy" }, { src: "managed-media/client-logos/Koch_Logo.jpg", alt: "Koch" }, { src: "managed-media/client-logos/Par Pacific Holdings, Inc.png", alt: "Par Pacific" }, { src: "managed-media/client-logos/WCS.png", alt: "WCS" }, { src: "managed-media/client-logos/Ironwood_Logo.png", alt: "Ironwood" }, { src: "managed-media/client-logos/TE3CO_Logo.png", alt: "TE3CO" }, { src: "managed-media/client-logos/TEPCO.png", alt: "TEPCO" }, { src: "managed-media/client-logos/RefinedTechnologies.png", alt: "Refined Technologies" }, { src: "managed-media/client-logos/NobleCorp.png", alt: "Noble Corp" }, { src: "managed-media/client-logos/FreeportLogo.svg", alt: "Freeport" }, ]; const Logos = ({ mc = {} }) => { const items = (mc.clientLogos && mc.clientLogos.length) ? mc.clientLogos : FALLBACK_LOGOS; const doubled = [...items, ...items]; return (
Trusted by operators worldwide
{doubled.map((item, i) => (
{item.alt}
))}
); }; // ============================================================ // Hero video — full-width showreel (section 01) // ============================================================ const HeroVideo = ({ mc = {} }) => { const HLS_SRC = mc.heroVideoHls || "https://player.vimeo.com/external/864378761.m3u8?s=7a0a067f13b265ee51ef346ba142442205497468&logging=false"; const MP4_SRC = mc.heroVideoMp4 || "https://player.vimeo.com/progressive_redirect/playback/864378761/rendition/1080p/file.mp4%20%281080p%29.mp4?loc=external&log_user=0&signature=853a757ce518a80368e1ae26ccc1511d944ebcd3daf9a253cc52377965b7aed3"; const POSTER = mc.heroVideoPoster || "managed-media/home-hero-poster.jpg"; const videoRef = React.useRef(null); const sectionRef = React.useRef(null); // Wire up HLS on Safari; other browsers use the MP4 React.useEffect(() => { const video = videoRef.current; if (!video) return; const canPlayHLS = video.canPlayType("application/vnd.apple.mpegurl"); if (canPlayHLS) { video.src = HLS_SRC; } else if (window.Hls && window.Hls.isSupported()) { const hls = new window.Hls(); hls.loadSource(HLS_SRC); hls.attachMedia(video); return () => hls.destroy(); } }, [HLS_SRC]); // Autoplay (muted) when section enters the viewport; pause when it leaves React.useEffect(() => { const video = videoRef.current; const section = sectionRef.current; if (!video || !section) return; const observer = new IntersectionObserver( ([entry]) => { if (entry.isIntersecting) { video.play().catch(() => {}); } else { video.pause(); } }, { threshold: 0.25 } ); observer.observe(section); return () => observer.disconnect(); }, []); return (
); }; // ============================================================ // Product tour with sticky-step navigation // ============================================================ const Tour = () => { const [active, setActive] = React.useState(0); const steps = [ { nm: "Create & Manage Assets", ds: "Upload and manage videos, animations, SOPs, and presentations. Tag by equipment, site, and competency to keep your library organized.", panel: , }, { nm: "Build Learning Resources", ds: "Assemble assets into structured micro courses, field guides, and assessments — organized by role, site, or competency.", panel: , }, { nm: "Assign to Students", ds: "Assign micro courses, assessments, and field guides directly to students within the platform — tracked and reportable from day one.", panel: , }, { nm: "Track & prove", ds: "Real-time dashboards on completion, knowledge gaps, and compliance — by learner or site.", panel: , }, ]; return (
{steps.map((s, i) => (
setActive(i)}> STEP {String(i+1).padStart(2,"0")}
{s.nm}
{s.ds}
))}
knowledgelibrary.oegllc.com / {["assets","resources","assign","reports"][active]}
{steps[active].panel}
); }; const TourAdminSidebar = ({ active }) => { const items = [ "Overview","Company","Sites","Directories","Content Libraries", "Users & Students","Learning Resources","Learning Assets", "Questions","External Links","Reports","Support" ]; return (
The Operations
Excellence Group
{items.map((lbl, i) => { const on = lbl === active; return (
{on ? : } {lbl}
); })}
OEG System Admin
powered by OEG
); }; const TourTopIcons = () => (
); const TourPanelAuthor = () => { const rows = [ { nm: "360 Rig View", sub: "Uses 360 VR against a 3D model of a rig. Allow the use...", type: "VR", dur: "—", date: "Dec 15, 2020" }, { nm: "Abnormal Mechanical Conditions", sub: "Discusses the need for a negative internal heater press...",type: "Standard", dur: "92", date: "May 3, 2019" }, { nm: "About the CSB", sub: "About the CSB", type: "Standard", dur: "—", date: "Aug 16, 2023" }, { nm: "Absorption Vs. Adsorption", sub: "Absorption vs. Adsorption", type: "Standard", dur: "118", date: "Aug 6, 2021" }, { nm: "After the Rainbow", sub: "After the Rainbow", type: "Standard", dur: "—", date: "Aug 16, 2023" }, { nm: "Air Cooled Heat Exchangers", sub: "Discusses how air cooled heat exchangers work and co...", type: "Standard", dur: "77", date: "Aug 1, 2019" }, { nm: "Airgas Surveillance Footage", sub: "Airgas Surveillance Footage", type: "Standard", dur: "—", date: "Aug 16, 2023" }, { nm: "Anacortes Treater Explosion", sub: "", type: "Standard", dur: "293", date: "Jul 16, 2018" }, ]; const COLS = "1fr 52px 52px 62px 78px 66px"; return (
Videos
{["Videos","Documents","Images","Interactives","Workshops"].map((t, i) => (
{t}
))}
{["OEG","All Sites","All Directories"].map(f => (
{f}
))}
Search videos...
{["A → Z","50 / page"].map(d => (
{d}
))}
+ New Video
Showing 1-50 of 488
{["NAME","TYPE","DURATION","STATUS","DATE ADDED",""].map((h,i) => (
{h}
))}
{rows.map((r, i) => (
{r.nm}
{r.sub &&
{r.sub}
}
{r.type}
{r.dur}
ACTIVE
{r.date}
{["View","Edit"].map(a => ( {a} ))}
))}
); }; const TourPanelCourses = () => { const miniCards = [ { type: "INTERACTIVE", title: "210 Valve", img: true, added: false }, { type: "VIDEO", title: "360 Rig View", img: true, added: false }, { type: "DOCUMENT", title: "9.0 Respiratory", img: false, added: false }, { type: "DOCUMENT", title: "9.0 Respiratory", img: false, added: false }, { type: "DOCUMENT", title: "9.0 Respiratory", img: false, added: false }, { type: "DOCUMENT", title: "9.0 Respiratory", img: false, added: false }, { type: "DOCUMENT", title: "9.0 Respiratory", img: false, added: false }, { type: "DOCUMENT", title: "9.0 Respiratory", img: false, added: false }, { type: "DOCUMENT", title: "9.0 Respiratory", img: false, added: false }, { type: "VIDEO", title: "Abnormal Mechanical", img: true, added: true }, ]; const badgeBg = { INTERACTIVE: "#1e4080", VIDEO: "#1b3a6e", DOCUMENT: "#344054" }; return (
Instructor Dashboard
Search...
641 Results
{miniCards.map((c, i) => (
{!c.img && }
{c.type}
{c.added ?
Added
:
+ Add
}
{c.title}
))}
Micro Course Edit Mode
Abnormal
Resource Details
{[{ lbl: "Name", val: "Abnormal" }, { lbl: "Description", val: "Abnormal" }].map(f => (
{f.lbl}
{f.val}
))}
{[{ lbl: "Directory", val: "Analyzers" }, { lbl: "Subdirectory", val: "No subdirectory" }].map(f => (
{f.lbl}
{f.val}
))}
Publish
{[ { lbl: "Score to Pass", val: "70", copy: false }, { lbl: "In-Class Learning Link", val: "https://knowledgelibrary.oeg...", copy: true }, ].map(f => (
{f.lbl}
{f.val} {f.copy &&
}
))}
Create SCORM Package
Generate
Content
Add Quiz
{[{ nm: "Abnormal Mechanical Conditions", hasThumb: true }, { nm: "Abnormal Quiz", hasThumb: false }].map((item, i) => (
{item.nm}
))}
); }; const TourPanelDistribute = () => { const microCourses = [ { nm: "A Pump Course", sub: "Micro Course" }, { nm: "Abnormal", sub: "Micro Course" }, { nm: "Airplanes - Test Questions", sub: "Micro Course" }, { nm: "Andeavor Pump Bearings", sub: "Micro Course" }, { nm: "Andeavor Pump Bearings", sub: "Micro Course" }, { nm: "Andy", sub: "Micro Course" }, ]; const assessments = [ { nm: "Assessment Training Demonstration", sub: "Assessment" }, { nm: "astest", sub: "Assessment" }, { nm: "Basic Chemistry", sub: "Assessment" }, { nm: "Bearings", sub: "Assessment" }, { nm: "Bearings and more", sub: "Assessment" }, ]; const fieldGuides = [ { nm: "Centrifugal Pump Operations", sub: "Field Guide", added: false }, { nm: "Fired Heater Operations", sub: "Field Guide", added: true }, ]; const AddBtn = ({ added }) => (
{added ? "Added" : "Add"}
); const ColList = ({ title, items }) => (
{title}
{items.map((item, i) => (
{item.nm}
{item.sub}
))}
); const bgCards = [true, true, false, false, false, true, false, false, false, true]; return (
{/* ── Dimmed background: Instructor Dashboard ── */}
{/* user sidebar */}
The Operations
{["Explore","Project Folder","Syllabus","Micro Courses","Assessment","Refresher","Field Guides","Assignment","Support"].map((lbl, i) => (
{lbl}
))}
{/* card grid */}
{bgCards.map((hasImg, i) => (
{!hasImg && }
+ Add
))}
{/* ── Dark overlay ── */}
{/* ── Assignment Setup modal ── */}
{/* modal header */}
Assignment Setup
{["Resources","Parameters","Students","Review"].map((t, i) => (
{t}
))}
{/* search */}
Search Resources
Search published courses, assessments, and field guides
{/* three columns */}
Field Guides
{fieldGuides.map((item, i) => (
{item.nm}
{item.sub}
))}
{/* selected resources */}
Selected Resources
Fired Heater Operations
Field Guide
{/* footer */}
Cancel
Next
); }; const TourPanelReports = () => { const reports = [ { nm: "Students Over Time", ds: "Student registrations by day, week, or month with date range selector", color: "#2563eb" }, { nm: "Questions Report", ds: "Question usage, assessment appearances, and student attempt counts", color: "#9333ea" }, { nm: "Course Performance", ds: "Completion rates and quiz scores ranked by course", color: "#0d9488" }, { nm: "Student Activity", ds: "Login frequency buckets and list of inactive students", color: "#ea580c" }, { nm: "Library Utilization", ds: "Content library enrollments and completion rates by category", color: "#16a34a" }, { nm: "Assignment Completion Trend", ds: "Assignment items started vs completed over time", color: "#dc2626" }, { nm: "Assignment Reports", ds: "Per-student progress and completion status on a specific assignment", color: "#111827" }, ]; return (
Reports
Reports
Analytics and progress tracking across your organization.
— Select Company to scope reports —
{reports.slice(0,5).map((r, i) => (
{r.nm}
{r.ds}
View Report →
))}
{reports.slice(5).map((r, i) => (
{r.nm}
{r.ds}
View Report →
))}
); }; // ============================================================ // Product screen — full-width KL dashboard showcase // ============================================================ const ProductScreen = () => (
Knowledge Library · Live platform

See the Knowledge Library in action.

641+ industrial learning resources — searchable, trackable, and delivered to every learner across your sites.

{/* Browser chrome + full MockDashboard */}
knowledgelibrary.oegllc.com / dashboard
{/* Three callouts below screen */}
641+
Learning resources across all sites
SCORM ready
Distributes to your LMS, mobile, or offline
Live tracking
Completion, gaps, and compliance — by learner
); // ============================================================ // 3D content gallery — equal 2×2 grid // ============================================================ const Gallery = ({ mc = {} }) => { const tiles = [ { topic: "REFINING", id: "FCC-04", nm: "Fluid Catalytic Cracking Unit", run: "12:04", poster: mc.galleryPoster1 || "managed-media/gallery-1-poster.jpg" }, { topic: "SUBSEA", id: "SUB-11", nm: "Subsea Tree Maintenance", run: "18:22", poster: mc.galleryPoster2 || "managed-media/gallery-2-poster.jpg" }, { topic: "MECH", id: "PMP-03", nm: "Gear Pump Fundamentals", run: "09:18", poster: mc.galleryPoster3 || "managed-media/gallery-3-poster.jpg" }, { topic: "PROCESS", id: "GAS-07", nm: "Gas Processing Overview", run: "14:46", poster: mc.galleryPoster4 || "managed-media/gallery-4-poster.jpg" }, ]; return (
{tiles.map((t, i) => (
); }; // ============================================================ // Outcomes dark band // ============================================================ const Outcomes = () => (
42%
Reduction in time-to-competency for new operators
3.4×
More learning hours delivered per trainer headcount
98%
Audit-ready compliance against refresher schedules
19yrs
Of partnership with refining and oil/gas operators
Indicative figures drawn from customer reporting across 60+ sites; specific outcomes vary by program.
); // ============================================================ // Quote + case study // ============================================================ const Quote = () => (
05 / Customer story
OEG's content and platform let us collapse months of in‑classroom time into focused, on‑demand training — without losing the rigor our auditors expect.
JM
Jordan Mercer
VP, OPERATIONS LEARNING · GULF COAST REFINER
Case study · refinery

Roll-out across 6 refining sites in 11 months.

Replaced four legacy LMS environments with a unified Knowledge Library tenant. Migrated 1,200+ resources and certified 3,400 operators against the new curriculum.

11mo
END-TO-END ROLLOUT
3,400
OPERATORS CERTIFIED
1.2k
RESOURCES MIGRATED
98%
COMPLIANCE AT AUDIT
Read the full case study
); // ============================================================ // How it works // ============================================================ const How = () => (
{[ { num: "01", nm: "Discover", ds: "We sit with your trainers and SMEs. We watch the operation. We catalog what you already have." }, { num: "02", nm: "Produce", ds: "Our studio builds the 3D content and structures it inside Knowledge Library, against your competency model." }, { num: "03", nm: "Deploy", ds: "Tenant stands up. SSO + SCORM export connected. Field teams go live with the mobile companion." }, { num: "04", nm: "Sustain", ds: "Quarterly content refresh, compliance dashboards, and a named partner on your side at all times." }, ].map(s => (
{s.num} ──
{s.nm}
{s.ds}
))}
); // ============================================================ // Knowledge Library — homepage feature section (dark/navy) // ============================================================ const KLSection = ({ mc = {} }) => (
The OEG Knowledge Library

Build real system understanding with visual learning. The Knowledge Library shows operators how systems actually work, helping them develop a clear mental model of equipment interactions, flow paths, and cause-and-effect relationships.

{[ "High-fidelity 3D visual learning for complex operating systems.", "Centralized learning resources, courses, and learner tracking.", "Training content that supports faster onboarding, better retention, and field confidence.", ].map((pt, i) => (
{pt}
))}
); // ============================================================ // TAP — homepage feature section (light bg) // ============================================================ const TAPSection = () => (
Upload. AI organizes. Course ready.

Creating training is slow and manual. TAP helps turn existing procedures, presentations, documents, and subject matter expert notes into structured, ready-to-use courses in minutes.

{[ "AI organizes source content into course modules.", "Quizzes and knowledge checks are generated faster.", "Output is easier to review, refine, and prepare for LMS delivery.", ].map((pt, i) => (
{pt}
))}
); // ============================================================ // Reference Library — homepage feature section (dark/navy) // ============================================================ const RLMockup = () => { const modules = [ { id: "P-04", tag: "PROCESS", title: "Fired Heaters", std: "API 560" }, { id: "P-07", tag: "PROCESS", title: "Fluid Catalytic Cracking", std: "API 941" }, { id: "P-10", tag: "PROCESS", title: "Distillation", std: "API 521" }, { id: "E-02", tag: "EQUIPMENT", title: "Pressure Relief Valves", std: "API 520" }, { id: "E-05", tag: "EQUIPMENT", title: "Heat Exchangers", std: "TEMA" }, { id: "P-01", tag: "PROCESS", title: "Crude Distillation Unit", std: "API 941" }, ]; return (
REFINERY REFERENCE SERIES
23 modules
{modules.map((m, i) => (
{m.tag}
{m.title}
{m.std}
{m.id}
))}
API · ASME · NFPA · OSHA · EPA View Sample →
); }; const RLSection = () => (
23 modules · Process units + Equipment

The Refinery Reference Series gives operators, engineers, and training teams a single source of truth — 23 visual reference modules covering refinery process units and critical equipment, all standards-cited against API, ASME, NFPA, OSHA, and EPA.

{[ "23 interactive modules: 16 process units + 7 critical equipment references.", "Standards citations built in — API, ASME, NFPA, OSHA, and EPA.", "Ready for pre-job briefings, onboarding packs, and ongoing field reference.", ].map((pt, i) => (
{pt}
))}
); const FALLBACK_TRAINING_LIBRARIES = [ { slug: "basic-process-science", name: "Basic Process Science", heroParagraph: "Fundamentals of pressure, temperature, fluid flow, and phase change for process operations.", thumbnailSrc: "assets/img/content_library/Basic Process Science.jpg" }, { slug: "pumps", name: "Centrifugal Pumps", heroParagraph: "Pump basics, drivers, seals, seal plans, operations, and troubleshooting.", thumbnailSrc: "assets/img/content_library/Centrifugal Pumps.jpg" }, { slug: "compressors", name: "Compressors", heroParagraph: "Reciprocating and centrifugal compressor systems, maintenance, and operation.", thumbnailSrc: "assets/img/content_library/Compressors.jpg" }, { slug: "distillation", name: "Distillation", heroParagraph: "Distillation columns, tray and packing internals, and process control.", thumbnailSrc: "assets/img/content_library/Distillation.jpg" }, { slug: "fcc", name: "Fluid Catalytic Cracking", heroParagraph: "FCC process fundamentals, reactor-regenerator systems, and troubleshooting.", thumbnailSrc: "assets/img/content_library/FCC.jpg" }, { slug: "fired-heaters", name: "Fired Heaters", heroParagraph: "Burners, combustion, draft control, heater efficiency, and safety systems.", thumbnailSrc: "assets/img/content_library/Fired Heaters.jpg" }, { slug: "gear-pumps", name: "Gear Pumps", heroParagraph: "Positive displacement gear pump principles, operation, and maintenance.", thumbnailSrc: "assets/img/content_library/Gear Pumps.jpg" }, { slug: "heat-exchangers", name: "Heat Exchangers", heroParagraph: "Shell-and-tube, air coolers, heat transfer fundamentals, and fouling.", thumbnailSrc: "assets/img/content_library/Heat Exchangers.jpg" }, { slug: "instrumentation", name: "Instrumentation", heroParagraph: "Process measurement, control loops, field instruments, and calibration.", thumbnailSrc: "assets/img/content_library/Instrumentation.jpg" }, { slug: "midstream", name: "Midstream", heroParagraph: "Pipeline systems, compression stations, and gas processing operations.", thumbnailSrc: "assets/img/content_library/Midstream.jpg" }, { slug: "valves", name: "Valves", heroParagraph: "Gate, globe, ball, check, and control valves — including actuators and positioners.", thumbnailSrc: "assets/img/content_library/Introduction to Valves.jpg" }, ]; const TrainingLibraries = ({ mc = {} }) => { const raw = (mc.trainingLibraries && mc.trainingLibraries.length) ? mc.trainingLibraries : FALLBACK_TRAINING_LIBRARIES; const libraries = raw.filter(l => !l.hidden); const count = libraries.length; return (
{count} content {count === 1 ? "library" : "libraries"} · 340+ individual titles Request library access
); }; // ============================================================ // About OEG — Partner & Learn (full width) // ============================================================ const About = () => (

OEG partners with and learns from our customers at all points in our engagement, and uses this knowledge in the continued enhancement of our software solutions and content.

{[ "Our solutions are designed to ensure rapid customer support response.", "Our people are dedicated to providing customer service excellence.", "Our company is driven to research and discover better methods to advance adult learning.", ].map((pt, i) => (
{String(i+1).padStart(2,"0")} {pt}
))}
Founded in Houston, Texas · 2007
); // ============================================================ // Testimonials — auto-scrolling carousel // ============================================================ const Testimonials = () => { const VISIBLE = 3; const GAP = 24; const items = [ { logo: "managed-media/client-logos/Par Pacific Holdings, Inc.png", alt: "Par Pacific", quote: "Par Pacific initially began using the OEG Knowledge Library because of the quality of their 3D training content for our refining operators. However, the ease of building custom courses in the Knowledge Library platform and the simplicity of SCORM integration with our LMS has allowed us to leverage OEG for all of our custom eLearning course creation.", name: "LaToya Smith", role: "Director, Talent Management · Par Pacific", }, { logo: "managed-media/client-logos/TE3CO_Logo.png", alt: "TE3CO", quote: "TE3CO selected OEG to develop both marketing and training material for the TE3CO Safety RAT. We chose OEG because of their realistic modeling and animation capabilities as well as their knowledge of complex industrial equipment. All of the content they built for us was turned into courses in the OEG Knowledge Library.", name: "John Kovac", role: "Operations Manager · TE3CO", }, { logo: "managed-media/client-logos/Aveva.png", alt: "AVEVA", quote: "The OEG Knowledge Library will enhance AVEVA Unified Learning with rich, purpose-built content for basic process operator training, as well as reduce learning time and improve knowledge retention to enable our customers to build and sustain workforce competence.", name: "Ravi Gopinath", role: "Chief Cloud Officer & Chief Product Officer · AVEVA", }, ]; const [idx, setIdx] = React.useState(0); const [itemW, setItemW] = React.useState(0); const outerRef = React.useRef(null); const maxIdx = Math.max(0, items.length - VISIBLE); const canNav = items.length > VISIBLE; // Measure item width on mount + resize React.useEffect(() => { const measure = () => { if (outerRef.current) { setItemW((outerRef.current.offsetWidth - GAP * (VISIBLE - 1)) / VISIBLE); } }; const raf = requestAnimationFrame(measure); window.addEventListener("resize", measure); return () => { cancelAnimationFrame(raf); window.removeEventListener("resize", measure); }; }, []); // Auto-advance only when more items than VISIBLE React.useEffect(() => { if (!canNav) return; const t = setInterval(() => setIdx(i => (i >= maxIdx ? 0 : i + 1)), 6000); return () => clearInterval(t); }, [canNav, maxIdx]); const translateX = itemW > 0 ? -(idx * (itemW + GAP)) : 0; return (
{items.map((t, i) => (
0 ? { flex: `0 0 ${itemW}px` } : { flex: "1 1 0" }} >
“{t.quote}”
{t.alt}
{t.name}
{t.role}
))}
{canNav && (
{Array.from({ length: maxIdx + 1 }).map((_, i) => (
)}
); }; // ============================================================ // Contact // ============================================================ const Contact = () => { const [status, setStatus] = React.useState("idle"); const [capA] = React.useState(() => Math.floor(Math.random() * 9) + 1); const [capB] = React.useState(() => Math.floor(Math.random() * 9) + 1); const handleSubmit = (e) => { e.preventDefault(); const form = e.target; if (!form.senderFName.value.trim()) return; setStatus("sending"); const data = new FormData(form); // Append UTM / tracking params from URL const p = new URLSearchParams(window.location.search); ["utm_source","utm_medium","utm_campaign","utm_term","utm_content","gclid","fbclid"].forEach(k => { if (p.get(k)) data.set(k, p.get(k)); }); data.set("current_page", window.location.href); data.set("referrer_url", document.referrer || ""); data.set("landing_page", sessionStorage.getItem("oeg_landing") || window.location.href); fetch("assets/php/send.php", { method: "POST", body: data }) .then(r => r.text()) .then(res => setStatus(res.trim() === "1" ? "success" : "error")) .catch(() => setStatus("error")); }; return (
12 / Contact

See the platform on your operation.

A 30-minute working session with our team — bring a competency model or a piece of equipment you'd like trained, and we'll show how it maps to OEG.

OEG will not call or email you unless requested, and the contact information you provide will never be shared.
Address
10235 West Little York Road, Suite 260
Houston, TX 77040 USA
Phone
+1 281.794.9107
Email
sales@oegllc.com
Get in touch
Complete the form and we will get back to you.
{status === "success" ? (
Thanks! We'll be in touch shortly.
) : (
{/* Hidden spam-check fields */}
{status === "error" && (
There was a problem sending your message. Please try again.
)}
)}
); }; // ============================================================ // CTA band // ============================================================ const CTABand = () => (

See the platform on your operation.

A 30‑minute working session with our team — bring a competency model or a piece of equipment you'd like trained, and we'll show how it maps to OEG.
); // ============================================================ // Footer // ============================================================ const Footer = () => { const [dark, setDark] = React.useState(() => document.body.dataset.theme === 'dark'); const toggleTheme = () => { const next = dark ? 'light' : 'dark'; window.dispatchEvent(new CustomEvent('oeg:theme', { detail: next })); localStorage.setItem('oeg_theme_pref', next); setDark(!dark); }; return ( ); }; Object.assign(window, { ProductScreen, SectionHead, Logos, Tour, Gallery, Outcomes, Quote, How, KLSection, TAPSection, RLSection, TrainingLibraries, About, Testimonials, Contact, CTABand, Footer, });