All work
Praxis logoPraxis case study

Growth Marketing Manager at Praxis, May 2025 to August 2026, reporting to the CMO and CEO. Praxis is a business bootcamp with a job guarantee, acquired by Libertas right before I onboarded. I had been inside its ecosystem since 2021, first as a bootcamp participant.

TL;DR

  • I joined into new leadership, a domain migration, an outsourced website months from landing, and customer data spread across four systems.
  • I made HubSpot the single source of truth, then built the automation that put abandoned checkouts in front of the person who could actually call them.
  • I shipped a stopgap website solo, then custom coded a landing page per ad campaign instead of buying a platform.
  • I ran Google Ads from scratch and built the Skip College media product end to end, alone.

I joined with one of the longest memories of what Praxis actually was, at the moment new leadership was trying to learn it.

I started around the same time this went live. Everything below happened inside the transition it created.

I also came to marketing from building products, and I build startups on the side, so I read a company the way a founder does rather than as a channel operator. In a year where most of the work was fixing how things had been put together, that mattered more than any campaign skill.

I was the team’s technical person too - analytics, WordPress, HubSpot, Zapier, Airtable. If it needed wiring together, it came to me.

I owned the analytics stack. Getting to numbers we could actually trust was a project in itself.

The bottleneck was the data

Libertas acquired Praxis partly on the strength of its data. Then we found that data split across Salesforce, HubSpot, Circle and Disco, with no agreement on which one was right.

What I did:

  • Consolidated roughly 600 alumni records and 300-400 qualified leads, cleaned and merged.
  • Named HubSpot the source of truth, so there was one answer instead of four.
  • Built a workflow that put the right lifecycle stage on the right contact at the right time.

My own test contacts showed how deep it went. Three identical records that were created the same way → came out with three different owners and three different permission sets. WILD.

Same contact, same creation path, three different owners. The symptom that told me this was structural, not clerical.

Then I built on top of it. An automation pushed every abandoned checkout into a live Google Sheet with phone numbers and context attached. Joshua, who ran those sales calls, used it more than anything else I built, and we recovered a meaningful share of those carts.

One of the HubSpot workflows behind it. Lifecycle stage in, the right follow-up out.

The clean base made the email program possible: 10+ campaigns and sequences covering welcome, drip, deadline, failed payment and abandoned checkout. I no longer have access to that reporting, so I am not going to quote open rates I cannot show you.

Building the sequence was the easy half. The harder half was noticing that the signal and the person who could act on it sat in different systems.

The same gap showed up in our press record. Our homepage displayed media logos that linked nowhere, and nobody could produce the coverage when asked. I ran a research pass across 449 sources to separate real Praxis mentions from the dozens of other companies named Praxis, verified every hit by hand, and built “Praxis in the News” as a permanent reference.

449 sources scanned to find the real Praxis mentions, then every hit verified by hand.
Coverage like this existed all along. Nobody could find it when a prospect asked, so I cataloged it. Watch the video here.

I shipped a stopgap instead of waiting

The pre acquisition site was in bad shape and the agency building its replacement was months out. Rather than let it represent a newly acquired company, I custom coded a band aid site on my own and put it live. It was not meant to be impressive - only current, while the real build finished.

From our Granola year-end wrap. It is the sort of thing that made this kind of work land with me.

The domain moved from discoverpraxis.com to joinpraxis.com that summer, with 500+ blog posts migrated onto WordPress.

Before

The stopgap I shipped

The inherited site, and the replacement I built solo. A holding position that bought the team months.
The program pages ran on the same build - enrolment path included, not just a holding page.

Ads got the same treatment. Sending every campaign to the homepage was a waste, and a landing page platform was suggested. That meant a lot of money and even more setup time, so I custom coded several campaign and ad group specific landing pages in a few days instead.

Praxis had no brand identity guide at the time, so I scraped the colors and type off the live site and built to that.
One page per campaign and ad group, built in days - instead of a platform subscription and a setup project.

I even pushed back on decisions I didn’t agree to

Leadership had outsourced the new site design. I reviewed every page and component. Two pieces of feedback stand out because they were marketing problems, not taste.

1. The color was wrong

Praxis is red with a blue accent. Drafts came back on yellow backgrounds.

Two sections returned by the agency on yellow - a color that appears nowhere in the Praxis palette.

2. The comparison table argued against us

The section arguing Praxis beats college had Praxis in red and college in yellow, with no icons marking which was which. If you scan it in one second, as everyone does, it read as though Praxis were the wrong answer. Literally the opposite of what we were trying to communicate.

I asked for three things:

  • The yellow stripped out.
  • Ticks and crosses added, so the right answer is unmistakable.
  • The visual weight corrected, so Praxis reads as the recommendation.

And the layouts kept breaking

Layouts broke often too, on large displays and on mobile, differently each time. I fixed them as they surfaced (while getting annoyed, I had never seen layouts being broken like this)

Broken - desktop

Fixed - desktop

Desktop: cards and headings overlapping on delivery, and the same section after I rebuilt it.

Broken - mobile

Fixed - mobile

Mobile: the same comparison table unusable on a phone, then stacked properly.

Broken - large display

Fine - laptop

