Skip to content

How we built it

One schedule for every climbing competition

A Fast Forward experiment: a portal built around one user journey. Some of the most information packed websites are driven by google docs. USAC is similar. Event information is managed in a set of google docs that are them embedded on the USAC site. It's effective, but a lot of clicks to get the information you need.

Back to the schedule

Built for one user journey: a competitor, or the parent of one

Their goal is simple — to keep track of the events that matter this season. Today that means navigating to the division page, then the region page, then the google docs with the information needed.

For most of their journey, these are the key features that would be nice to have in one place:

  1. 1See every eventAcross series, regions and disciplines, in one list.
  2. 2Know where it came fromEvery event cites the document it was read from, and when.
  3. 3Go to the official pageStraight out to USA Climbing to register.
  4. 4Keep favoritesThe handful of events this athlete is aiming for.
  5. 5Share with the teamA link a coach or teammate can open anywhere.

Scheduled jobs on Google Cloud find the events

This experiment automates the process of finding and updating event information, reducing the manual effort required by the user. There are two scheduled jobs that do the work. One re-reads every published schedule once a week. The other refreshes the gyms that host them, twice a month.

Put simply, we are aggregating information from multiple sources into one place for the user for a specific user journey. In ecommerce this has been really optimized and effective. The product pages you visit often combine data from the catalog, inventory, media library, user reviews and the customer's preferences into one view.

We use this pattern with a lot of projects. No need to replace the existing infrastructure and no need to train administrators on a new system.

Public sources

  • 18 youth region schedulesOne published Google Sheet, read as CSV. Each region has its own tab.
  • 7 collegiate division schedulesA second published workbook, with a different column layout per tab.
  • usaclimbing.org pagesNational championships that appear only as prose, in no spreadsheet.
  • Google PlacesAddresses and contact details for the gyms that host events.

Google Cloud

Cloud Scheduler
Mondays 09:00 Mountain, and the 1st and 15th
Cloud Run job: update
Re-reads all 25 schedule tabs and normalizes them
Cloud Run job: discover
Refreshes gym addresses from Google Places
Firestore
The event and gym store
Cloud Storage
A raw copy of every fetch, so any parse can be re-run
Cloud Run service
Serves this site, reading Firestore

The jobs read public pages and published google docs only. We don't access any private data. The scheduled jobs run automatically at their set times and they identify themselves in the User-Agent with a contact address, honor each site’s robots rules, and keep request rates to roughly one per second.

This is reusing and building on top of USA Climbing's existing published schedules and Google Docs, aggregating the information into a single portal for the user. We want to make sure we are respecting the original sources while providing a convenient and comprehensive view for the user.

Why not build more?

There is more we could do with a portal like this, with full integration to the membership and registration systems. But, experiments like this help understand the end user. No need to boil the ocean to try a new approach.

  • Live registration status, which exists only inside USA Climbing’s results service
  • Entry fees and categories, which sit in per-event info sheets we link to but do not yet parse
  • Direct link to registration, but we don’t yet parse the relevant sheets
  • Notifications when a favorited event changes

The build

  1. 01Mapped the journeyHonestly, we started with ourselves. I am a father of a young climber and wanted to make it easier to track competitions and registration information.
  2. 02Found where the data actually livesThe data was not in a database or a CMS. USA Climbing publishes schedules as Google Sheets linked from eighteen region pages and seven collegiate division pages.
  3. 03Wrote one deterministic parserThere is no AI involved in this. We use a deterministic parser. That is we have list of where the data is, and we know the structure of the data. Every tab is handled according to its known layout. Each tab has a specific parser that knows how to extract the relevant information. Columns are matched by header name, never by position, because the collegiate tabs use two different layouts. A row whose date, region or venue cannot be resolved is dropped and logged rather than guessed at.
  4. 04Normalized everythingSo that we can filter, sort and display events consistently, we normalized everything. One event shape whatever tab it came from, with the source document and fetch time attached to every record.
  5. 05Put it on a scheduleA Cloud Run job re-reads every sheet weekly. A second job refreshes gym addresses twice a month. Google Cloud Firestore holds the results.
  6. 06Designed the front end around the journeySo our front end does not look like USA Climbing. USA Climbing is a very good site, and we are big fans of the organization. And, like most organization sites, it is organized the way the organization is. We have just designed a tool from a different perspective, focused on the journey of the user rather than the structure of the organization. A tool like this could easily live in the site itself, complementing the official pages rather than replacing them.

A portal for one journey, on top of many platforms

Membership organizations rarely run on one system. Registration, payments, learning, results and content each live somewhere different, and members are left to stitch them together.

This demo shows another way. Instead of replacing those platforms, it builds a portal around a single journey, reads what it needs from each source, and sends people straight to the right place when it is time to act.

The modern web supports this really well. And our approach at Fast Forward is to work with the existing infrastructure rather than trying to replace it. We believe this solves the biggest problems and drives the most value the fastest.

An experiment, not an official service

This is a demonstration only. It is not affiliated with, endorsed by or sponsored by USA Climbing. Fast Forward provides it free to use, with no guarantees of accuracy, completeness or availability. Always confirm dates and registration details on the event’s official page before making plans. Development is by Jason Yarrington and sponsored by Fast Forward.

Want a portal like this? Talk to Fast Forward

See every source and when it was last checked