By: X-Team
January 1, 1970 4 min read
At the height of the pandemic, a civic center faced a version of the same problem: someone had to stand at the door, check appointment codes and make sure every visitor had a mask on. It was necessary work — and it was work a machine could do instead.
Piotr Pasich, a Senior Software Developer at X-Team who was finishing his university degree at the time, saw that situation and started asking what it would take to automate it. The result was a face mask detection app built in six weeks with a small team of students, a Raspberry Pi camera, an Arduino controller and a TensorFlow-powered AI model trained to flag maskless faces. In this story, Pasich walks through how a classroom exercise turned into a product stakeholders actually wanted to buy into, which technologies his team chose — and why — and what it meant to be the expert in the room for the first time.
The project began as a university assignment with a deliberately wide scope. The prompt: build something useful for healthcare. The process: talk to end users, understand their needs and deliver something that addressed them.
During a brainstorming session, Pasich drew on what he'd been watching happen in daily life. "I talked about the new formalities that the pandemic had introduced at places like a civic center," he says. "Currently, people need to register for an appointment at a specific hour. Someone at the door lets in those who have an appointment and checks if they have a mask on."
As a developer with years of experience, his instinct was immediate: automate the check and free up that person for more meaningful work. The team happened to know someone who worked in a town hall, which gave them direct access to a real stakeholder early in the process — a stroke of luck that sharpened the project considerably. Through those conversations, they learned that civil service offices were already using QR codes for appointment management, but mask verification and headcounts still depended entirely on a person at the door. That gap became the core of what they set out to build.
With three two-week sprints on the clock and a team whose AI experience was effectively zero, technology choices had to be deliberate. The team landed on Python for the machine-learning layer — "the obvious choice for AI," Pasich says — TypeScript for the backend, Vue.js for the admin panel frontend, a Raspberry Pi to handle the camera, and Arduino to manage the door-counting and door-control logic.
Other options were on the table. The team considered PHP with Symfony or Laravel, C#, Java, Go and Ruby on Rails. All were viable. But Pasich made the call to stay in familiar territory. "We didn't have much time, so we decided to use the technologies most of us already knew," he says. Reinventing their stack would have burned time they needed for the harder problem: getting the AI right.
The AI challenge turned out to have a pragmatic solution. Rather than training a model from scratch, the team found an existing library built on TensorFlow and adapted it to their use case. The decision paid off in more than just saved time. "We learned a lot about TensorFlow: how to feed it with data, how much data it needs to start working (very little), how many edge cases you need to cover," Pasich says.
Those edge cases were the second major concern. What if someone wore a bandana instead of a mask? What if two people walked through simultaneously? What if the doors were locked during a fire? Pasich approached the question the way he would on a professional engagement — ranking stakeholder concerns by priority and addressing the most important ones within the available time. In the end, the team successfully built in support for checking multiple people's masks at once.
A last-minute hardware scare nearly derailed the final demo. Pasich had bought the most basic version of the Raspberry Pi, and it lacked the computational power to run the camera and the AI model smoothly at the same time. Frame rates dropped to 1 FPS just before the presentation. The system still functioned — it was a prototype, not a production deployment — and a more capable Raspberry Pi would have solved the problem cleanly. But the moment illustrated a lesson that only shows up when you're close to shipping: hardware constraints have a way of surfacing exactly when you can't ignore them anymore.
What made this project different from Pasich's work at X-Team wasn't the technology. It was the dynamic. At X-Team, he's surrounded by professionals with deep experience. At university, he was the expert — the tech lead for a team of four other students who were still learning how to write code.
He made a deliberate choice to run the project the way a professional team would. That meant Git for version control, Jira for task management, defined coding standards, QA processes and structured artifacts — none of which most university programs teach. "Universities don't tend to teach you about Git or Jira," he says. "So we had to start from scratch."
The goal wasn't just to finish the assignment. Pasich wanted his teammates to walk away with an understanding of what professional software development actually looks like — the rhythms, the tooling, the discipline of a sprint. That meant holding the same standards he would on a client project while also making room for a team that was still building its fundamentals.
The project landed well. When the team presented to stakeholders, the reception was positive. The product needed more development — any MVP does — but as a proof of concept delivered under a tight academic deadline, it was a strong start. More than that, Pasich says, the first goal was always learning: learning what AI development involves, learning how to wire together a backend, a frontend, an AI model and hardware into a single working system, and giving his teammates a clear-eyed picture of what a real-world project looks like before they enter one.
That last part may be the most durable outcome. Code gets refactored. MVPs get replaced. But the habit of working with discipline — tracking tickets, writing clean commits, asking what the stakeholder actually needs — tends to stick.
Ready to build work you're proud of? Apply for an open role at X-Team.