Skip to content

From research to building AI systems, teams and products.

I started close to the models. Over time, I kept moving closer to the intersection of engineering, product, people and business.

The résumé version is shorter.

The job titles changed. The direction was more consistent.

Select a stage to jump to it

  1. ResearchINESC TEC
  2. SystemsANOVA
  3. ProductiLoF
  4. TeamsEnlitia
  5. Technical leadershipLoka
  1. INESC TEC

    Undergraduate Researcher

    Where I learned that I wanted to build things.

    Read the full chapterHide the full chapter

    I joined INESC TEC while I was still at university, initially to understand what engineering looked like outside the classroom.

    Phase 01

    From physiological signals to a system I could hold

    My first group worked on physiological monitoring for firefighter safety: how could we detect risk while someone was working in a physically demanding and dangerous environment?

    The first problem I worked on was estimating core body temperature from signals that could be measured externally, using methods such as Kalman filtering. At that point, I was mostly learning how research and applied engineering actually worked. I was definitely learning more than I was contributing.

    Then the work became much more end to end.

    The group built a prototype to monitor firefighters’ exposure to carbon monoxide: a physical sensor carried with their equipment, measuring CO in the surrounding air, with a system around it to capture, transmit, store and analyze those measurements.

    I ended up working across almost the whole chain:

    • the electronics, designed with support from more experienced electronics researchers, and the components, which I selected and sourced;
    • assembling and soldering the prototype boards, and helping create a custom enclosure;
    • Bluetooth Low Energy communication and the Android app that received the measurements, stored them locally and uploaded them to a server;
    • the data analysis, including a physiological formula to estimate blood CO exposure from environmental concentration and time exposed.

    The embedded firmware that controlled the device itself was written by a colleague who specialized in it.

    Building the whole system helped me understand which part of engineering I wanted to stay closest to.

    I liked experimenting with hardware, but this project made something pretty clear: software, data and building systems were where I wanted to go deeper.

    It was also one of the first times I realised how much I enjoyed owning something end to end instead of disappearing into one tiny part of it.

    Phase 02

    Then I deliberately moved closer to Machine Learning

    For the final part of university, I changed research groups inside INESC TEC.

    That move was intentional. I wanted to explore Machine Learning properly and figure out whether it was the field I wanted to work in.

    My MSc thesis focused on fingerprint presentation attack detection. Many anti-spoofing models worked well once they had already seen examples of the attack materials during training. The harder question was whether a model could detect a spoofed fingerprint made from a material it had never seen before.

    Basically: could it spot an attack without having studied that exact trick already?

    The work moved through the field step by step:

    1. Handcrafted image features, turned into tabular datasets
    2. Classical Machine Learning: SVM, Random Forest, Naive Bayes
    3. Multilayer perceptrons
    4. CNNs trained directly on the images
    5. Pretrained CNNs and transfer learning
    6. Adversarial training
    7. Domain adaptationThe direction that worked
    8. Experiments with GAN-based approaches

    The approach that worked best used adversarial techniques for domain adaptation, helping the model generalize beyond the spoof materials it had seen during training.

    That research became my first publication and also confirmed that Machine Learning was something I wanted to keep pursuing, just preferably close enough to real systems that the work did not end at the experiment.

    Publication
    BIOSIG 2020. Main author; presented as a poster.
    Thesis
    Graded 20/20.
    Recognition
    Best MSc thesis in its research area at INESC TEC.

    Location
    Porto
    Stage
    Research
  2. ANOVA

    Junior Data Scientist

    Making data science run without someone pressing the button.

    Read the full chapterHide the full chapter

    ANOVA had recently been formed from several established companies. I joined a very small product effort where, in practice, I worked closely with one lead based in the United States. It was autonomous and international from the start.

    ANOVA provides hardware monitoring for industrial tanks, but not every tank has a sensor. The product I worked on estimated the levels of unmonitored tanks from monitored tanks that behaved like them.

    Historical refill and level patterns were used to identify which tanks were similar, and at runtime the monitored ones helped infer the current state of the ones without sensors. The goal was simple: anticipate refills and reduce the risk of stockouts.

    Taking the person out of the loop

    The statistical process already existed when I joined. The problem was that every day, someone still had to make it happen, manually.

    The project lead would open some FTP servers, download the new sensor files, run the process manually and upload the outputs somewhere else so the downstream systems could pick them up.

    My main job was to remove that person from the loop.

    I built the pipeline end to end: automated FTP ingestion, the processing flow and automated delivery of the outputs. With the help from the DevOps team, I also set up an Azure VM that started on a schedule, ran the process, handled completion and shut itself down again.

    Once the pipeline was stable, I built an internal control center in Python with Tkinter: part dashboard, part backoffice, showing the data, product metrics, errors, logs and operational status.

    It also made it much easier to show leadership how the product was performing instead of asking them to trust a process running somewhere in the background.

    Later, I started representing the product in conversations with teams in Portugal and elsewhere in Europe about where Machine Learning could improve it. The existing approach was mostly statistical, and those conversations made me realise I wanted more direct exposure to Machine Learning itself.

    The role was also quite isolated: most of the work happened one to one, with my closest collaborator in another timezone. So when a contact suggested I apply for a Data Scientist role at iLoF, I did it.

    Location
    Remote
    Stage
    Systems
  3. iLoF

    Data Scientist

    I joined to do data science and started becoming interested in everything around it.

    Read the full chapterHide the full chapter

    iLoF was little more than a year old when I joined, and still small. The Data Science team was two people and I became the third, working closely with the Data Science lead and directly with the CTO.

    iLoF was developing proprietary technology that combines photonics and AI. Optical signals were collected from biological samples and turned into optical fingerprints: markers associated with properties of those samples. The long-term potential was in detecting and characterizing disease-related and other biological signals.

    At the laboratory, photonics and hardware teams collected the signals. My team picked things up from there: taking raw, high-dimensional optical data, turning it into statistical representations and building models on top.

    Working directly on the modelling

    The work covered signal analysis, statistical feature extraction, classical Machine Learning and deep learning, usually on relatively small datasets.

    A lot of the projects were exploratory by design: could we detect a certain biological signal at all? That meant trying different representations, models and validation approaches, often in collaborations with hospitals and other organizations. It was pure research and development, not clinical work.

    Stop rebuilding the same workflow

    Running lots of small experimental projects meant repeating the same work again and again. So instead of rebuilding the training and evaluation flow every time, I created a shared Python package that standardized the recurring Data Science work across projects, and I became its main maintainer.

    It was one of the first times I noticed a pattern that has followed me ever since: if I have to solve the same annoying problem enough times, eventually I will build something so I never have to do it again.

    That same instinct produced two other tools.

    One was an internal monitoring application for the laboratory hardware. It used statistical behavior in the optical signal to help indicate when certain components were degrading or might need replacing. I wrote the analysis, the monitoring logic and a simple interface that the laboratory team could actually use.

    The other, built with the team lead, was an end-to-end demonstration pipeline: incoming data was processed automatically, sent to a model behind an Azure ML endpoint, and the results and system state were stored in a database and exposed through a simple interface. It ran during real demonstrations in the laboratory, which was a nice step up from “here is a notebook, please imagine the rest”.

    Everything around the model

    Over time, I started getting increasingly interested in the work surrounding the modelling itself.

    Outside technical work, I got involved in planning and longer-term technical discussions, presentations, conversations with doctors and technical partners, external events and company pitches. I also supervised internships and an MSc thesis with a meaningful deep learning research component.

    I was also part of a multidisciplinary group focused on company culture, where we discussed internal norms, practices and events. That brought me into more regular contact with the CEO and gave me much more exposure to how the company was actually being built: marketing, organization, communication, strategy and how the technology connected to the business around it.

    I was not running those areas, but I was becoming increasingly curious about them.

    That was probably the biggest thing iLoF gave me.

    I joined because I wanted to do more Machine Learning, and I did. But somewhere along the way I found out that I also really enjoyed mentoring people, explaining technical work, thinking about strategy, shaping how teams operate and understanding why we were building something in the first place.

    None of that was in the job description, but it all pointed pretty clearly to what came next.

    Location
    Porto
    Stage
    Product
  4. Loka

    Senior Machine Learning Engineer

    Back closer to the code, without giving up leadership.

    Read the full chapterHide the full chapter

    I am leading projects and building AI end to end solutions across different domains, with a strong focus on agents and LLMs while still using conventional ML when it is the right tool. Most of the work is about turning problems into real working systems, so I tend to sit between product, architecture and implementation.

    A big reason for moving to Loka was getting closer to the technical work again, and that has definitely happened. I have gone much deeper into GenAI, LLM systems and agentic AI, but also into everything required to make those systems real: architecture, cloud, infrastructure, evaluation, testing and production delivery.

    Conventional Machine Learning is still part of the work when it makes sense. Not every problem needs an LLM, despite what the internet occasionally suggests.

    Fast, and still production

    One of the projects I worked on involved a client moving at a very fast pace, which meant we needed to work with them extremely closely. We built a GenAI pipeline end to end in a short period of time, but with production concerns there from the beginning: infrastructure, evaluation, testing, robustness, implementation and delivery coordination.

    The speed was nice for most of the time, I like speed. But the more interesting part was proving that moving quickly did not have to mean pretending evaluation and testing were problems for future us.

    Some engineering decisions happen before the project starts

    Loka also made client-facing technical work a much more explicit part of my role. I already had client exposure at Enlitia, but here I work directly with international clients across technical conversations, project scoping, expectation management, difficult project situations and the usual exercise of translating “what we need” into “what can actually be built”.

    Sales engineering became another fun part of the job. I take part in sales calls, sometimes lead them, and work on technical discovery, solution design, scoping, architecture and writing and presenting proposals.

    1. Understand the potential client's problem
    2. Translate it into a technical approach
    3. Define the likely solution, often on AWS
    4. Scope the work
    5. Write the technical proposal
    6. Explain it clearly

    I like this part of the role more than I expected. There is something interesting about making technical decisions before there is even a project yet, when the problem is still ambiguous and half the job is figuring out what the client actually needs instead of simply implementing what was first requested.

    Ownership without a reporting line

    One thing Loka has reinforced for me is that leadership does not necessarily need a reporting line.

    I’ve started and currently drive an internal aerospace AI initiative that connects technical exploration with Sales, Marketing and Operations. It is informal rather than a business unit, but we have explored areas including edge computing, predictive maintenance and remote sensing. I am the main connection point between the initiative and those teams, and I also supervise an internship within it.

    I have represented Loka at external events too, presenting what the company does, discussing technical capabilities and taking part in commercial conversations. That thread actually goes back quite a long way, from technical presentations at iLoF to pitches and fairs in completely different contexts later on.

    Apparently I keep finding ways to end up explaining what we are building to people!

    Technical leadership without leaving the technical work

    The move has been useful because it gave me exactly the tension I was looking for: I am much closer to the code again, but I’ve not had to give up ownership, mentoring, client trust or technical leadership to get there.

    I still want to grow as a leader, but with a much more deliberate focus on keeping the technical foundation underneath that leadership strong. For me, that means continuing to build, staying close to architecture and implementation, but also staying close to the product and the business around it. I really enjoy understanding why something should exist, how it creates value and how the technical decisions connect back to that.

    That balance is probably the most important thing I am learning here!

    Location
    Remote / International
    Stage
    Technical leadership

What stayed consistent

The scope changed a lot, but the pattern did not: I like being close to the problem, close enough to the technology to build it, close enough to the product and business to understand why we are doing it, and close enough to the people involved to actually move things forward.

I also like thinking of myself as a generalist. I enjoy learning new domains, understanding how different systems work, and looking for the intersections between them. A lot of the most interesting work, at least for me, happens when something from one world turns out to be useful in another.

That is still the kind of work I look for.