As a developer in 2025, you cannot say 10 words without AI being at least 2 of those words. Despite its I recently had the opportunity to talk about machine learning in .NET at the Spokane .NET Conference. This opportunity was amazing to be able to share my learnings, engage in thoughtful conversation, and have fun presenting a personal project. I wanted to share a summary, my thoughts, and some takeaways from that discussion.
Machine learning has exploded across the development landscape, but for many .NET developers, the field still feels like foreign territory dominated by Python, data heavy workflows, and unfamiliar tools. The question naturally arises: is .NET a legitimate environment for machine learning, or is choosing it over Python blasphemous?
I explore this question through a personal passion project, an AI powered tennis coaching application called BreakPoint.AI. Using that project as a concrete example, I break down how to approach building practical machine learning systems in .NET, the architectural decisions involved, and the lessons that emerge along the way.
Starting With the Problem, Not the Tech
The idea behind BreakPoint.AI starts with a simple question. What if a tennis player could receive continuous, personalized coaching without relying on expensive, one-off lessons? In sports, coaching is often constrained by time and cost. A single lesson captures only a snapshot of performance at one moment. An AI system, by contrast, can observe a player over weeks or months, detect patterns, and provide guidance focused on long term improvement.
With motion tracking becoming common in other sports, tennis feels like the right space to experiment. From that framing, the project goals become clear:
• Provide personalized swing feedback
• Track progress over time
• Make it accessible, ideally free
• Leverage existing models where possible
• Minimize manual labeling or expert curated data
Personal AI projects benefit from starting at the end. By imagining the finished experience first, it becomes easier to work backward and define constraints, data flow, and user experience before committing to any specific technology.
Architecting the Model
With the goals defined, the real challenge becomes architectural. The system needs to take a video of a tennis swing, extract meaningful data, analyze the movement, and translate it into coaching insights. Each of those steps introduces real complexity.
Input Options
There are three primary approaches to consider:
Image Classification
Pros: High control over individual frames
Cons: Requires massive labeled datasets
Multi Modal Models
Pros: Extremely flexible
Cons: Harder to structure and integrate
Pose Estimation
Pros: Fast, pre trained models with clean numeric output
Cons: Requires additional interpretation to turn key points into insights
Pose estimation stands out, particularly with models like MoveNet, which can identify 17 body key points quickly and accurately. This allows the system to track joints across hundreds of frames per swing, which is critical for meaningful analysis.
The Real Challenge: The Swing Itself
A tennis swing is not a single motion but a sequence of phases, each with its own mechanics. A short video can easily contain more than 400 frames. Pure numeric analysis becomes unwieldy, and rules-based approaches tend to break down under real world variation. This is where machine learning shines by identifying patterns across complex, dynamic motion.
The architecture evolves through iteration. Early designs often rely too heavily on raw key point data. Over time, layered processing, phase detection, and higher-level interpretation emerge. One consistent lesson is that iteration is the engine of insight. The first design is almost never sufficient for problems of this complexity.
Using the Model in Practice
Once the architecture is in place, attention shifts to the surrounding tooling:
• Processing video uploads
• Running pose estimation
• Analyzing swing phases
• Delivering user friendly feedback
• Integrating storage and databases
This is where I as .NET developer excel. While Python offers best in class machine learning libraries, I live in application-level concerns such as APIs, storage, and production workflows every single day. To me, embedding machine learning components within a broader .NET based system makes practical sense.
C# vs. Python: The Inevitable Question
Python dominates machine learning for good reasons. Mature libraries like PyTorch and TensorFlow, a massive ecosystem, and low friction for experimentation make it an excellent choice, especially for training models.
The conversation changes when machine learning becomes part of a larger application. C# and .NET bring advantages in ecosystem consistency, strong typing, long term maintainability, and seamless integration with existing services and infrastructure.
The takeaway is simple. This is not about choosing the best language in the abstract. It is about choosing the right tool for each part of the system. Often, that means using more than one.
Key Takeaways for Developers
- Leverage AI Everywhere
AI is not just an end user feature. It is a powerful complement to the development process itself and can enhance both how we build and what we build. - Use the Right Tool, even if It Is Not .NET
Do not force C# into places it does not belong. Thoughtful technology mixing leads to better systems. - Steal Responsibly from Existing Solutions
Pretrained models are a gift. Use them to focus on the problems that are truly unique to your domain. - Build Cool Stuff
Start with a passion, identify a gap, and experiment. There is no substitute for learning by building.
Final Thoughts
Machine learning in .NET is not only possible. When approached thoughtfully, it can be practical, empowering, and genuinely enjoyable. Whether you primarily work in Python or have spent your career in .NET, the guidance is the same. Start small, stay curious, and build something cool.

Thinking about bringing machine learning into your .NET applications?
Whether you’re exploring an idea, untangling architecture decisions, or figuring out where AI actually fits, we’re happy to talk.
