{"id":69037,"date":"2025-09-11T10:38:15","date_gmt":"2025-09-11T10:38:15","guid":{"rendered":"https:\/\/www.bloomreach.com\/?post_type=products&#038;p=69037"},"modified":"2026-09-24T16:41:31","modified_gmt":"2026-09-24T16:41:31","slug":"loomi-marketing-agent","status":"publish","type":"products","link":"https:\/\/www.bloomreach.com\/en\/products\/loomi-marketing-agent","title":{"rendered":"Marketing Agent"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"69037\" class=\"elementor elementor-69037\" data-elementor-post-type=\"products\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4e1be488 e-con-full e-flex e-con e-parent\" data-id=\"4e1be488\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-78ae20fc elementor-widget elementor-widget-html\" data-id=\"78ae20fc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"lma\">\n<section class=\"lma-section lma-hero\" id=\"lma-top\">\n  <div class=\"lma-container lma-hero__body\">\n    <div class=\"lma-hero__head\">\n      <div class=\"lma-hero__intro\">\n        <div class=\"lma-hero__eyebrow\">\n          <img decoding=\"async\" class=\"lma-hero__loomi\" src=\"\/wp-content\/uploads\/2026\/09\/marketing-agent-loomi-wordmark.svg\" alt=\"Loomi\" width=\"145\" height=\"56\">\n          <span class=\"lma-hero__product\">Marketing Agent<\/span>\n        <\/div>\n        <div class=\"lma-hero__copy\">\n          <h1 class=\"lma-d1 lma-hero__title\">Your Marketing Team&rsquo;s Smartest Partner<\/h1>\n          <p class=\"lma-lead lma-hero__lead\">One marketing agent that proactively finds the opportunity, builds a campaign personalized to each customer, generates the on-brand creative, and self-optimizes so every send is better than the last.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"lma-hero__actions\">\n        <a class=\"lma-btn lma-btn--dark\" href=\"#get-started\">Schedule a 30-Minute Demo<\/a>\n        <a class=\"lma-btn lma-btn--outline\" href=\"#the-loop\">See How It Works<\/a>\n      <\/div>\n    <\/div>\n    <div class=\"lma-hero__visual\">\n      <video src=\"https:\/\/www.bloomreach.com\/wp-content\/uploads\/2026\/09\/BR-MA-Hero-Video-v3-web.mp4\" muted loop autoplay playsinline><\/video>\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5418420e e-con-full e-flex e-con e-parent\" data-id=\"5418420e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-85ed3e3 elementor-widget elementor-widget-html\" data-id=\"85ed3e3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"lma\">\n<section class=\"lma-section lma-stats\" aria-label=\"Results customers see\">\n  <div class=\"lma-container\">\n    <ul class=\"lma-stats__row\">\n      <li class=\"lma-stats__item\">\n        <p class=\"lma-stats__figure lma-grad-text\">2.4&times;<\/p>\n        <p class=\"lma-stats__label\">higher conversion rate<\/p>\n      <\/li>\n      <li class=\"lma-stats__item\">\n        <p class=\"lma-stats__figure lma-grad-text\">82%<\/p>\n        <p class=\"lma-stats__label\">more efficient targeting<\/p>\n      <\/li>\n      <li class=\"lma-stats__item\">\n        <p class=\"lma-stats__figure lma-grad-text\">5&times;<\/p>\n        <p class=\"lma-stats__label\">higher revenue per email<\/p>\n      <\/li>\n    <\/ul>\n  <\/div>\n<\/section>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-732dedeb e-con-full e-flex e-con e-parent\" data-id=\"732dedeb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-26e5c60 elementor-widget elementor-widget-html\" data-id=\"26e5c60\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"lma\">\n<section class=\"lma-section lma-loop\" id=\"the-loop\" aria-labelledby=\"lma-loop-title\">\n  <div class=\"lma-loop__wash\" aria-hidden=\"true\"><\/div>\n  <div class=\"lma-container lma-loop__inner\">\n    <header class=\"lma-loop__head\">\n      <p class=\"lma-eyebrow lma-loop__eyebrow\">The Loop<\/p>\n      <h2 class=\"lma-d2 lma-loop__title\" id=\"lma-loop-title\">One Agent Runs the Whole&nbsp;Loop<\/h2>\n    <\/header>\n    <div class=\"lma-loop__stage\">\n      <div class=\"lma-loop__grid\">\n        <article class=\"lma-loop__card lma-loop__card--analyze\">\n          <span class=\"lma-loop__badge\">01<\/span>\n          <h3 class=\"lma-loop__card-title\">Analyze<\/h3>\n          <p class=\"lma-loop__card-body\">Spots the campaigns you should be running, but aren't.<\/p>\n          <a class=\"lma-loop__link\" href=\"#\">Learn more<span class=\"lma-loop__link-arrow\" aria-hidden=\"true\">&rarr;<\/span><\/a>\n        <\/article>\n        <article class=\"lma-loop__card lma-loop__card--strategize\">\n          <span class=\"lma-loop__badge\">02<\/span>\n          <h3 class=\"lma-loop__card-title\">Strategize<\/h3>\n          <p class=\"lma-loop__card-body\">Turns plain-English goals into a real plan: the audiences, the timing, the channels, and the KPIs.<\/p>\n          <a class=\"lma-loop__link\" href=\"#\">Learn more<span class=\"lma-loop__link-arrow\" aria-hidden=\"true\">&rarr;<\/span><\/a>\n        <\/article>\n        <article class=\"lma-loop__card lma-loop__card--build\">\n          <span class=\"lma-loop__badge\">03<\/span>\n          <h3 class=\"lma-loop__card-title\">Build<\/h3>\n          <p class=\"lma-loop__card-body\">Builds every part of a personalized campaign. Images, recs, and copy \u2014 all ready to go.<\/p>\n          <a class=\"lma-loop__link\" href=\"#\">Learn more<span class=\"lma-loop__link-arrow\" aria-hidden=\"true\">&rarr;<\/span><\/a>\n        <\/article>\n        <article class=\"lma-loop__card lma-loop__card--optimize\">\n          <span class=\"lma-loop__badge\">04<\/span>\n          <h3 class=\"lma-loop__card-title\">Optimize<\/h3>\n          <p class=\"lma-loop__card-body\">Serves the best version to each customer and keeps learning, so every send beats the last.<\/p>\n          <a class=\"lma-loop__link\" href=\"#\">Learn more<span class=\"lma-loop__link-arrow\" aria-hidden=\"true\">&rarr;<\/span><\/a>\n        <\/article>\n        <svg class=\"lma-loop__arrow lma-loop__arrow--a\" width=\"42\" height=\"45\" viewBox=\"0 0 42 45\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M0 1C20.4345 1 37 17.5655 37 38\" stroke=\"black\" stroke-width=\"2\"\/>\n<path d=\"M37 45L32.6699 37.5L41.3301 37.5L37 45Z\" fill=\"black\"\/>\n<\/svg>\n\n        <svg class=\"lma-loop__arrow lma-loop__arrow--b\" width=\"42\" height=\"45\" viewBox=\"0 0 42 45\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M0 1C20.4345 1 37 17.5655 37 38\" stroke=\"black\" stroke-width=\"2\"\/>\n<path d=\"M37 45L32.6699 37.5L41.3301 37.5L37 45Z\" fill=\"black\"\/>\n<\/svg>\n\n        <svg class=\"lma-loop__arrow lma-loop__arrow--c\" width=\"42\" height=\"45\" viewBox=\"0 0 42 45\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M0 1C20.4345 1 37 17.5655 37 38\" stroke=\"black\" stroke-width=\"2\"\/>\n<path d=\"M37 45L32.6699 37.5L41.3301 37.5L37 45Z\" fill=\"black\"\/>\n<\/svg>\n\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7d412712 e-con-full e-flex e-con e-parent\" data-id=\"7d412712\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4d886263 elementor-widget elementor-widget-html\" data-id=\"4d886263\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"lma\">\n<section class=\"lma-section lma-does\" id=\"what-loomi-does\" aria-labelledby=\"lma-does-title\">\n  <div class=\"lma-container\">\n    <h2 class=\"lma-sr\" id=\"lma-does-title\">What the Loomi Marketing Agent does<\/h2>\n    <div class=\"lma-does__grid\">\n      <div class=\"lma-does__side\">\n        <div class=\"lma-does__tabs\">\n          <div class=\"lma-does__tab\" data-does-tab=\"0\">Analyze<\/div>\n          <div class=\"lma-does__tab\" data-does-tab=\"1\">Strategize<\/div>\n          <!-- Build owns the split rule: it shows which of the two Build screens is showing -->\n          <div class=\"lma-does__group\">\n            <div class=\"lma-does__tab\" data-does-tab=\"2\">\n              <span class=\"lma-does__lbl-d\">Build<\/span>\n              <span class=\"lma-does__lbl-m\">Build 1<\/span>\n            <\/div>\n            <div class=\"lma-does__rule\">\n              <span class=\"lma-does__half\" data-does-half=\"2\"><\/span>\n              <span class=\"lma-does__half\" data-does-half=\"3\"><\/span>\n            <\/div>\n          <\/div>\n          <div class=\"lma-does__tab lma-does__tab--mobile\" data-does-tab=\"3\">Build 2<\/div>\n          <div class=\"lma-does__tab\" data-does-tab=\"4\">Optimize<\/div>\n        <\/div>\n        <div class=\"lma-does__arrows\">\n          <div class=\"lma-nav-btn lma-does__arrow\" data-does-prev>\n            <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20 12H4\"\/><path d=\"M10 6l-6 6 6 6\"\/><\/svg>\n          <\/div>\n          <div class=\"lma-nav-btn lma-nav-btn--solid lma-does__arrow\" data-does-next>\n            <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 12h16\"\/><path d=\"M14 6l6 6-6 6\"\/><\/svg>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"lma-does__panels\">\n        <div class=\"lma-does__panel is-active\" id=\"lma-does-panel-1\">\n          <figure class=\"lma-does__media\">\n            <span class=\"lma-does__glow\" aria-hidden=\"true\"><\/span>\n            <video class=\"lma-does__shot\" src=\"https:\/\/www.bloomreach.com\/wp-content\/uploads\/2026\/09\/ANALYZE.mp4\" loop muted autoplay playsinline>\n          <\/figure>\n          <div class=\"lma-does__txt\">\n            <h3 class=\"lma-does__headline\">It tells you what's slipping before you ask<\/h3>\n            <div class=\"lma-does__body\">\n              <p>It watches your lifecycle campaigns, flags what's underperforming or at risk,\u2028and explains why, in plain language, with the next move attached.<\/p>\n              <ul>\n                <li>Catches a campaign quietly leaking revenue and traces it to the cause\u2028(e.g., a stale subject line, a broken attribution tag)<\/li>\n                <li>Flags the segments drifting toward churn while there's still time to win them back<\/li>\n              <\/ul>\n              <p>It doesn't stop at the diagnosis. The fix becomes the next thing it builds. \u2192<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div class=\"lma-does__panel\" id=\"lma-does-panel-2\">\n          <figure class=\"lma-does__media\">\n            <span class=\"lma-does__glow\" aria-hidden=\"true\"><\/span>\n            <video class=\"lma-does__shot\" src=\"https:\/\/www.bloomreach.com\/wp-content\/uploads\/2026\/09\/STRATEGIZE.mp4\" loop muted autoplay playsinline>\n          <\/figure>\n          <div class=\"lma-does__txt\">\n            <h3 class=\"lma-does__headline\">It plans from your data,\u2028 not guesswork<\/h3>\n            <div class=\"lma-does__body\">\n              <p>Give it a plain-English goal. It comes back with a real plan grounded in your live customer data: the audience, the timing, the KPI, and why. Nothing builds until you approve.<\/p>\n              <ul>\n                <li>Reasons from your live data to pick the play worth doing, isntead of a generic guess<\/li>\n                <li>Benchmarks your performance against your industry and shows you where to close the gap<\/li>\n                <li>Draws on your team's goals and go-to strategies, so every plan starts from what your company already knows<\/li>\n              <\/ul>\n              <p>Approve the plan, and it moves straight into building \u2014 audience, journey, and creative. \u2192<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div class=\"lma-does__panel\" id=\"lma-does-panel-3\">\n          <figure class=\"lma-does__media\">\n            <span class=\"lma-does__glow\" aria-hidden=\"true\"><\/span>\n            <video class=\"lma-does__shot\" src=\"https:\/\/www.bloomreach.com\/wp-content\/uploads\/2026\/09\/BUILD-01.mp4\" loop muted autoplay playsinline>\n          <\/figure>\n          <div class=\"lma-does__txt\">\n            <h3 class=\"lma-does__headline\">A launch-ready campaign, personalized to every customer<\/h3>\n            <div class=\"lma-does__body\">\n              <p>Describe a campaign in a sentence, and the agent builds it: the audience, the multi-step journey across email and SMS, the personalization, and the creative. You review and launch.<\/p>\n              <ul>\n                <li>Builds the audience from live behavior, then the multi-step journey across email and SMS<\/li>\n                <li>Handles the parts that eat your week: triggers, consent, frequency caps, and the ideal send time are calculated for each customer<\/li>\n                <li>Generates on-brand images and whole emails, not just copy, from your brand guidelines<\/li>\n                <li>Recommends the next best product for each customer, learning from what they do across every visit<\/li>\n              <\/ul>\n              <p>Launch it, and it doesn't stand still. It starts making every send better. \u2192<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div class=\"lma-does__panel\" id=\"lma-does-panel-4\">\n          <figure class=\"lma-does__media\">\n            <span class=\"lma-does__glow\" aria-hidden=\"true\"><\/span>\n            <video class=\"lma-does__shot\" src=\"https:\/\/www.bloomreach.com\/wp-content\/uploads\/2026\/09\/BUILD-02.mp4\" loop muted autoplay playsinline>\n          <\/figure>\n          <div class=\"lma-does__txt\">\n            <h3 class=\"lma-does__headline\">Different creative for every customer \u2014 no designer required<\/h3>\n            <div class=\"lma-does__body\">\n              <p>Give the agent an image and a goal and it starts with the audience, not the asset. It reads your audience for the sub-clusters that respond differently and builds a distinct variant for each \u2014 tuned to lifecycle stage, value tier,  category affinity, and more \u2014 and tells you who each variant is for and why.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div class=\"lma-does__panel\" id=\"lma-does-panel-5\">\n          <figure class=\"lma-does__media\">\n            <span class=\"lma-does__glow\" aria-hidden=\"true\"><\/span>\n            <video class=\"lma-does__shot\" src=\"https:\/\/www.bloomreach.com\/wp-content\/uploads\/2026\/09\/OPT.mp4\" loop muted autoplay playsinline>\n          <\/figure>\n          <div class=\"lma-does__txt\">\n            <h3 class=\"lma-does__headline\">It gets sharper with every send<\/h3>\n            <div class=\"lma-does__body\">\n              <p>Once a campaign is live, it keeps working. It serves the best-performing version to each customer, learns while the campaign runs, and feeds what it learns into the next one.<\/p>\n              <ul>\n                <li>Automatically serves the best-performing version to each customer<\/li>\n                <li>Learns while the campaign runs and shifts toward what's converting in the moment<\/li>\n              <\/ul>\n              <p>What it learns here doesn't sit in a report. It feeds the next campaign, so analysis starts sharper and the loop closes.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3eb347b e-con-full e-flex e-con e-parent\" data-id=\"3eb347b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4b313875 elementor-widget elementor-widget-html\" data-id=\"4b313875\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"lma\">\n<section class=\"lma-section lma-video\" id=\"customer-story\">\n  <div class=\"lma-container\">\n    <div class=\"lma-video__head\">\n      <h2 class=\"lma-d2 lma-video__title\">One Small Team<br>With the Output of a Big One<\/h2>\n      <p class=\"lma-lead lma-video__sub\">See the impact a real Bloomreach customer had with the Loomi marketing agent.<\/p>\n    <\/div>\n    <div class=\"lma-video__player\" data-lma-video>\n      <img class=\"lma-video__poster\" src=\"\/wp-content\/uploads\/2026\/09\/marketing-agent-video-poster-customer-story.jpg\" width=\"1895\" height=\"1059\" loading=\"lazy\" decoding=\"async\" alt=\"Bloomreach customer speaking to camera in her studio about the Loomi Marketing Agent\">\n      <div class=\"lma-video__play\" data-video-src=\"https:\/\/www.bloomreach.com\/wp-content\/uploads\/2026\/09\/BR_260Sample-Sale_Loomi.mp4\">\n        <svg viewBox=\"0 0 32 36\" width=\"32\" height=\"36\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M0 0 L32 18 L0 36 Z\" fill=\"currentColor\"\/><\/svg>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-66c4d00f e-con-full e-flex e-con e-parent\" data-id=\"66c4d00f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1d87fa4d elementor-widget elementor-widget-html\" data-id=\"1d87fa4d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"lma\">\n<section class=\"lma-section lma-midcta\">\n  <div class=\"lma-midcta__glow\" aria-hidden=\"true\"><\/div>\n  <div class=\"lma-container lma-midcta__inner\">\n    <div class=\"lma-midcta__card\">\n      <h2 class=\"lma-d3 lma-midcta__title\">That's the Loop \u2014 See What It Could Do for You<\/h2>\n      <p class=\"lma-lead lma-midcta__sub\">Bring your hardest growth problem, and we'll spend 30 minutes on it.<\/p>\n      <a class=\"lma-btn lma-btn--blue lma-midcta__cta\" href=\"#get-started\">Schedule a 30-Minute Demo<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-12c507ab e-con-full e-flex e-con e-parent\" data-id=\"12c507ab\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3f184ad1 elementor-widget elementor-widget-html\" data-id=\"3f184ad1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"lma\">\n<!-- Under the hood: three gradient panels with CSS\/SVG diagrams -->\n<section class=\"lma-section lma-hood\" id=\"under-the-hood\">\n  <div class=\"lma-container\">\n    <div class=\"lma-hood__head\">\n      <p class=\"lma-eyebrow lma-hood__eyebrow\">Under the hood<\/p>\n      <h2 class=\"lma-hood__title\">One Agent, Built on What You Can't Build Yourself<\/h2>\n    <\/div>\n    <div class=\"lma-hood__cols\">\n\n      <article class=\"lma-hood__col\">\n        <div class=\"lma-hood__panel lma-hood__panel--a\">\n          <span class=\"lma-hood__blob lma-hood__blob--a\" aria-hidden=\"true\"><\/span>\n          <div class=\"lma-hood__viz lma-hood__viz--orbit\" aria-hidden=\"true\">\n            <svg class=\"lma-hood__viz-svg\" viewBox=\"0 0 541 542\" fill=\"none\" focusable=\"false\">\n              <defs>\n                <linearGradient id=\"lmaHoodRing\" x1=\"238\" y1=\"252\" x2=\"300\" y2=\"290\" gradientUnits=\"userSpaceOnUse\">\n                  <stop offset=\"0\" stop-color=\"#0099ce\"\/>\n                  <stop offset=\"0.5\" stop-color=\"#6ec49a\"\/>\n                  <stop offset=\"1\" stop-color=\"#fdd400\"\/>\n                <\/linearGradient>\n                <filter id=\"lmaHoodDisc\" x=\"190\" y=\"196\" width=\"158\" height=\"158\" filterUnits=\"userSpaceOnUse\">\n                  <feDropShadow dx=\"0\" dy=\"4\" stdDeviation=\"8\" flood-color=\"#0a2a3a\" flood-opacity=\"0.12\"\/>\n                <\/filter>\n              <\/defs>\n              <circle cx=\"269\" cy=\"271\" r=\"172\" stroke=\"#1f2937\" stroke-opacity=\"0.42\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-dasharray=\"0.1 8\"\/>\n              <circle cx=\"269\" cy=\"271\" r=\"100\" stroke=\"#1f2937\" stroke-opacity=\"0.42\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-dasharray=\"0.1 8\"\/>\n              <circle cx=\"269\" cy=\"271\" r=\"49\" fill=\"#ffffff\" filter=\"url(#lmaHoodDisc)\"\/>\n              <circle cx=\"269\" cy=\"271\" r=\"31.5\" stroke=\"url(#lmaHoodRing)\" stroke-width=\"3\"\/>\n            <\/svg>\n            <span class=\"lma-hood__chip lma-hood__chip--n\">Analyze<\/span>\n            <span class=\"lma-hood__chip lma-hood__chip--e\">Strategize<\/span>\n            <span class=\"lma-hood__chip lma-hood__chip--s\">Build<\/span>\n            <span class=\"lma-hood__chip lma-hood__chip--w\">Optimize<\/span>\n          <\/div>\n        <\/div>\n        <h3 class=\"lma-hood__card-title\">One Agent, One Memory<\/h3>\n        <p class=\"lma-body lma-hood__card-body\">The intelligence that spots the opportunity is the same one that builds the campaign and tunes it after launch. Nothing gets handed off or lost between steps, so every decision stays aimed at the goal you set. It works like a teammate who's been onboarded, not a contractor meeting your brand cold.<\/p>\n      <\/article>\n\n      <article class=\"lma-hood__col\">\n        <div class=\"lma-hood__panel lma-hood__panel--b\">\n          <span class=\"lma-hood__blob lma-hood__blob--b\" aria-hidden=\"true\"><\/span>\n          <div class=\"lma-hood__viz lma-hood__viz--feed\" aria-hidden=\"true\">\n            <svg class=\"lma-hood__viz-svg\" viewBox=\"0 0 541 542\" fill=\"none\" focusable=\"false\">\n              <g stroke=\"#0a0a0a\" stroke-width=\"1\" fill=\"none\">\n                <path d=\"M209.67 205.5 C 255 205.5, 266 271.5, 302 271.5\"\/>\n                <path d=\"M198.67 271.5 L 302 271.5\"\/>\n                <path d=\"M194.67 337.5 C 245 337.5, 262 271.5, 302 271.5\"\/>\n              <\/g>\n              <g fill=\"#0a0a0a\">\n                <circle cx=\"209.67\" cy=\"205.5\" r=\"3\"\/>\n                <circle cx=\"198.67\" cy=\"271.5\" r=\"3\"\/>\n                <circle cx=\"194.67\" cy=\"337.5\" r=\"3\"\/>\n                <circle cx=\"306.17\" cy=\"271.5\" r=\"3.5\"\/>\n              <\/g>\n            <\/svg>\n            <span class=\"lma-hood__chip lma-hood__chip--f1\">First-party data<\/span>\n            <span class=\"lma-hood__chip lma-hood__chip--f2\">Live behavior<\/span>\n            <span class=\"lma-hood__chip lma-hood__chip--f3\">Catalog<\/span>\n            <div class=\"lma-hood__record\">\n              <div class=\"lma-hood__record-top\">\n                <span class=\"lma-hood__avatar\"><\/span>\n                <span class=\"lma-hood__status\"><\/span>\n              <\/div>\n              <span class=\"lma-hood__bar\"><\/span>\n              <span class=\"lma-hood__bar lma-hood__bar--short\"><\/span>\n            <\/div>\n            <span class=\"lma-hood__caption\">updated in ms<\/span>\n          <\/div>\n        <\/div>\n        <h3 class=\"lma-hood__card-title lma-hood__card-title--b\">It Reasons From Live Data<\/h3>\n        <p class=\"lma-body lma-hood__card-body\">It runs on Loomi, Bloomreach's real-time intelligence layer. First-party data, live behavior, and your catalog become a single view of each customer, updated in milliseconds. The agent reasons from it at every step. Its models train on billions of interactions across 1,400 brands, so it never has to guess.<\/p>\n      <\/article>\n\n      <article class=\"lma-hood__col\">\n        <div class=\"lma-hood__panel lma-hood__panel--c\">\n          <span class=\"lma-hood__blob lma-hood__blob--c\" aria-hidden=\"true\"><\/span>\n          <div class=\"lma-hood__viz lma-hood__viz--stack\" aria-hidden=\"true\">\n            <div class=\"lma-hood__stack\">\n              <span class=\"lma-hood__slab\" style=\"width:69.14%\">30+ patents<\/span>\n              <span class=\"lma-hood__slab\" style=\"width:75.31%\">15 years<\/span>\n              <span class=\"lma-hood__slab\" style=\"width:81.48%\">1,400 brands<\/span>\n              <span class=\"lma-hood__slab\" style=\"width:87.65%\">optimization models<\/span>\n              <span class=\"lma-hood__slab\" style=\"width:93.83%\">semantic layer<\/span>\n              <span class=\"lma-hood__slab\" style=\"width:100%\">real-time profiles<\/span>\n            <\/div>\n          <\/div>\n        <\/div>\n        <h3 class=\"lma-hood__card-title lma-hood__card-title--c\">15 Years You Don't Have To Spend<\/h3>\n        <p class=\"lma-body lma-hood__card-body\">You could wire together foundational models, analytics tools, and design software to copy pieces of this. You can't copy the platform they run on. That platform is Loomi, and it took 15 years, 30+ patents, and a full team keeping the data secure and the models current. That's not a build decision. It's already running, so your team actually markets instead of maintaining infrastructure.<\/p>\n      <\/article>\n\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5f64a3f9 e-con-full e-flex e-con e-parent\" data-id=\"5f64a3f9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-10950310 elementor-widget elementor-widget-html\" data-id=\"10950310\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"lma\">\n<!-- Guardrails: four assurance columns with outlined icon badges -->\n<section class=\"lma-section lma-rails\" id=\"guardrails\">\n  <div class=\"lma-container\">\n    <div class=\"lma-rails__head\">\n      <p class=\"lma-eyebrow lma-rails__eyebrow\">Guardrails<\/p>\n      <h2 class=\"lma-rails__title\">Nothing Launches Without You and Nothing Goes Off-Brand<\/h2>\n    <\/div>\n    <div class=\"lma-rails__cols\">\n\n      <article class=\"lma-rails__col\">\n        <span class=\"lma-rails__badge\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\">\n            <path d=\"M12 1.75 3.75 5v6.1c0 4.7 3.3 9.1 8.25 11.15 4.95-2.05 8.25-6.45 8.25-11.15V5Z\"\/>\n            <path d=\"m8.5 11.75 2.5 2.5 4.5-4.5\"\/>\n          <\/svg>\n        <\/span>\n        <h3 class=\"lma-d4 lma-rails__card-title\">You Give Final Approval<\/h3>\n        <p class=\"lma-body lma-rails__card-body\">The AI does the heavy lifting, but you have the final say. Review every campaign, edit anything, or route it to your team for sign-off first. Nothing ships on its own.<\/p>\n      <\/article>\n\n      <article class=\"lma-rails__col\">\n        <span class=\"lma-rails__badge\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\">\n            <rect x=\"1.75\" y=\"3.75\" width=\"13.5\" height=\"11\" rx=\"2\"\/>\n            <path d=\"M1.75 7.25h13.5M4.75 10.5h3M4.75 12.4h5\"\/>\n            <path d=\"M13.5 17.5a4.75 4.75 0 1 0 4.75-4.75\"\/>\n            <path d=\"m15.9 18.4 2.35 2.35 3.95-4.2\"\/>\n          <\/svg>\n        <\/span>\n        <h3 class=\"lma-d4 lma-rails__card-title\">Works With Your Tools<\/h3>\n        <p class=\"lma-body lma-rails__card-body\">Loomi marketing agent fits right into your setup. Connect seamlessly with major platforms like Shopify, Snowflake, Databricks, plus 130+ other tools you already use. Have a custom need? Our flexible system makes it simple to connect to almost anything.<\/p>\n      <\/article>\n\n      <article class=\"lma-rails__col\">\n        <span class=\"lma-rails__badge\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\">\n            <path d=\"M20.5 12.25v7.5a2 2 0 0 1-2 2h-13a2 2 0 0 1-2-2v-13a2 2 0 0 1 2-2h7.5\"\/>\n            <path d=\"M18.4 2.35a1.9 1.9 0 0 1 2.7 2.7l-8.3 8.3-3.4.7.7-3.4Z\"\/>\n          <\/svg>\n        <\/span>\n        <h3 class=\"lma-d4 lma-rails__card-title\">On-Brand in Every Campaign<\/h3>\n        <p class=\"lma-body lma-rails__card-body\">Save your brand guidelines once. Every email and SMS matches your voice, your look, and your rules \u2014 without you rechecking each one.<\/p>\n      <\/article>\n\n      <article class=\"lma-rails__col\">\n        <span class=\"lma-rails__badge\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\">\n            <rect x=\"4.75\" y=\"10.25\" width=\"14.5\" height=\"11.5\" rx=\"2.5\"\/>\n            <path d=\"M8 10.25V7a4 4 0 0 1 8 0v3.25\"\/>\n            <path d=\"M12 14.75v2.5\"\/>\n          <\/svg>\n        <\/span>\n        <h3 class=\"lma-d4 lma-rails__card-title\">Uncompromising Security<\/h3>\n        <p class=\"lma-body lma-rails__card-body\">We were the first SaaS company to be GDPR-certified and continue to meet rigorous standards like ISO 27001 and SOC 2 Type II. Your data stays yours. Protect your brand and your customers.<\/p>\n      <\/article>\n\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7352470f e-con-full e-flex e-con e-parent\" data-id=\"7352470f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5645bdc4 elementor-widget elementor-widget-html\" data-id=\"5645bdc4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"lma\">\n<section class=\"lma-section lma-proof\" id=\"proof\">\n  <div class=\"lma-container\">\n    <header class=\"lma-proof__head\">\n      <p class=\"lma-eyebrow lma-proof__eyebrow\">Proof<\/p>\n      <h2 class=\"lma-proof__title\">Do More With the Team You Have \u2014 These Brands Already Are<\/h2>\n    <\/header>\n    <div class=\"lma-proof__carousel\" data-proof-carousel>\n      <div class=\"lma-proof__viewport\">\n        <ul class=\"lma-proof__track\" data-proof-track>\n          <li class=\"lma-proof__slide lma-proof__slide--revolution\" data-proof-slide>\n            <img class=\"lma-proof__photo\" src=\"\/wp-content\/uploads\/2026\/09\/marketing-agent-proof-portrait.jpg\" alt=\"\" width=\"1920\" height=\"1281\" loading=\"lazy\" decoding=\"async\">\n            <div class=\"lma-proof__card\">\n              <img class=\"lma-proof__logo lma-proof__logo--revolution\" src=\"\/wp-content\/uploads\/2026\/09\/marketing-agent-proof-logo-revolution.png\" alt=\"Revolution Beauty London\" width=\"155\" height=\"27\" loading=\"lazy\" decoding=\"async\">\n              <div class=\"lma-proof__quote-group\">\n                <blockquote class=\"lma-proof__quote\">\n                  <p>\u201cIt's incredible <strong>what marketing agent has unlocked for us.<\/strong> It's so easy to build campaigns now \u2014 and they've been <strong>performing even better than we expected.\u201d<\/strong><\/p>\n                <\/blockquote>\n                <p class=\"lma-proof__attrib\"><cite class=\"lma-proof__cite\">Ash Madhav<\/cite> &middot; Revolution Beauty<\/p>\n              <\/div>\n              <ul class=\"lma-proof__metrics\">\n                <li class=\"lma-proof__metric\">\n                  <span class=\"lma-grad-text lma-proof__metric-num\">2x<\/span>\n                  <span class=\"lma-proof__metric-label\">more revenue per email, and campaigns that took weeks now take minutes<\/span>\n                <\/li>\n                <li class=\"lma-proof__metric\">\n                  <span class=\"lma-grad-text lma-proof__metric-num\">13.9%<\/span>\n                  <span class=\"lma-proof__metric-label\">of email revenue from new campaigns the agent built<\/span>\n                <\/li>\n              <\/ul>\n            <\/div>\n          <\/li>\n          <li class=\"lma-proof__slide lma-proof__slide--sideshow\" data-proof-slide>\n            <img class=\"lma-proof__photo\" src=\"\/wp-content\/uploads\/2026\/09\/marketing-agent-proof-sideshow.jpg\" alt=\"\" width=\"1920\" height=\"1280\" loading=\"lazy\" decoding=\"async\">\n            <div class=\"lma-proof__card\">\n              <img class=\"lma-proof__logo lma-proof__logo--sideshow\" src=\"\/wp-content\/uploads\/2026\/09\/marketing-agent-proof-logo-sideshow.png\" alt=\"Sideshow\" width=\"146\" height=\"54\" loading=\"lazy\" decoding=\"async\">\n              <div class=\"lma-proof__quote-group\">\n                <blockquote class=\"lma-proof__quote\">\n                  <p>\u201cWith marketing agent, we can go from campaign <strong>idea to launch in under 15 minutes.\u201d<\/strong><\/p>\n                <\/blockquote>\n                <p class=\"lma-proof__attrib\"><cite class=\"lma-proof__cite\">Dennis Bower<\/cite> &middot; SIDESHOW<\/p>\n              <\/div>\n              <ul class=\"lma-proof__metrics\">\n                <li class=\"lma-proof__metric\">\n                  <span class=\"lma-grad-text lma-proof__metric-num\">15 min<\/span>\n                  <span class=\"lma-proof__metric-label\">from concept to launch<\/span>\n                <\/li>\n                <li class=\"lma-proof__metric\">\n                  <span class=\"lma-grad-text lma-proof__metric-num\">2x<\/span>\n                  <span class=\"lma-proof__metric-label\"> revenue per email, with 200+ post-purchase journeys automated into one campaign<\/span>\n                <\/li>\n              <\/ul>\n            <\/div>\n          <\/li>\n          <li class=\"lma-proof__slide lma-proof__slide--sample\" data-proof-slide>\n            <img class=\"lma-proof__photo\" src=\"\/wp-content\/uploads\/2026\/09\/marketing-agent-proof-260.jpg\" alt=\"\" width=\"1920\" height=\"1069\" loading=\"lazy\" decoding=\"async\">\n            <div class=\"lma-proof__card\">\n              <img class=\"lma-proof__logo lma-proof__logo--sample\" src=\"\/wp-content\/uploads\/2026\/09\/marketing-agent-proof-logo-260.jpg\" alt=\"260 Sample Sale\" width=\"188\" height=\"34\" loading=\"lazy\" decoding=\"async\">\n              <div class=\"lma-proof__quote-group\">\n                <blockquote class=\"lma-proof__quote\">\n                  <p>\u201cHaving marketing agent create the campaigns for us is great because it\u2019s <strong>an AI tool that can find the right people<\/strong> and build the segments better than a human would have.\u201d<\/p>\n                <\/blockquote>\n                <p class=\"lma-proof__attrib\"><cite class=\"lma-proof__cite\">Laura DiGiovanna<\/cite> &middot; 260 Sample Sale<\/p>\n              <\/div>\n              <ul class=\"lma-proof__metrics\">\n                <li class=\"lma-proof__metric\">\n                  <span class=\"lma-grad-text lma-proof__metric-num\">$580K+<\/span>\n                  <span class=\"lma-proof__metric-label\">in AI-attributed revenue across four automated scenarios<\/span>\n                <\/li>\n                <li class=\"lma-proof__metric\">\n                  <span class=\"lma-grad-text lma-proof__metric-num\">2.4x<\/span>\n                  <span class=\"lma-proof__metric-label\">higher conversion on agent-built emails, saving the team from a 35-hour weekly campaign grind<\/span>\n                <\/li>\n              <\/ul>\n            <\/div>\n          <\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"lma-proof__controls\" data-proof-controls>\n        <div class=\"lma-nav-btn lma-proof__nav\" data-proof-prev>\n          <svg class=\"lma-proof__nav-icon lma-proof__nav-icon--back\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M3.5 12h17\"\/><path d=\"m13.5 5 7 7-7 7\"\/><\/svg>\n        <\/div>\n        <div class=\"lma-nav-btn lma-nav-btn--solid lma-proof__nav\" data-proof-next>\n          <svg class=\"lma-proof__nav-icon\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M3.5 12h17\"\/><path d=\"m13.5 5 7 7-7 7\"\/><\/svg>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4e2fd37d e-con-full e-flex e-con e-parent\" data-id=\"4e2fd37d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d544701 elementor-widget elementor-widget-html\" data-id=\"5d544701\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"lma\">\n<section class=\"lma-section lma-start\" id=\"get-started\">\n  <div class=\"lma-start__wash\" aria-hidden=\"true\"><\/div>\n  <div class=\"lma-container lma-start__inner\">\n    <div class=\"lma-start__card\">\n      <div class=\"lma-start__copy\">\n        <div class=\"lma-start__intro\">\n          <p class=\"lma-eyebrow lma-start__eyebrow\">Get started<\/p>\n          <h2 class=\"lma-start__title\">Bring Your Hardest Growth Problem<\/h2>\n          <p class=\"lma-start__body\">Fill out the form and we'll spend 30 minutes on you. We'll focus on where you're trying\u2028to grow, what's holding you back, and exactly where the Loomi marketing agent moves the numbers that matter: revenue, conversion, and loyalty.<\/p>\n        <\/div>\n        <div class=\"lma-start__gets\">\n          <p class=\"lma-start__label\">What you get<\/p>\n          <ul class=\"lma-start__list\">\n            <li class=\"lma-start__item\">\n              <span class=\"lma-start__arrow\" aria-hidden=\"true\">&rarr;<\/span>\n              <span class=\"lma-start__item-text\">A clear read on where the agent can lift revenue, conversion, and loyalty for your program.<\/span>\n            <\/li>\n            <li class=\"lma-start__item\">\n              <span class=\"lma-start__arrow\" aria-hidden=\"true\">&rarr;<\/span>\n              <span class=\"lma-start__item-text\">The agent in action with real examples, mapped to a challenge you&rsquo;re facing.<\/span>\n            <\/li>\n            <li class=\"lma-start__item\">\n              <span class=\"lma-start__arrow\" aria-hidden=\"true\">&rarr;<\/span>\n              <span class=\"lma-start__item-text\">How it stacks up against the other agents you&rsquo;re weighing.<\/span>\n            <\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n      <div class=\"lma-start__form-card bloomreach_hs_form hubspot-form-shortcode\">\n        <div class=\"lma-start__form-head\">\n          <h3 class=\"lma-start__form-title\">Talk to a Migration Specialist<\/h3>\n          <p class=\"lma-start__form-sub\">No commitment. Average response within one business day.<\/p>\n        <\/div>\n        <script charset=\"utf-8\" type=\"text\/javascript\" src=\"\/\/js.hsforms.net\/forms\/embed\/v2.js\"><\/script>\n        <script>\n          hbspt.forms.create({\n            portalId: \"7227558\",\n            formId: \"f1ba7019-e570-4381-a239-8007c4552c01\",\n            region: \"na1\"\n          });\n        <\/script>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2f91736c e-con-full e-flex e-con e-parent\" data-id=\"2f91736c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-607cfc6a elementor-widget elementor-widget-html\" data-id=\"607cfc6a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"lma\">\n<section class=\"lma-section lma-faq\" id=\"faq\">\n  <div class=\"lma-container lma-faq__inner\">\n    <h2 class=\"lma-d2 lma-faq__title\">Frequently Asked Questions<\/h2>\n    <div class=\"lma-faq__list\">\n      <div class=\"lma-faq__item\">\n        <h3 class=\"lma-faq__q\">\n          <div class=\"lma-faq__trigger\" data-controls=\"lma-faq-panel-1\">\n            <span class=\"lma-faq__q-text\">Is Loomi marketing agent a standalone product?<\/span>\n            <span class=\"lma-faq__icon\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 30 30\" width=\"30\" height=\"30\" focusable=\"false\"><circle cx=\"15\" cy=\"15\" r=\"15\" fill=\"#feed1b\"\/><path d=\"M10.5 13.2l4.5 4.2 4.5-4.2\" fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n            <\/span>\n          <\/div>\n        <\/h3>\n        <div class=\"lma-faq__panel\" id=\"lma-faq-panel-1\" hidden>\n          <div class=\"lma-faq__panel-inner\">\n            <p class=\"lma-faq__a\">No. Loomi marketing agent runs on Bloomreach marketing automation (Engagement), so you'll need that to use it. It works from your unified customer data to build and run personalized email and SMS campaigns.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"lma-faq__item\">\n        <h3 class=\"lma-faq__q\">\n          <div class=\"lma-faq__trigger\" data-controls=\"lma-faq-panel-2\">\n            <span class=\"lma-faq__q-text\">How is Loomi marketing agent different from other AI marketing tools?<\/span>\n            <span class=\"lma-faq__icon\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 30 30\" width=\"30\" height=\"30\" focusable=\"false\"><circle cx=\"15\" cy=\"15\" r=\"15\" fill=\"#feed1b\"\/><path d=\"M10.5 13.2l4.5 4.2 4.5-4.2\" fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n            <\/span>\n          <\/div>\n        <\/h3>\n        <div class=\"lma-faq__panel\" id=\"lma-faq-panel-2\" hidden>\n          <div class=\"lma-faq__panel-inner\">\n            <p class=\"lma-faq__a\">Most other agents come in pieces, such as a stack of tools to connect or a swarm to configure and orchestrate. The context disappears at every handoff. Loomi marketing agent is a single agent that holds the whole job in a single thread. From a plain-English prompt, it builds the audience, sets the timing, writes the personalization, and assembles the campaign. It runs on <a class=\"lma-faq__link\" href=\"https:\/\/loomi.ai\" target=\"_blank\" rel=\"noopener\">Loomi<\/a>, reasoning from your unified customer profiles, product catalog, and live behavior. Plus, it's generally available today (and not sitting behind a waitlist), already driving hundreds of thousands of dollars in AI-attributed revenue for live brands.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"lma-faq__item\">\n        <h3 class=\"lma-faq__q\">\n          <div class=\"lma-faq__trigger\" data-controls=\"lma-faq-panel-3\">\n            <span class=\"lma-faq__q-text\">Who is Loomi marketing agent for?<\/span>\n            <span class=\"lma-faq__icon\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 30 30\" width=\"30\" height=\"30\" focusable=\"false\"><circle cx=\"15\" cy=\"15\" r=\"15\" fill=\"#feed1b\"\/><path d=\"M10.5 13.2l4.5 4.2 4.5-4.2\" fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n            <\/span>\n          <\/div>\n        <\/h3>\n        <div class=\"lma-faq__panel\" id=\"lma-faq-panel-3\" hidden>\n          <div class=\"lma-faq__panel-inner\">\n            <p class=\"lma-faq__a\">It's built for the marketers who own the owned-channel program: CRM, retention, and lifecycle. For lean teams, it clears the backlog of ideas you never had time to test. For enterprise teams, it removes the technical bottlenecks that hold up complex, personalized campaigns (basically, no need to submit developer tickets).  Its semantic layer reads any data schema, so it works across retail, travel, financial services, and more.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"lma-faq__item\">\n        <h3 class=\"lma-faq__q\">\n          <div class=\"lma-faq__trigger\" data-controls=\"lma-faq-panel-4\">\n            <span class=\"lma-faq__q-text\">Can I still edit the campaigns it builds?<\/span>\n            <span class=\"lma-faq__icon\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 30 30\" width=\"30\" height=\"30\" focusable=\"false\"><circle cx=\"15\" cy=\"15\" r=\"15\" fill=\"#feed1b\"\/><path d=\"M10.5 13.2l4.5 4.2 4.5-4.2\" fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n            <\/span>\n          <\/div>\n        <\/h3>\n        <div class=\"lma-faq__panel\" id=\"lma-faq-panel-4\" hidden>\n          <div class=\"lma-faq__panel-inner\">\n            <p class=\"lma-faq__a\">Yes. The agent delivers a complete, launch-ready draft, and you stay in control. Review the strategy, edit any part, and approve before anything ships. You can also route it to your team for sign-off first.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"lma-faq__item\">\n        <h3 class=\"lma-faq__q\">\n          <div class=\"lma-faq__trigger\" data-controls=\"lma-faq-panel-5\">\n            <span class=\"lma-faq__q-text\">What happens if it can't do what I ask?<\/span>\n            <span class=\"lma-faq__icon\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 30 30\" width=\"30\" height=\"30\" focusable=\"false\"><circle cx=\"15\" cy=\"15\" r=\"15\" fill=\"#feed1b\"\/><path d=\"M10.5 13.2l4.5 4.2 4.5-4.2\" fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n            <\/span>\n          <\/div>\n        <\/h3>\n        <div class=\"lma-faq__panel\" id=\"lma-faq-panel-5\" hidden>\n          <div class=\"lma-faq__panel-inner\">\n            <p class=\"lma-faq__a\">It tells you. If a request needs data you haven't mapped, or requires something it can't do yet, it explains why and suggests another way to reach the result, instead of guessing or inventing one.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"lma-faq__item\">\n        <h3 class=\"lma-faq__q\">\n          <div class=\"lma-faq__trigger\" data-controls=\"lma-faq-panel-6\">\n            <span class=\"lma-faq__q-text\">Which channels does it support?<\/span>\n            <span class=\"lma-faq__icon\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 30 30\" width=\"30\" height=\"30\" focusable=\"false\"><circle cx=\"15\" cy=\"15\" r=\"15\" fill=\"#feed1b\"\/><path d=\"M10.5 13.2l4.5 4.2 4.5-4.2\" fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n            <\/span>\n          <\/div>\n        <\/h3>\n        <div class=\"lma-faq__panel\" id=\"lma-faq-panel-6\" hidden>\n          <div class=\"lma-faq__panel-inner\">\n            <p class=\"lma-faq__a\">Today, it runs email and SMS and orchestrates between them, plus A\/B testing.<br>More channels are on the roadmap.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"lma-faq__item\">\n        <h3 class=\"lma-faq__q\">\n          <div class=\"lma-faq__trigger\" data-controls=\"lma-faq-panel-7\">\n            <span class=\"lma-faq__q-text\">How does the Loomi marketing agent actually get smarter?<\/span>\n            <span class=\"lma-faq__icon\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 30 30\" width=\"30\" height=\"30\" focusable=\"false\"><circle cx=\"15\" cy=\"15\" r=\"15\" fill=\"#feed1b\"\/><path d=\"M10.5 13.2l4.5 4.2 4.5-4.2\" fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n            <\/span>\n          <\/div>\n        <\/h3>\n        <div class=\"lma-faq__panel\" id=\"lma-faq-panel-7\" hidden>\n          <div class=\"lma-faq__panel-inner\">\n            <p class=\"lma-faq__a\">Two ways. It starts smart, reasoning from your live customer data instead of a blank slate. And, it learns as it works, picking up which content, audiences, and timing drive results, so it keeps getting sharper the more you use it.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"lma-faq__item\">\n        <h3 class=\"lma-faq__q\">\n          <div class=\"lma-faq__trigger\" data-controls=\"lma-faq-panel-8\">\n            <span class=\"lma-faq__q-text\">How is it different from the Loomi marketing agent we already have?<\/span>\n            <span class=\"lma-faq__icon\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 30 30\" width=\"30\" height=\"30\" focusable=\"false\"><circle cx=\"15\" cy=\"15\" r=\"15\" fill=\"#feed1b\"\/><path d=\"M10.5 13.2l4.5 4.2 4.5-4.2\" fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n            <\/span>\n          <\/div>\n        <\/h3>\n        <div class=\"lma-faq__panel\" id=\"lma-faq-panel-8\" hidden>\n          <div class=\"lma-faq__panel-inner\">\n            <p class=\"lma-faq__a\">It's the same Loomi marketing agent, only enhanced. It's now one agent that spans analysis, campaign building, content, and optimization in a single continuous thread, instead of separate steps that lose context at each handoff. Same agent, a lot more capable.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"lma-faq__item\">\n        <h3 class=\"lma-faq__q\">\n          <div class=\"lma-faq__trigger\" data-controls=\"lma-faq-panel-9\">\n            <span class=\"lma-faq__q-text\">What's live today, and what's on the roadmap?<\/span>\n            <span class=\"lma-faq__icon\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 30 30\" width=\"30\" height=\"30\" focusable=\"false\"><circle cx=\"15\" cy=\"15\" r=\"15\" fill=\"#feed1b\"\/><path d=\"M10.5 13.2l4.5 4.2 4.5-4.2\" fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n            <\/span>\n          <\/div>\n        <\/h3>\n        <div class=\"lma-faq__panel\" id=\"lma-faq-panel-9\" hidden>\n          <div class=\"lma-faq__panel-inner\">\n            <p class=\"lma-faq__a\">Campaign building across email and SMS is generally available today. Through the rest of 2026, new modes (content, insights, and data) plus deeper memory and intelligence roll out, and will be generally available in early 2027. More channels follow.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5a06fa26 e-con-full e-flex e-con e-parent\" data-id=\"5a06fa26\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-24a38325 elementor-widget elementor-widget-html\" data-id=\"24a38325\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\nwindow.addEventListener('message', event => {\n\tif(event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormReady') {\n\t\tinitHubSpotForms();\n\t}\n});\n\n(function(){\nwindow.LMA_BUILD = \"html 2026-09-22T14:31\";\nfunction LMA_INIT(){\n\/\/ Shared touch swipe for the carousels. Both builders prepend this to their JS bundle.\n\/\/ Not Swiper: that would mean a CDN <script> on a site that already strips <script> from\n\/\/ imported content, plus adopting its markup contract for two sliders that already work.\nwindow.lmaSwipe = function (el, onSwipe) {\n  if (!el || el.dataset.lmaSwipeReady === '1') return;\n  el.dataset.lmaSwipeReady = '1';\n  var x0 = null, y0 = 0, t0 = 0, horizontal = false;\n  function start(e) {\n    var p = e.touches[0];\n    x0 = p.clientX; y0 = p.clientY; t0 = Date.now(); horizontal = false;\n  }\n  function move(e) {\n    if (x0 === null) return;\n    var p = e.touches[0];\n    var dx = p.clientX - x0, dy = p.clientY - y0;\n    \/\/ claim the gesture only once it is clearly sideways, so vertical page scrolling still works\n    if (!horizontal && Math.abs(dx) > 10 && Math.abs(dx) > Math.abs(dy) * 1.4) horizontal = true;\n    if (horizontal && e.cancelable) e.preventDefault();\n  }\n  function end(e) {\n    if (x0 === null) return;\n    var p = e.changedTouches[0];\n    var dx = p.clientX - x0, dy = p.clientY - y0, dt = Date.now() - t0;\n    x0 = null;\n    if (!horizontal || Math.abs(dx) < 40 || Math.abs(dx) < Math.abs(dy) || dt > 900) return;\n    onSwipe(dx < 0 ? 1 : -1);\n  }\n  el.addEventListener('touchstart', start, { passive: true });\n  el.addEventListener('touchmove', move, { passive: false });\n  el.addEventListener('touchend', end, { passive: true });\n  el.addEventListener('touchcancel', function () { x0 = null; }, { passive: true });\n};\n\/* 01-hero *\/\n\/\/ Hero prompt box submit\n(function () {\n  function initPrompt(form) {\n    if (form.dataset.lmaPromptReady === '1') return;\n    form.dataset.lmaPromptReady = '1';\n    \/\/ the send control is a div, so it cannot submit the form on its own\n    var send = form.querySelector('[data-lma-prompt-send]');\n    if (send) {\n      send.addEventListener('click', function () {\n        if (typeof form.requestSubmit === 'function') form.requestSubmit();\n        else form.submit();\n      });\n    }\n    \/\/ no backend here; the demo CTA is the real destination\n    form.addEventListener('submit', function (e) {\n      e.preventDefault();\n      var cta = document.querySelector('#get-started');\n      if (cta) cta.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    });\n  }\n  function boot() {\n    var forms = document.querySelectorAll('[data-lma-prompt]');\n    for (var j = 0; j < forms.length; j++) initPrompt(forms[j]);\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot);\n  else boot();\n})();\n\/* 04-does *\/\n\/\/ Section 04 - five screens (Analyze, Strategize, Build 1, Build 2, Optimize) across four labels.\n(function () {\n  'use strict';\n  var sections = document.querySelectorAll('.lma-does');\n  Array.prototype.forEach.call(sections, function (root) {\n    if (root.dataset.lmaDoesReady === '1') { return; }\n    root.dataset.lmaDoesReady = '1';\n    var tabs = Array.prototype.slice.call(root.querySelectorAll('[data-does-tab]'));\n    var panels = Array.prototype.slice.call(root.querySelectorAll('.lma-does__panel'));\n    var halves = Array.prototype.slice.call(root.querySelectorAll('[data-does-half]'));\n    var prevBtn = root.querySelector('[data-does-prev]');\n    var nextBtn = root.querySelector('[data-does-next]');\n    if (!tabs.length || !panels.length) { return; }\n    var count = panels.length;\n    var current = Math.max(0, panels.findIndex(function (p) { return p.classList.contains('is-active'); }));\n\n    function select(index) {\n      current = (index + count) % count;\n      \/\/ the state lives on the root so CSS can keep the Build label lit across both Build screens\n      root.dataset.doesState = String(current);\n      tabs.forEach(function (tab) {\n        tab.classList.toggle('is-active', Number(tab.dataset.doesTab) === current);\n      });\n      panels.forEach(function (panel, i) {\n        panel.classList.toggle('is-active', i === current);\n      });\n      halves.forEach(function (half) {\n        half.classList.toggle('is-on', Number(half.dataset.doesHalf) === current);\n      });\n    }\n\n    tabs.forEach(function (tab) {\n      tab.addEventListener('click', function () {\n        var target = Number(tab.dataset.doesTab);\n        \/\/ the Build label owns two screens, so tapping it again steps to the second\n        if (tab.parentNode && tab.parentNode.classList.contains('lma-does__group')) {\n          target = current === 2 ? 3 : 2;\n        }\n        select(target);\n      });\n    });\n\n    \/\/ the dim half of the rule is a direct jump to the Build screen it stands for\n    halves.forEach(function (half) {\n      half.addEventListener('click', function () { select(Number(half.dataset.doesHalf)); });\n    });\n\n    if (prevBtn) { prevBtn.addEventListener('click', function () { select(current - 1); }); }\n    if (nextBtn) { nextBtn.addEventListener('click', function () { select(current + 1); }); }\n\n    \/\/ swipe the screens themselves; the step list is its own scrollable row on mobile\n    if (window.lmaSwipe) {\n      window.lmaSwipe(root.querySelector('.lma-does__panels'), function (dir) { select(current + dir); });\n    }\n\n    select(current);\n  });\n})();\n\/* 05-video *\/\n\/\/ Section 05 - self-hosted customer story video, opened in a modal lightbox\n(function () {\n  var players = document.querySelectorAll('.lma-video__player');\n  Array.prototype.forEach.call(players, function (player) {\n    if (player.dataset.lmaVideoReady === '1') { return; }\n    player.dataset.lmaVideoReady = '1';\n    var trigger = player.querySelector('.lma-video__play');\n    if (!trigger) { return; }\n    var src = trigger.getAttribute('data-video-src');\n    if (!src) { return; }\n    var modal = null;\n    var video = null;\n    var prevOverflow = '';\n    function close() {\n      if (!modal || !modal.classList.contains('is-open')) { return; }\n      modal.classList.remove('is-open');\n      if (video) { video.pause(); video.currentTime = 0; }\n      document.documentElement.style.overflow = prevOverflow;\n    }\n    \/\/ built on first open so the mp4 is never fetched until it is asked for\n    function build() {\n      var poster = player.querySelector('img');\n      var posterSrc = poster ? poster.getAttribute('src') : '';\n      modal = document.createElement('div');\n      modal.className = 'lma-vmodal';\n      modal.innerHTML =\n        '<div class=\"lma-vmodal__backdrop\" data-lma-vclose><\/div>' +\n        '<div class=\"lma-vmodal__dialog\">' +\n        '<div class=\"lma-vmodal__frame\">' +\n        '<video class=\"lma-vmodal__video\" controls playsinline preload=\"none\"' +\n        (posterSrc ? ' poster=\"' + posterSrc + '\"' : '') + '>' +\n        '<source src=\"' + src + '\" type=\"video\/mp4\">' +\n        '<\/video>' +\n        '<div class=\"lma-vmodal__close\" data-lma-vclose>' +\n        '<svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M5 5l14 14M19 5L5 19\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"\/><\/svg>' +\n        '<\/div>' +\n        '<\/div>' +\n        '<\/div>';\n      document.body.appendChild(modal);\n      video = modal.querySelector('video');\n      modal.addEventListener('click', function (e) {\n        if (e.target && e.target.closest && e.target.closest('[data-lma-vclose]')) { close(); }\n      });\n      \/\/ a modal with no way out is a trap, so Escape closes it\n      document.addEventListener('keydown', function (e) {\n        if (e.key === 'Escape' || e.key === 'Esc') { close(); }\n      });\n    }\n    trigger.addEventListener('click', function () {\n      if (!modal) { build(); }\n      \/\/ bail if already open, otherwise prevOverflow captures the locked value and close cannot restore it\n      if (modal.classList.contains('is-open')) { return; }\n      prevOverflow = document.documentElement.style.overflow;\n      document.documentElement.style.overflow = 'hidden';\n      modal.classList.add('is-open');\n      if (video) {\n        var playing = video.play();\n        if (playing && playing.catch) { playing.catch(function () {}); }\n      }\n    });\n  });\n})();\n\/* 09-proof *\/\n\/\/ Section 09 - Proof testimonial carousel\n(function () {\n  function initProof(root) {\n    if (root.dataset.proofReady === '1') return;\n    root.dataset.proofReady = '1';\n    var track = root.querySelector('.lma-proof__track');\n    var slides = root.querySelectorAll('.lma-proof__slide');\n    var controls = root.querySelector('[data-proof-controls]');\n    if (!track || !slides.length) return;\n    \/\/ a single testimonial needs no controls\n    if (slides.length < 2) {\n      if (controls) controls.hidden = true;\n      return;\n    }\n    if (controls) controls.hidden = false;\n    var index = 0;\n    function render() {\n      track.style.transform = 'translateX(' + (-index * 100) + '%)';\n      for (var i = 0; i < slides.length; i++) {\n        slides[i].classList.toggle('is-active', i === index);\n      }\n    }\n    function go(step) {\n      index = (index + step + slides.length) % slides.length;\n      render();\n    }\n    var prev = root.querySelector('[data-proof-prev]');\n    var next = root.querySelector('[data-proof-next]');\n    if (prev) prev.addEventListener('click', function () { go(-1); });\n    if (next) next.addEventListener('click', function () { go(1); });\n    if (window.lmaSwipe) window.lmaSwipe(root.querySelector('.lma-proof__viewport'), go);\n    render();\n  }\n  function boot() {\n    var roots = document.querySelectorAll('.lma-proof__carousel');\n    for (var i = 0; i < roots.length; i++) initProof(roots[i]);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', boot);\n  } else {\n    boot();\n  }\n})();\n\/* 10-getstarted *\/\n\/\/ Section 10 - the submit control is a div, so it has to trigger the form itself\n(function () {\n  function init(form) {\n    if (form.dataset.lmaStartReady === '1') return;\n    form.dataset.lmaStartReady = '1';\n    var submit = form.querySelector('[data-lma-submit]');\n    if (!submit) return;\n    submit.addEventListener('click', function () {\n      if (typeof form.requestSubmit === 'function') form.requestSubmit();\n      else form.submit();\n    });\n  }\n  function boot() {\n    var forms = document.querySelectorAll('.lma-start .lma-start__form');\n    Array.prototype.forEach.call(forms, init);\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot);\n  else boot();\n})();\n\/* 11-faq *\/\n\/\/ FAQ accordion - multiple panels may be open, collapsed panels are removed from the flow\n(function () {\n  function initFaq(section) {\n    if (section.dataset.lmaFaqReady === '1') return;\n    section.dataset.lmaFaqReady = '1';\n    var triggers = section.querySelectorAll('.lma-faq__trigger');\n    Array.prototype.forEach.call(triggers, function (trigger) {\n      var panel = document.getElementById(trigger.getAttribute('data-controls'));\n      if (!panel) return;\n      var timer = null;\n      function open() {\n        if (timer) { clearTimeout(timer); timer = null; }\n        panel.hidden = false;\n        \/\/ force a reflow so the 0fr -> 1fr transition actually runs\n        void panel.offsetHeight;\n        panel.classList.add('is-open');\n        trigger.classList.add('is-open');\n      }\n      function close() {\n        panel.classList.remove('is-open');\n        trigger.classList.remove('is-open');\n        if (timer) clearTimeout(timer);\n        timer = setTimeout(function () {\n          if (!panel.classList.contains('is-open')) panel.hidden = true;\n          timer = null;\n        }, 320);\n      }\n      trigger.addEventListener('click', function () {\n        if (trigger.classList.contains('is-open')) close(); else open();\n      });\n    });\n  }\n  function boot() {\n    var sections = document.querySelectorAll('.lma-faq');\n    Array.prototype.forEach.call(sections, initFaq);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', boot);\n  } else {\n    boot();\n  }\n})();\n}\nLMA_INIT();\nif (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', LMA_INIT);\nwindow.addEventListener('load', LMA_INIT);\n[300, 1000, 2500].forEach(function(ms){ setTimeout(LMA_INIT, ms); });\n})();\n\n(function () {\n  'use strict';\n\n  \/\/ loop card -> screen index in section 04 (Build 1 is 2, Build 2 is 3, Optimize is 4)\n  var STEP = { analyze: 0, strategize: 1, build: 2, optimize: 4 };\n  \/\/ px of sticky site header to clear above the section; set to 0 if there is no sticky header\n  var HEADER_OFFSET = 90;\n\n  function stepOf(card) {\n    for (var key in STEP) {\n      if (card.classList.contains('lma-loop__card--' + key)) return STEP[key];\n    }\n    return -1;\n  }\n\n  function show(does, index) {\n    \/\/ the split rule under Build selects a screen outright, so prefer it: the Build label\n    \/\/ itself toggles between Build 1 and Build 2 and would overshoot when already on Build 1\n    var half = does.querySelector('[data-does-half=\"' + index + '\"]');\n    if (half) { half.click(); return; }\n    if (does.dataset.doesState === String(index)) return;\n    var tab = does.querySelector('[data-does-tab=\"' + index + '\"]');\n    if (tab) tab.click();\n  }\n\n  document.addEventListener('click', function (e) {\n    if (!e.target || !e.target.closest) return;\n    \/\/ in the HTML template this class is on the <a>; in the native one it is on the\n    \/\/ Elementor button widget wrapper, so match either by walking up\n    var link = e.target.closest('.lma-loop__link');\n    if (!link) return;\n    var card = link.closest('.lma-loop__card');\n    var does = document.querySelector('.lma-does');\n    if (!card || !does) return;\n    var index = stepOf(card);\n    if (index < 0) return;\n\n    e.preventDefault();\n    show(does, index);\n    var top = does.getBoundingClientRect().top + window.pageYOffset - HEADER_OFFSET;\n    window.scrollTo({ top: top < 0 ? 0 : top, behavior: 'smooth' });\n  });\n})();\n\n(function () {\n  'use strict';\n\n  var BREAKPOINT = '(max-width: 767px)';\n  var DURATION = '.35s'; \/\/ matches the panel cross-fade; set to '0s' for no animation\n\n  var does = document.querySelector('.lma-does');\n  var panels = does && does.querySelector('.lma-does__panels');\n  if (!panels) return;\n\n  var mq = window.matchMedia(BREAKPOINT);\n  var ro = null, watched = null;\n\n  function allPanels() { return panels.querySelectorAll('.lma-does__panel'); }\n\n  function measure() {\n    var active = panels.querySelector('.lma-does__panel.is-active');\n    if (!active) return;\n    \/\/ every panel sits in the same grid cell, so by default each one stretches to the\n    \/\/ tallest. Top-aligning them makes each panel its own content height, which is the\n    \/\/ number we actually want to read.\n    var list = allPanels();\n    for (var i = 0; i < list.length; i++) list[i].style.alignSelf = 'start';\n    panels.style.overflow = 'hidden';\n    panels.style.transition = 'height ' + DURATION + ' ease';\n    var h = Math.ceil(active.getBoundingClientRect().height) + 'px';\n    if (panels.style.height !== h) panels.style.height = h;\n    observe(active);\n  }\n\n  function clear() {\n    var list = allPanels();\n    for (var i = 0; i < list.length; i++) list[i].style.alignSelf = '';\n    panels.style.height = '';\n    panels.style.overflow = '';\n    panels.style.transition = '';\n    observe(null);\n  }\n\n  function update() { mq.matches ? measure() : clear(); }\n\n  \/\/ images and webfonts land late and change the height, so watch the active panel itself\n  function observe(el) {\n    if (!window.ResizeObserver || el === watched) return;\n    if (!ro) ro = new window.ResizeObserver(function () { if (mq.matches) measure(); });\n    ro.disconnect();\n    watched = el;\n    if (el) ro.observe(el);\n  }\n\n  \/\/ the section's own JS moves .is-active between panels; that class is the trigger\n  new MutationObserver(update).observe(panels, {\n    attributes: true, attributeFilter: ['class'], subtree: true\n  });\n\n  if (mq.addEventListener) mq.addEventListener('change', update);\n  else mq.addListener(update);\n\n  var timer;\n  window.addEventListener('resize', function () {\n    clearTimeout(timer);\n    timer = setTimeout(update, 150);\n  });\n\n  update();\n  window.addEventListener('load', update);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"parent":0,"menu_order":0,"template":"","class_list":["post-69037","products","type-products","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/products\/69037","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/products"}],"about":[{"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/types\/products"}],"version-history":[{"count":5,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/products\/69037\/revisions"}],"predecessor-version":[{"id":96740,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/products\/69037\/revisions\/96740"}],"wp:attachment":[{"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/media?parent=69037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}