Skip to content
All work

Peterson's Test Prep · 2020

Making test prep work on a phone

Two native apps, 185 courses, four months from ideation to launch — 4.6 stars and 10,000+ downloads in the first week.

Role
Design Lead
Scope
Native iOS and Android app design and development
Team
Design, iOS, Android engineering teams
Timeline
4 months (ideation to launch)

Impact

01

4.6 stars, 10K+ downloads in week one

Shipped iOS and Android from ideation to launch in four months, after an outsourced attempt had failed.

02

DTC sales went $50K~$1M a year

The apps capped a four-year arc that started with replacing a Stripe form on a .NET site.

03

Designed around a constraint we could not remove

Course content was iframed webviews on another domain. I shipped a user-agent stylesheet switcher to make them look native — a workaround, and I would negotiate the constraint away next time.

Introduction

In 2017, Peterson’s DTC test prep sales were $50K a year. The “ecommerce experience” was a Stripe payment form on an outdated .NET site. After standing up a POC with WordPress, WooCommerce, and a minimally customized Storefront theme, sales grew to an estimated $1M by 2021. In Q2 2020, we decided to go native — iOS and Android apps to replace the default responsive LMS course content with something actually built for mobile.

Tech teams were put in place and I came in as design lead, after an unsatisfactory attempt by an outsourced designer. Four months to ideate, research, design, build, and test two native apps.

Design Methodology

On a new project I start with design thinking, gathering generative research through empathy and a deeper understanding of user needs and desires. From there I combine systems and design thinking through evaluating, defining, and developing the product — big picture first, specific interactions later.

What are the core components in the product? How are they connected? What does the overall purpose of these elements serve? Do they solve my persona’s problems? Understanding how the collective system inter-relates is what lets me design for the user journey and behaviour across the whole ecosystem, rather than screen by screen.

User Research

Who’s the target audience?

The 185 test prep courses Peterson’s offers cast a pretty large net on the target users. At the youngest, it’s 16–18-year-old prospective college students looking to improve their score on the ACT or SAT. Somewhere in the middle, it’s active-duty military personnel wanting to take the ASVAB to further their education. And at the oldest, it’s middle-aged professionals looking towards a second career in Real Estate.

The core problem

Test prep on mobile is hard — and with mobile usage increasing, inevitable. You’re dealing with complex math equations, lengthy passages, and interactive course content, none of which are easy to render well on a phone screen. None of our direct competitors offered a good experience. There are specialist apps like Duolingo, Masterclass, and Treehouse with splendid interfaces, but those barely touch the surface of what Peterson’s offers: 185 courses across dozens of test types. The goal was to make it easy — and rewarding — for users to move through that content on a phone.

Competitive Analysis

To gain a better understanding of the market, I did an analysis of our primary competitor — Coursera. I build a SWOT profile and conducted a UX analysis of their product. My key findings were:

  • While functional, the design wasn’t engaging.
  • While offline courses worked, many of the negative reviews were attributed to syncing bugginess.
  • The breadth of content was impressive.
  • Account management was difficult to use since it’s outside of the scope of the Apple/Google Play subscription management service.
  • It was apparent that Coursera also used webviews for much of their content, and the difference between native and webview content was noticeable.
Peterson's SWOT analysis of Coursera, covering strengths, weaknesses, opportunities and threats.
Peterson's SWOT

User Personas

Based on the generative user research I gathered, I identified three target users to help understand their goals and expectations from the experience of using the app. Meet June, David, and Frank.

Three user personas for Peterson's Test Prep: June, David and Frank.
Peterson's Personas

June: 16-year-old high school student

June is looking to attend a good college. Her first attempt at the ACT wasn’t quite enough to get her there. One of her best friends used Petersons’ printed guide to increase his score by 5 points. June feels like she learns better digitally and opts for the online guide. June is hoping to chip away at the course content throughout the day as she goes about her already busy school/extracurricular schedule.

David: 22-year-old Army servicemember

David has aspirations of furthering his education and going to college for Criminology after his duty in the Army. He’s interested in taking the ASVAB to get a head start on his education. He’s deployed in Afghanistan so there are long stretches where he doesn’t have internet access. Offline test-taking would help him prepare at his pace during these long stretches.

Frank: 40-year-old electrician

Frank has been an electrician for nearly 20 years. He’s seen the recent surge in house flipping and the subsequent need for real estate agents. He even wouldn’t mind taking his shot at flipping sometime in the future. To start, he figured getting his real estate license would be a good first step. His schedule is busy though, so he’d like a way to study on his phone during the day (between jobs) that would sync to his computer for night sessions.

Define and Synthesize

Problem statement

Users need a way to access Peterson’s quality test prep content from their mobile devices because they are busy and often find themselves on their phones instead of a laptop or desktop. Both the subscription and the course content experience need to be easy and approachable. Content needs to sync across devices.

Hypothesis

The current mobile responsive ecommerce experience is cumbersome at best. Despite that, 60% of our test prep users study on their mobile devices. This app will lead to higher customer satisfaction, more engagement, and greater sales.

Solution

  • Design both a native iOS and Android app that lets the user purchase, access, and manage a test prep subscription.
  • Use Auth0 for SSO authentication so user data syncs across platforms.
  • Integrate course content as webviews so the course data stays in sync across platforms.
  • Implement a reward/badge system to encourage engagement through longer, more laborious courses.
  • Adhere to Apple’s Human Interface Guidelines and Android’s Design Guidelines while maintaining a fresh imagination.

