Streamlining Learner Onboarding
Circuit Stream · 2024
My Role
Product Manager / Product Designer
Company
Circuit Stream
Date
2024
Overview
I led the end-to-end design and development of Circuit Stream’s first self-checkout system, streamlining the enrollment process for pre-university programs and shorter courses. Leveraging tools like Framer (UI design), Zapier (backend integrations), Stripe (payments), and HubSpot (CRM/reporting), I created a system that automated workflows, reduced friction for learners, and empowered teams to focus on high-value tasks. Through collaboration with sales, CX, and engineering teams, we rolled out the first iteration in January of 2024, followed by a second iteration anticipated for January of 2025. The initial roll out focused highly on optimizing for time-to-conversion, while the second iteration focuses on scaling our internal systems as we grew and expanded.
The problem
Circuit Stream’s sales-led model had worked well when we only offered two flagship programs priced around $3500. But by 2023, our offerings had scaled significantly, ranging to products up from $1,500 to $15,000. Despite the product evolution, our purchase experience hadn’t evolved with it.
Bottlenecks at various areas of the purchase journey
The purchase flow was entirely dependent on the sales teams. Customers showed strong intent by applying to a course, but it would take an average of five business days for sales to reach out. This delay caused drop-offs, with ~90% of deals falling back into the nurture funnel. Even when a sales representative got in touch, the average time to close a deal was 25 days.
To take this issue a step further, once a deal closed, enrollment into the LMS relied on a brittle chain of manual steps—populating CRM properties, triggering APIs, and cross-team coordination. Errors were common, leading to onboarding delays and added workload across departments.
At a Glance
Incomplete performance tracking
Without the ability to track realized vs. unrealized gains, users couldn’t accurately measure portfolio performance, leading to misleading insights.
Limited trade tracking
The lack of support for short sales, buy-to-cover trades, and multiple lots under one stock, or even logging when stocks were sold, meant users couldn’t properly track cost basis or trading strategies, further distorting portfolio analytics.
Disconnected cash flow
Profits from sales and dividend payouts aren't reflected in balances, making total returns appear lower than they actually were, adding to the inaccuracy.
Three common trends emerged: shallow navigation, limited exposure, and lack of context.
Shallow navigation: The designs across both pages relied heavily on limited carousels and short lists, restricting users to exploring only 5-8 tickers without the ability to dive deeper into the full list.
Limited exposure: The displayed lists were fairly basic compared to what desktop users have access to. Additionally, users could only explore three markets (US, Europe, Asia), with minimal opportunities to discover securities unless they already knew the exact symbol name.
Lack of context: The lists provided lacked sufficient context, which failed to instill confidence in users when navigating or making decisions.
Solution
To address both the customer friction and the internal inefficiencies, we addresses these issues from two sides.
Improving the purchase experience for customers through a self-serve flow that removed unnecessary steps and allowed ready buyers to complete their enrollment without delay.
Automating internal systems to reduce human error, improve team efficiency, and ensure seamless enrollment post-purchase at scale.
By aligning the user experience with backend operations, we created a system that worked end-to-end—for both the learner and the business.
It was really important for us to contextualize the problem, layering the foundations from what was user-facing, to internally-facing, and finally, what was managed by our systems.
Unfortunately, there was too much of it relying on human to get the work done. To scale, remove that bottleneck and reduce those errors, we really had to push as much of it over to the systems.
Creating a Seamless Self-Serve Experience
The previous system was broken. Even if someone was ready to buy, they had to wait days to hear from a sales rep before moving forward. We knew that to improve conversion, we had to remove unnecessary steps and put more control into the hands of the customer.
While decisions we made on the front end were influenced by system limitations—like relying on Stripe Checkout for payment and the way we mapped values back to our CRM—we still aimed to design a checkout experience that gave users:
The ability to select a course, choose their preferred schedule, and view all package and financing options clearly
Enter their details without the friction of an “application” or waiting on a callback
Complete their payment securely and instantly via Stripe
II. Scaling Internal Systems
While the self-serve checkout transformed the customer experience, the real technical challenge—and arguably the most complex part of this project—was building a backend system that could reliably support it at scale, while also fulfilling the requirements we needed from a reporting perspective.
Previously, every enrollment required a sales rep to manually create a deal in our CRM, update properties like cohort dates and pricing packages, and trigger onboarding through our LMS. This process was fragile. A single missing or incorrect value would break the API call and leave the learner stuck in limbo. These delays not only hurt the user experience but also created reactive cleanup work for our CX team.
Expanded trade entry options, allowing users to select transaction types, set trade dates, and reference historical price data for more accurate logging.
At the core of the automation was a Zapier Table that linked key learner inputs: course, class date, and time. This then produced a single CRM property we called course_property. This property acted as the source of truth, dynamically populated during checkout, and was required to trigger enrollment into the correct LMS cohort via API.
This design decision was critical for scale. Rather than building separate workflows for each course or cohort, we were using course, course date and time selection to map to the course_property.
This Zapier Table powered the systems around it whereby:
A conditional logic is created to determine whether a contact already exists in HubSpot
If contact doesn't exist, it gets created based on the mapped customer information
A deal then gets created with the appropriate course information, pricing line item and course_property mapped by the Zapier Table
When payment is confirmed on Stripe, the deal gets closed automatically
The D2L API gets called and uses the deal to then trigger enrolment
Results
Improved customer experience
Eliminated the need for the sales team to manually create deals upon each sale, and the CX team to manually onboard learners.
Onboarding became near-instant, reducing human error and learner wait times, reducing from 71% to 12% errors.
Increased operational efficiency
Sales and CX teams shifted focus to high-touch, high-value lead
Cut backend setup tasks for new courses and partner launches by over 50%, enabling faster and more consistent scaling.
Decreased time to conversion
Created a clear, frictionless user journey from course discovery to payment.
Average time to close dropped from 25 days to 16.3 days
Conversion rate increased by 16.6% after a deal was opened. Fewer abandoned carts and more completed transactions