Same markup, two screen sizes. This is the kind of thing that arrived weekly.
And the comparison section again, with the photo overflowing its container. Fixing these was a standing item, not an exception.

Our CEO wanted Praxis on Google Ads and handed me a course to get there. I had run Meta and LinkedIn ads, but not Google. I built and ran the campaigns solo.

5,325 impressions · 546 clicks · 48 conversions · $414 spent. Built and run solo, from no prior Google Ads experience.
Google's own scoring on the account: 94.1% optimization, and ad strength rated Excellent.

Keywords

The ads themselves

The keyword set I built, and the ad copy written against it.
The course I was handed to get there. Six weeks later the account was running.

I also ran ads on X, and tested how Praxis surfaced inside LLM answers - because that is where people ask now - then helped fix our LLM SEO.

Two of the X ads I wrote and ran: the Times Square placement, and the four-years-of-theory contrast.
Testing what an assistant actually says about Praxis, after I worked on our LLM SEO and AEO. Praxis comes back by name - if a model cannot find you, it invents you or skips you.

I learned the course platform from the inside, then automated it

Disco is the learning platform our programs run on. I went through it as a participant, then as a manager, then joined Disco’s own user community to see how the people building it thought about it. By the end I was the person the team came to for anything Disco related.

Automation was what colleagues brought me all year. Knowing a tool that deeply and being able to wire it to everything else is a different job from being good at either half.

The clearest example: Brandy, our head of curriculum, needed student performance tracked over time. Disco exposed about a week of analytics and few integrations, so the front door was closed. But Gmail received a notification on every submission.

1 · Trigger

2 · Parsed into Airtable

3 · Reporting over time

The platform gave us one week of analytics. Email gave us all of it: every submission mail became a row, and the rows became Brandy's reporting.

The reporting itself was useful rather than transformative. But I kept the habit from it: when a tool closes the front door there is almost always a side one.

Skip College, built solo

Skip College was a Praxis sub brand - a media brand covering education news for anyone tracking where learning is headed. I built it end to end. The site ran on custom code with Ghost as the frontend.

The engine:

  • Monitored feeds across a wide set of news sources.
  • Surfaced what was genuinely relevant, against a relevance score.
  • Rewrote it in our tone of voice.
  • Published to the blog, LinkedIn and X.

This automation sequence took like a month to create. I custom coded its book landing page too, because nothing WordPress offered was good enough.

The book the brand was built around - Skip College, edited by Connor Boyack. I built its landing page by hand.

It is paused now, and the reason is worth being precise about. You see, the performance was not the problem, but the leadership is still deciding how to use it strategically. The engine is built and it runs. The open question is where to point it.

Praxis Weekend

Praxis Weekend is the annual alumni meetup, where around 50 Praxians come together, hang out, learn and build relationships. I helped design the interactive intro and networking sessions, and handled some of the content capture.

Mostly though, it was the first time I met the community and the team in person after a year of screens. None of what you get from that shows up in a metric. You learn more about someone over one weekend in a room than in a year of calls, and you also get to know your coworkers better.

Praxis Weekend, in person, after a year of calls.

The community

The team

The other 51 weeks of the year: a distributed community and a distributed team, both run over calls.

What I would change

I should have asked for the social channels out loud, and kept asking

I raised it once and let it go. I had the case. On my own account I went from around 500 followers to over 5,000 in three months. And a Praxis alum, now CMO at one of the larger US education companies, messaged me unprompted asking why I was not running the Praxis page. I should’ve bugged the leadership more and taken responsibility of the content.

Unprompted, from a Praxis alum who is now CMO at one of the larger US education companies.

I should have taken my Skip College doubt to leadership instead of sitting on it

I wondered whether a sub brand beat marketing Praxis directly. Asking early would have surfaced the answer in a week instead of months of building it.

I should have driven community engagement harder

I managed our Disco community of around 50 and knew the platform better than anyone, which is exactly why the low engagement was mine to fix. More workshops, more consistent programming, run by me rather than waiting to be asked.

The pattern in all three: I was right, and I was quiet about it.

I did voice out my opinions, but I should’ve pushed harder on solutions I was confident in.

Where I landed

Fifteen months of an acquisition, a migration, a rebuild, and a lot of things broken in ways that were hard to believe. Our internal Granola year end wrap surfaced my most used phrase of the year, which tells you most of what you need to know about the systems: “I’m not making this shit up.”

A year of finding things so broken they needed a witness.

The same wrap named me “Grand Vizier of Rapid Prototyping and Minister of Two Dollar Budgets”, which is the most accurate performance review I have received.

For launching more products in a week than most departments do in a year, usually for the price of a soda.
Its read on the imposter syndrome: a high-performance engine idling before it sprints.

Onto the next thing. I keep working in this sector because the conventional path is not the only one that works, and for a lot of people it is not even the best one. Education changes what someone's life looks like. Getting the alternatives in front of the people who need them is work worth doing properly, and I am not done doing it.

What I built next

Praxis is one of hundreds of organizations building non-conventional education, and what they do changes the direction of people's careers and lives. They are also genuinely hard to find. So I built AltEd Directory - a searchable place for them, Praxis among them.

Working on something in education or alternative education? Get in touch.