User Flows

Leveraging research on customers’ needs, competitor analysis, and mobile best practices, I build a user flow that was used to guide the lifecycle of product development.

Peterson's Test Prep user flow diagram covering onboarding, course selection and study.
Peterson's User Flows

Wireframes

We ran daily design calls during this phase to iterate and approve screens — some took 15 minutes, others ran two hours. I tested the wireframe prototype with 3 participants to validate direction before moving to high fidelity.

Grayscale wireframes for the Peterson's Test Prep app screens.
Peterson's Wireframes

Design System

The design system was built as part of the component library in Sketch, along with the ability to export it to Zeplin. Inter was used for all typography, colors were identified as dark vs. light mode, and most non-native UI components were accounted for.

Peterson's Test Prep design system: type scale, colour tokens and UI components.
Peterson's Design System

Final Design

The design prioritized flexibility (185 different course types need to feel at home in the same shell), clarity, and a friendly tone that made test prep feel less intimidating. Both light and dark mode were fully designed, following Apple’s HIG and Android’s guidelines throughout.

Final high-fidelity Peterson's Test Prep app screens in light and dark mode.
Final design

Where the alpha broke down

Once we had an alpha of the app based on the final designs, I ran two rounds of user testing on usertesting.com. I wrote the acceptance criteria for candidates, and within a day we had a handful of testers. After combing through hours of video, I quickly started to draw conclusions:

  • Our pseudo-native implementation of Auth0 was a hit. Users commented on how smoothly it worked.
  • Users loved the dark and modern look of the app.
  • Overall, it was easy to create an account, find a course, and start it.

Not all feedback was positive. Once into a course, users griped about how clunky the experience was. The actual course content was being served as webviews directly from D2L’s Brightspace. And sadly, Brightspace used iFrames to insert content. Due to cross-origin policy and Brightspace being on another domain, we had little control over styling the course content. Also, because of this, the light and dark mode toggling wasn’t working.

Designing around a constraint I couldn’t remove

Two of the most challenging technical aspects were:

  1. Since we’re using Auth0 for SSO authentication, designing the hosted Auth0 login and signup pages to reflect the app both visually and functionally. Because of this, I wrote a custom UI switcher in JS that served up a completely optimized app experience via JS and CSS. After two rounds of user testing, applicants didn’t notice that the login and signup weren’t native experiences and actually commented on smooth the UI was.
  2. Since actual course content was being served as webviews, I needed to find a way to style them that wouldn’t adversely affect the desktop and mobile responsive views. While D2L looks okay on desktop, it certainly didn’t carry the same sexy visuals as the new app. Additionally, light and dark mode didn’t work. Again, I wrote a little JS to detect the user agent, and if it matches iOS or Android native, I served a specific stylesheet. I was also able to use the prefers-color-scheme media query and standard CSS variables to easily toggle dark and light modes.

Production JS

function loadCSS() {
  var userAgent = window.navigator.userAgent.toLowerCase(),
    safari = /safari/.test(userAgent),
    ios = /iphone|ipod|ipad/.test(userAgent),
    android = /wv/.test(userAgent);
  if ((ios && !safari) || android) {
    document
      .getElementsByTagName('head')[0]
      .insertAdjacentHTML(
        'beforeend',
        '<link rel="stylesheet" href="https://learn.petersons.com/shared/HTML-Template-Library/HTML-Templates-V3/assets/css/app-styles.css">'
      );
  }
}
document.addEventListener('DOMContentLoaded', loadCSS);

Production CSS

/* Light mode (default) */
:root {
  --h-color: #1e2024;
  --p-color: #383b3e;
  --bg-color: #ffffff;
  --border-color: #d0d6de;
  --box-shadow-color: rgba(0, 5, 10, 0.1);
}
/* Dark mode */
@media (prefers-color-scheme: dark) {
  :root {
    --h-color: #fff;
    --p-color: #b1b7bf;
    --bg-color: #292a2e;
    --border-color: #3c424a;
    --box-shadow-color: rgba(0, 5, 10, 0.08);
  }
}

Outcomes and Reflection

The app launched to a 4.6-star rating and 10K+ downloads in the first week. More importantly, it supported the broader growth story — Peterson’s DTC test prep sales hit an estimated $1M annually, up from $50K just a few years earlier.

The biggest constraint was the webview layer. Brightspace’s iframe-based content and cross-origin restrictions meant we were always working around limitations rather than designing freely. The Auth0 and dark mode workarounds I built were effective, but they were workarounds. If I could go back, I’d push harder in the planning phase to negotiate more control over how course content was rendered in-app, even if that meant a longer timeline.

The personas held up well. June’s “chip away throughout the day” use case directly informed the reward system. David’s offline needs shaped how we thought about content caching. And Frank’s cross-device syncing requirement validated the Auth0/SSO decision early on.

4.6
Star Rating
10K+
Downloads First Week
$1M
Annual DTC Sales
4
Months To Launch

To see the current Peterson's platform, visit www.petersons.com

Next project

Re-architecting a decade-old platform

Breakout

Portfolio computer system

Game program

66 Bricks
to clear

  • One player
  • No continues
  • Overlays the page
  • Clear all 66 to win

Adam Robertson AR‑2026