How We Built a Coaching Match Algorithm That Actually Works
The engineering, behavioral science, and learning theory behind ExecReps peer coaching matches

Most team coaching tools do one of two things: pair people randomly or let managers guess who should talk to whom. Both approaches have the same problem. They treat pairing as an administrative task instead of what it actually is — a design problem with real constraints, real tradeoffs, and a surprisingly deep evidence base to draw from.
We took a different approach when building peer coaching matches in ExecReps. The system scores every possible pairing across your team, ranks them by expected value, and generates structured coaching sessions grounded in learning science. Not because we wanted to over-engineer it, but because the difference between a good match and a random one is the difference between someone actually changing how they communicate and someone sitting through an awkward 30 minutes they'll never repeat.
The Matching Algorithm
Every team member who completes enough workouts gets classified into one of eight communication archetypes — Storyteller, Analyst, Commander, Diplomat, Visionary, Mentor, Connector, or Maverick. Each archetype pair has a documented dynamic: synergy, complementary, creative tension, or neutral. That dynamic rating is the foundation of every match we suggest.
But knowing that Storyteller + Analyst is 'complementary' isn't enough to decide that Sarah should coach with Marcus. You need to factor in who's actually active, who has enough data, and which specific pairing has the highest growth potential.
The scoring formula:
Score = DynamicWeight × EPS Variance
Where DynamicWeight maps from the rating — synergy gets 4, complementary gets 3, creative tension gets 2, neutral gets 1. EPS variance is the difference in each person's Expression Performance Score. Wider variance means more room for cross-pollination.
Tiebreaker goes to the pair with the higher combined EPS. Two people who are both actively practicing and improving are more likely to show up, stay engaged, and actually follow through on commitments from the session.
What We Filter Before Scoring
The algorithm runs client-side — no API call, no server round-trip, no latency. But before scoring happens, we apply three hard filters:
- insufficient data — if someone hasn't completed enough workouts to get a reliable archetype classification, they're excluded. Matching someone based on incomplete signal creates bad first experiences.
- no profile — members without a completed profile are excluded. Coaching works because both people can see each other's strengths and development areas. Without a profile, the coaching agenda can't be personalized.
- same-archetype pairs — two Analysts coaching each other won't produce the cross-pollination effect that makes peer coaching valuable. We only match across archetype boundaries.
The system surfaces three matches, not thirty. That's a deliberate application of Hick's Law — decision time increases logarithmically with the number of choices. Three is enough to offer variety without creating paralysis.
Why Admins Can Swap (and Why That Matters More Than You Think)
Each suggested match has swap controls. Click the swap button next to Sarah's name, and you see other Storytellers on the team. Pick a different one, and the match updates with the same dynamic type but different people.
This seems like a minor UX detail. It's not.
There's a well-documented effect in behavioral science called the IKEA Effect — people value things more when they've had a hand in creating them. By letting an admin adjust even one person in a suggested match, they shift from 'the system told me to do this' to 'I chose this pairing.' that small sense of ownership measurably increases follow-through on scheduling the session.
But we anchor to the algorithm's best guess first. The admin sees three strong defaults before they see any swap controls. This is important — starting with a blank 'pick two people' interface would produce worse matches (because managers optimize for political safety, not growth potential) and slower decisions. The algorithm proposes, the admin disposes.
The Calendar Engineering (or: How We Shipped a Feature Without Building an Integration)
The thing I keep coming back to in product engineering is how much complexity you can avoid if you look at what already exists before building something new.
When we scoped the meeting creation flow, the instinct was to build Google Calendar and Outlook API integrations. OAuth flows, token management, calendar permission scopes, error handling for expired tokens. Weeks of work for a feature that needs to work on day one.
Instead, we reused a calendar utility we'd already built for a completely different feature. lib/calendar.ts already had RFC 5545-compliant ICS generation, Google Calendar deep links, Outlook deep links, and download triggers. All we added was ATTENDEE field support for multi-person events.
The result: click 'Create Meeting' and you get a modal with pre-filled participants, a date/time picker, a duration selector, and a fully personalized coaching agenda. Copy to clipboard or download an .ics file. Works with every calendar app that's existed since 1998. No OAuth, no token refresh, no integration maintenance.
Sometimes the best engineering decision is the one where you don't build something.
The Science Inside the Coaching Session
The matching algorithm gets people into the room. The agenda structure determines whether they get anything out of it.
Every coaching session follows a 3-point agenda tailored to the dynamic type. Complementary pairs do a skill exchange, then a strength lending exercise, then set a practice commitment. Creative tension pairs start by naming the tension point without judgment, reframe it as a gift, then find common ground.
These aren't arbitrary structures. Each one maps to specific learning science principles:
the Generation Effect — agenda point 2 always asks participants to produce something (a scenario, a reframe, a discovery) rather than passively receive coaching tips. Generating your own examples produces 15-20% better retention than reading someone else's. This is one of the most replicated findings in educational psychology.
the Spacing Effect — agenda point 3 always includes a follow-up commitment. 'practice one skill from your partner's archetype before your next 1:1.' this creates a natural spacing interval between learning and retrieval, which is where long-term memory formation happens.
social learning theory — the entire premise of peer coaching is vicarious learning. Watching someone with a different communication style approach the same challenge you face is more powerful than any amount of abstract instruction. Bandura showed this in the 1970s. We're just applying it to how adults learn to communicate at work.
zone of proximal development — complementary archetype pairs are, by definition, stretching each member just beyond their comfort zone. The Analyst doesn't need to become a Storyteller. They need to borrow one narrative technique and apply it in their context. The coaching partner serves as the scaffold.
What This Isn't
I want to be clear about the boundaries here. This matching system runs entirely client-side. It uses a deterministic scoring formula, not machine learning. It doesn't track match outcomes and adjust weights (yet). It doesn't factor in past coaching history or interpersonal dynamics beyond archetype classification.
Those are all things we'll layer in as the coaching product matures. But the foundation had to be simple enough to ship fast, transparent enough that admins trust the suggestions, and grounded enough in evidence that the matches actually produce value.
There's a temptation in product engineering to build the ML model first and ship the simple version never. We went the other way. A formula that works today beats a model that works in six months.
the best coaching match isn't the one a machine learning model predicts will work. it's the one that's simple enough to understand, strong enough to follow through on, and structured enough to produce a real conversation.
Your team already has the right coaching pairs. The question is whether someone will surface them and give both people a reason to show up. That's what the matching algorithm does — it turns archetype insight into an actual calendar event with an actual agenda, grounded in actual science. The rest is up to the two people in the room.