Source Data
Pro Lab uses professional tennis match and ranking datasets, combined with player identity information. Wikimedia Commons and Wikidata provide appropriately sourced player imagery where available.
How David and Ethan turned a father-and-son conversation about professional tennis into a data-powered Battle Lab—and used AI to help build it.
Pro Lab didn't begin in a classroom, a coding session, or a formal product meeting. It started during a road trip, with a casual tennis conversation between David and Ethan.
They were talking about famous professional players, their different styles, and an interesting question: why can one player repeatedly trouble another—even when the rankings suggest that the other player should have the advantage?
Instead of letting the conversation disappear when the drive ended, they used a Zoom AI transcript to capture and transcribe their discussion. The conversation itself became raw material for the initial product requirements: what the Battle Card should show, which questions it should help answer, and what would make the experience fun for a tennis player or fan.
David and Ethan imagined a Battle Card where you could choose two professional players, put them side by side, and explore their strengths and weaknesses.
A player may have a better overall record but still struggle against a particular opponent. Another player may be especially dangerous on clay, grass, or hard courts. Rankings tell part of the story. Matchups can tell another.
The goal isn't to declare that one player is simply better. Pro Lab encourages players and families to ask: How could each player win this match?
Pro Lab separates raw tennis information, analytics and the interactive website so each part can evolve independently.
The webpage is the final layer—not the beginning. Raw tennis records are processed by Python into structured player profiles and matchup data. The browser then uses those prepared files to create a fast, interactive comparison experience.
Pro Lab uses professional tennis match and ranking datasets, combined with player identity information. Wikimedia Commons and Wikidata provide appropriately sourced player imagery where available.
Python transforms match records into player profiles, surface statistics, serve performance, opponent-strength analysis and head-to-head records.
Overall statistics answer how a player generally performs. Head-to-head statistics answer a different question: what happens when these particular players meet?
HTML, CSS and JavaScript turn the analytical output into player cards, photos, rankings, surface controls and interactive comparisons.
Tennis changes every week. Rankings move, new matches are played and player statistics evolve.
Pro Lab therefore separates its source data from its analytical logic. When newer ranking and match records become available, the source dataset can be refreshed and the same analytics pipeline can regenerate the player profiles and matchup files.
This design also makes future automation possible. A scheduled data-refresh process could update the underlying records, regenerate the analytics, run validation checks and publish new results without redesigning the Battle Lab itself.
AI tools such as ChatGPT and Codex can help write code, explain errors and suggest architecture. But building a useful product still requires understanding the problem, checking the data and deciding whether the results make sense.
With adult and AI guidance, a motivated middle-school student can meaningfully participate in defining questions, analyzing results, testing the product and learning how the code works.
A student with introductory programming experience can build much more of a project like Pro Lab independently with AI assistance.
Maintaining a reliable production system requires deeper engineering judgment even when AI writes substantial portions of the implementation.
During development, the important questions were often not questions about syntax.
What exactly should a statistic mean? How should opponent strength be measured? How is head-to-head performance different from overall performance? What happens when data is missing? How should player photographs be sourced? How do we verify that a calculation is correct?
ChatGPT and Codex can help turn those decisions into working software. They can propose architecture, generate Python and JavaScript, explain unfamiliar code, troubleshoot errors, refactor an implementation and help iterate on the user experience.
That changes where much of the effort goes. Building an application with AI assistance does not necessarily require the same amount of manual solution design and line-by-line coding that software development once demanded. The builder can spend more time on something equally important: the idea, the problem being solved, and the experience being created for the user.
Pro Lab is a small example. The technology matters, but the feature began with curiosity: wouldn't it be fun to put two famous players into a Battle Card, understand their strengths and weaknesses, and discover why a lower-ranked player might still have a path to victory?
AI helped reduce the distance between that conversation and a working product. Human curiosity, product judgment and testing determined what was worth building.
For Ethan, that means the goal isn't to memorize every line of Python or JavaScript. A more meaningful goal is being able to explain the problem, where the data comes from, what the statistics mean, how information moves through the system and how we know whether the result is reasonable.
Rankings tell us who has performed better overall. They don't guarantee what will happen when two particular players meet.
Pro Lab was created by a father and son to explore that uncertainty—and along the way became an experiment in how families can use AI, real-world data and curiosity to learn technology together.
We didn't start by asking what programming language we should learn. We started with a tennis question. Then we built something to answer it.
⚔️ Try Pro Lab