CINXE.COM

Reforge

<!DOCTYPE html> <html> <head> <title>Reforge</title> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="w1p6NRBX04u21Nf53rPn0HmpTqPwDZuIrua57h2BCQgMOXvF10Rv1mVLy4GE9WzjhaXbPGCZwoNLeNd9YEvipw" /> <script type='text/javascript'> window._prefabBootstrap = { evaluations: {"ab-show-try-reforge-x":{"value":{"bool":false}},"ai-chat-product-tour":{"value":{"bool":true}},"ai-content-recommendations":{"value":{"bool":true}},"ai-debug":{"value":{"bool":false}},"ai-embedded-on-homepage":{"value":{"bool":false}},"ai-learning-goals-default-recommendations":{"value":{"json":"{\"113882\":[{\"experience\":\"I've never done this before\",\"prompt\":\"Refresh myself on growth loops for testing\",\"why\":\"I would like to understand more about what growth loops are\"},{\"experience\":\"I've never done this before\",\"prompt\":\"Refresh myself on growth loops for testing\",\"why\":\"I would like to understand more about what growth loops are\"},{\"experience\":\"I've never done this before\",\"prompt\":\"Refresh myself on growth loops for testing\",\"why\":\"I would like to understand more about what growth loops are\"}],\"124751\":[{\"experience\":\"I've never done this before\",\"prompt\":\"Refresh myself on growth loops\",\"why\":\"I would like to understand more about what growth loops are\"},{\"experience\":\"I've never done this before\",\"prompt\":\"Level up on AI\",\"why\":\"Ai seems like an exciting and want to learn more\"},{\"experience\":\"I've never done this before\",\"prompt\":\"Deepen my expertise on feature prioritization\",\"why\":\"I want to understand best practices on the topic\"}],\"195483\":[{\"experience\":\"I need to level up existing skills in this area\",\"prompt\":\"Improve storytelling\",\"why\":\"I would like to become better at storytelling\"},{\"experience\":\"I've never done this before\",\"prompt\":\"Level up on AI\",\"why\":\"Ai seems like an exciting and want to learn more\"},{\"experience\":\"I've never done this before\",\"prompt\":\"Deepen my expertise on feature prioritization\",\"why\":\"I want to understand best practices on the topic\"}],\"226151\":[{\"experience\":\"I've never done this before\",\"prompt\":\"Refresh myself on growth loops\",\"why\":\"I would like to understand more about what growth loops are\"},{\"experience\":\"I've never done this before\",\"prompt\":\"Level up on AI\",\"why\":\"Ai seems like an exciting and want to learn more\"},{\"experience\":\"I've never done this before\",\"prompt\":\"Deepen my expertise on feature prioritization\",\"why\":\"I want to understand best practices on the topic\"}],\"default\":[{\"experience\":\"I've never done this before\",\"prompt\":\"Refresh myself on growth loops\",\"why\":\"I would like to understand more about what growth loops are\"},{\"experience\":\"I've never done this before\",\"prompt\":\"Level up on AI\",\"why\":\"Ai seems like an exciting and want to learn more\"},{\"experience\":\"I've never done this before\",\"prompt\":\"Deepen knowledge on retention\",\"why\":\"I want to understand best practices on the topic\"}],\"defaultPlanManager\":[{\"experience\":\"This is a new area for our team\",\"prompt\":\"Refresh my team on growth loops\",\"why\":\"We are in a period of growth and we need to level up our skills as we grow\"},{\"experience\":\"This is a new area for our team\",\"prompt\":\"Level up on AI\",\"why\":\"We are looking to learn as much as we can to see what we can implement\"},{\"experience\":\"This is a new area for our team\",\"prompt\":\"Deepen my team's expertise on feature prioritization\",\"why\":\"We are looking to understand best practices on feature prioritization\"}]}"}},"ai-modes-enable-dynamic-suggestions-flow":{"value":{"bool":true}},"ai-show-command-menu":{"value":{"bool":true}},"auto-assign-course-pass":{"value":{"bool":true}},"ayce-billing":{"value":{"bool":true}},"copilot-active-auth-provider-id":{"value":{"string":"reforge"}},"copilot-applications-disabled":{"value":{"stringList":[]}},"copilot-base-url":{"value":{"string":""}},"copilot-confluence-inline-suggestions":{"value":{"bool":true}},"copilot-gdocs-inline-suggestions":{"value":{"bool":true}},"copilot-inline-suggestions-draft":{"value":{"bool":true}},"copilot-jira-similar-button":{"value":{"bool":false}},"copilot-kill-switch":{"value":{"bool":false}},"copilot-notion-inline-suggestions":{"value":{"bool":true}},"copilot-stream-metadata":{"value":{"bool":false}},"copilot-system-notices":{"value":{"json":"[{\"id\":\"add-personalization\",\"label\":\"New\",\"runtimeMessage\":{\"tab\":\"personalization\",\"type\":\"openSettingsPage\"},\"text\":\"Add personalization for better results\"}]"}},"copilot-tasks":{"value":{"stringList":["none"]}},"copilot-word-online-inline-suggestions":{"value":{"bool":true}},"copilot.webapp.expose-identity-ui":{"value":{"bool":false}},"course-checkout-v2":{"value":{"bool":false}},"display-browse-sidebar-callout":{"value":{"bool":false}},"free-ai":{"value":{"bool":true}},"ia-chart-interval-no-calc":{"value":{"bool":false}},"id.cookies.current.name":{"value":{"string":"current"}},"id.cookies.switcher.name":{"value":{"string":"switcher"}},"id.default-after-sign-in-url":{"value":{"string":"https://id.reforge.com/me"}},"id.dev.rack-mini-profiler.advanced":{"value":{"bool":false}},"id.dev.rack-mini-profiler.enabled":{"value":{"bool":false}},"id.enrichment.enabled":{"value":{"bool":true}},"id.host":{"value":{"string":"https://id.reforge.com"}},"id.multiple-workspaces.enabled":{"value":{"bool":false}},"id.posthog.enabled":{"value":{"bool":false}},"id.session.cookie_refresh_interval":{"value":{"duration":{"ms":1000.0,"seconds":1.0}}},"id.session.refresh_threshold_in_minutes":{"value":{"int":5}},"insights-report-notifications-config":{"value":{"bool":false}},"insights-use-identity-for-auth":{"value":{"bool":false}},"james.test.flag":{"value":{"string":"yes"}},"listening-mode-auto-advance":{"value":{"bool":false}},"log-level.api.external.external_api_controller.api":{"value":{"logLevel":"DEBUG"}},"od-progression-v1":{"value":{"bool":false}},"open-tasks-in-copilot":{"value":{"bool":false}},"poll-for-cohort-notifications-badge":{"value":{"bool":true}},"poll-for-cohort-posts":{"value":{"bool":true}},"premium-update-payment-flow":{"value":{"bool":true}},"project-goals-poc":{"value":{"bool":false}},"recommendation-engine-v2":{"value":{"bool":true}},"recommendations-suggested-titles":{"value":{"bool":false}},"ref-14486-unify-expert-profiles":{"value":{"bool":true}},"ref-16263-topc-based-browsing":{"value":{"bool":true}},"show-ai-sidekick":{"value":{"bool":false}},"show-ai-sidekick-global-entry-point":{"value":{"bool":false}},"show-browse":{"value":{"bool":false}},"show-browse-by-topics":{"value":{"bool":true}},"show-course-content-now":{"value":{"bool":false}},"show-course-enrollment-pages":{"value":{"bool":true}},"show-course-landing-page-updates":{"value":{"bool":true}},"show-developer-login":{"value":{"bool":false}},"show-guide-ai-suggestions":{"value":{"bool":true}},"show-learning-goals-2":{"value":{"bool":false}},"show-logged-out-sorting":{"value":{"bool":false}},"show-m1-sidebar":{"value":{"bool":true}},"show-migrated-marketing-site":{"value":{"bool":false}},"show-network-front-door":{"value":{"bool":false}},"show-new-course-gating":{"value":{"bool":true}},"show-on-demand-marketplace-courses":{"value":{"bool":true}},"show-onboarding-upsell":{"value":{"bool":true}},"show-programmatic-seo":{"value":{"bool":true}},"show-real-time-event-reminder":{"value":{"bool":false}},"show-restart-flow":{"value":{"bool":true}},"show-shareable-links":{"value":{"bool":false}},"show-sign-up-ctas":{"value":{"bool":false}},"show-units":{"value":{"bool":false}},"show-v2-course-details-page":{"value":{"bool":true}},"showCoursesLandingPages":{"value":{"bool":false}},"sources-on-ai-message-card":{"value":{"bool":false}},"supress-ai":{"value":{"bool":false}},"team-invitation-invites":{"value":{"bool":true}},"team-invitation-members":{"value":{"bool":false}},"use-prefab-for-flags":{"value":{"bool":true}},"use-stripe-tax":{"value":{"bool":true}}}, context: {} } </script> <script src="https://d2y3rsv897mu6y.cloudfront.net/assets/application_v2_public-b43eb4e77a8b71ff848f5cf74a236069946e344494b681e385bbbbb3451cfe41.js"></script> <link rel="stylesheet" href="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/css/765-ae51ab17.css" media="all" data-turbolinks-track="reload" /> <link rel="stylesheet" href="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/css/318-31e72d26.css" media="all" data-turbolinks-track="reload" /> <script type="text/javascript" src="https://cdn.addevent.com/libs/atc/1.6.1/atc.min.js" async defer></script> <!-- Segment --> <script> // This is where window.analytics get set. It is used in React as well for now. // TODO: (stu - FE Split) We will need to move this to the FE or replace the calls with segment hooks if we split the FE out. !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://segmentcdn.reforge.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];if(n.parentNode)n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey="1rTzz7dfiPjqVRj3diSChDwe4VJ7Tke2";;analytics.SNIPPET_VERSION="4.15.3"; const translateKey = (key) => { if (key === 'utm_campaign') { return 'utm_name' // Segment translates campaign to name } // Leave more room to translate keys if found necessary return key } const utmFromUrl = () => { const search_params = new URLSearchParams(window.location.search) const utm_vars = {} for (const [key, value] of search_params) { if (key.startsWith('utm_')) { new_key = translateKey(key).split('_')[1] utm_vars[new_key] = value // Set into local storage if set in URL window.localStorage.setItem(key, value) } } return utm_vars } const utmFromStorage = () => { const utm_vars = {} Object.keys(window.localStorage).forEach(function (key) { if (key.startsWith('utm_')) { // Could this be what was just set in utmFromUrl ? Yes! Will it always be ? No! There may be fields set at different times new_key = translateKey(key).split('_')[1] utm_vars[new_key] = window.localStorage.getItem(key) } }) return utm_vars } const utmMiddleware = ({ payload, next }) => { // Parse utm from various locations and populate on all requests const { campaign = {} } = payload.obj.context // campaign (local set) > urmFromUrl > utmFromStorage const utm_vars = Object.assign(campaign, utmFromStorage(), utmFromUrl(), campaign) Object.assign(campaign, utm_vars) next(payload) } // Call .addSourceMiddleware as many times necessary to add more analytics.addSourceMiddleware(utmMiddleware) // Need to add middleware before .load is called analytics.load("1rTzz7dfiPjqVRj3diSChDwe4VJ7Tke2"); // TODO: (stu - FE Split) We will need to move this to the React app if we split the FE out. }}(); </script> <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> <meta name="google-site-verification" content="ZSot_nibjyQbJdwWQw0nyNK9zZIlAxTTWI1ji4VH9Yg" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> </head> <body class="spa spa-root"> <script src="//fast.wistia.com/assets/external/E-v1.js" async></script> <div id='react-spa-root'></div> <script src="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/js/runtime-10a15b50ccd8d169035f.js" defer="defer"></script> <script src="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/js/685-f393909403362ee96335.js" defer="defer"></script> <script src="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/js/940-9817dd0f7af23278eb2d.js" defer="defer"></script> <script src="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/js/0-c2f227330782e53395d9.js" defer="defer"></script> <script src="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/js/152-2408570b683ee3a32ebb.js" defer="defer"></script> <script src="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/js/154-f2067e2b67875855099a.js" defer="defer"></script> <script src="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/js/608-2c407c613a1c419ddc45.js" defer="defer"></script> <script src="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/js/765-83ce3f46f1b04d5c2821.js" defer="defer"></script> <script src="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/js/199-a513e56e15d65ea99866.js" defer="defer"></script> <script src="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/js/783-ccaa58653d87b524443f.js" defer="defer"></script> <script src="https://d2y3rsv897mu6y.cloudfront.net/assets/packs/js/spa_root-bee942af848110f188fd.js" defer="defer"></script> <script src="//rum-static.pingdom.net/pa-5f529ebd8e83fa0015000a55.js" async></script> <script type="text/javascript">!function(e,t,n){function a(){var e=t.getElementsByTagName("script")[0],n=t.createElement("script");n.type="text/javascript",n.async=!0,n.src="https://beacon-v2.helpscout.net",e.parentNode.insertBefore(n,e)}if(e.Beacon=n=function(t,n,a){e.Beacon.readyQueue.push({method:t,options:n,data:a})},n.readyQueue=[],"complete"===t.readyState)return a();e.attachEvent?e.attachEvent("onload",a):e.addEventListener("load",a,!1)}(window,document,window.Beacon||function(){});</script> <script type="text/javascript"> const smallScreen = window.innerWidth < 640; if (!smallScreen) { window.Beacon('init', 'bbe0fa6c-71b3-4f9c-af62-8b86c1e07e72'); } </script> </body> </html>