Jack of Sports

Designing a scalable, data-driven scheduling experience for multi-program sports platforms

Jack of Sports offers a wide range of programs including swimming, soccer, biking, and lifesaving across multiple locations. Their course data is powered by a structured API, but the frontend experience lacked clarity, consistency, and scalability.

I led the design and custom development of a dynamic system that transforms complex API data into structured, user-friendly course tables, improving usability and enabling scalable content management.

Problem

The existing experience struggled with:

  • Inconsistent presentation of course data across programs

  • Difficult-to-scan schedules and pricing information

  • High reliance on manual updates

  • Lack of structure when handling nested API data

The system was data-rich, but experience-poor.

Approach

I reframed the problem from:

👉 Displaying data → Structuring decision-making

Key principles:

  • Organize complex data into predictable patterns

  • Improve scanability and comparison

  • Reduce cognitive load

  • Build a system that scales across programs and locations

Solution

Structured Data Mapping (API → UI)

The API returned deeply nested data:

  • Program

  • Lesson type

  • Schedule

  • Time blocks

  • Pricing

I designed a structured mapping system that translates this into a consistent UI hierarchy.

Custom API Integration & Dynamic Table Rendering

To support multiple swim program locations with varying lesson types, schedules, and pricing structures, I developed a custom JavaScript solution that fetches structured data from a REST API endpoint and programmatically renders responsive course tables.

The script parses nested program data (program → lesson type → day → time blocks) and dynamically builds grid-based layouts using the existing Webflow class structure. It conditionally formats date ranges, pricing, and multi-block time schedules, and generates contextual registration links using program IDs returned by the API.

The implementation handles multiple program groupings per location, preserves consistent visual hierarchy, and eliminates the need for manual content updates. By separating data from presentation, the system ensures that any backend changes automatically reflect on the front end without additional design intervention.

Scalable Table-Based System

Introduced a clean, structured table layout:

  • standardized columns (location, time, duration, cost)

  • consistent formatting across all programs

  • improved readability and comparison

This allowed users to quickly understand and compare options without friction.

Challenges

Handling complex nested data

The API structure introduced multiple layers of hierarchy that didn’t translate directly into UI.

→ Solved by defining a clear UI structure before designing components

Balancing flexibility with consistency

Different programs had varying structures and requirements.

→ Solved by building adaptable templates within a consistent system.

Maintaining performance and clarity

Large datasets risked overwhelming users.

→ Solved through structured layouts and prioritizing key information.

Mega Menu, Reimagined

Replaced a clunky multi-level dropdown with a clear, scannable mega menu that surfaces programs, locations, and pathways in one view. Designed and built end-to-end to reduce friction, improve findability, and make navigation feel fast and intuitive.

Motion & Interaction Design

Subtle animations and interaction patterns were designed to support clarity and feedback throughout the experience, rather than act as decorative elements.

Loading states, transitions, and hover interactions were carefully timed to reinforce system responsiveness and guide user attention. This helped make a data-heavy interface feel more intuitive, responsive, and easier to navigate.

Motion was used to:

  • Provide feedback on user actions

  • Improve perceived performance during data loading

  • Guide focus between sections and interactions

  • Maintain a smooth and cohesive experience across dynamic content

1000+

Schedule entries dynamically generated across programs and locations

50%

Reduction in manual content updates through API-driven rendering

2x

Faster course discovery and comparison

1

Scalable system replacing inconsistent layouts across experiences

This project reinforced that designing for data-heavy systems is not about showing more information, but about structuring it in a way that supports quick, confident decisions.

The biggest shift was moving from a content-driven approach to a system-driven one, where the interface adapts to data while maintaining clarity and consistency.

It also highlighted the importance of bridging design and development, ensuring that data structures and UI patterns work together seamlessly to create a scalable experience.

Reflection

Previous
Previous

Boyne Resorts

Next
Next

Ace Marketplace