Node.js Backend Developer
Posted on Monday, February 28, 2022
Join our AI team in France and move AI out of the lab and into the hands of millions!
Many companies are building AI products these days, but few have a mission worth getting behind. We’re working hard to empower 450 million deaf and hard-of-hearing people in their everyday life. Working at Ava means making an actual difference to people every day. Our users need our product to be the best it can be every day.
That’s why we need you to help us move AI from prototype to product. Our product integrates cutting-edge research in diarization as well as humans-in-the-loop, making for a diverse and challenging but also very rewarding set of tasks. Being able to build a clever AI algorithm is not the same as building a working, well engineered system though.
If you take pride in building efficient, maintainable software under demanding domain constraints, and want to bring your creativity to the table, making the right trade-offs (and refusing the wrong ones) then we’d love to have you on board!
Read the full description here: https://www.notion.so/ava/ddc77f901ef347d1823f550dfffbb851
The tech stack we use at Ava is not a secret. In fact, most of it is fairly standard, it’s more what we do with it than what tools we use to do the job that makes us special. Feel free to reach out to us to ask questions about what we use and how; we want you to know exactly what you’re getting into. Talk to our engineers, they’re a cool bunch! 🙂
To be clear: this is a description of where we are, not where we want to be, or where we’ll stay. If you immediately start thinking of obvious ways to make this better: great, let’s compare notes!
So without further ado here is, in very broad outline:
- REST & Websocket API endpoints in NodeJS express, overwhelmingly TypeScript. We still have a few "any" casts in there. They’ve been becoming rare though. 😄
- Further-back backend (so... the not client-facing one) also in Node/TS that joins together the multiple audio streams for each conversation.
- Scientific backend (this is where the ML/DL happens) in python with both tensorflow and pytorch elements.
- 👆🏽These three components pass messages via Redis, the whole thing is pretty much event-driven. You have been warned. 🙂
- Storage in Firebase, MongoDB, S3
- Logging and monitoring in Elastic/Kibana
- Infrastructure hosted on AWS, with use of ECS, EB, SQS, mostly managed with Terraform.
- Jenkins for CI/CD
What you'll be doing
- Build AI features into production, from concept to roll-out and beyond. No feature is developed in a vacuum; and we need you to help us make the right decisions of what to build and how it will interact with the rest of the product. This means being part of the discussion from the get-go: what is technically feasible in principle might be a real challenge for any practical application. We’re not a research institute, so we can’t settle for “in principle”. If we want to have certain data available to the scientific backend, what does that mean for the “business logic” part? How do we best provide this data, in which format and frequency? Get into the nitty-gritty of how the prototype is written. Which parts need to change for it to behave nicely in production? Does the algorithm need to change in a more fundamental way? Researchers may not see these things immediately. You’ll work with them to make the right trade-offs.
- Find technical means to make these trade-offs between different domain and technical requirements as comfortable as possible. How do we give the AI part some precious extra milliseconds of look-ahead for better results, without impacting the latency on the user’s screen? Can we fire a specific kind of event ahead of time in an opportunistic way? What would that mean for our compute costs?
- Package up trained models in a way that is maintainable.
- Build logging & monitoring components that allow us to track specific use cases, failure scenarios, and the quality of the models’ results, keeping their performance from slipping over time. Where did that 3% increase in word error rate come from? We want to catch these things before the model goes out to the customer.
- Build task-specific labeling interfaces to allow the research team access to exactly the data they need.
- Develop internal tools for real-time and after-the-fact analysis of everything that happened during a conversation, helping developers and customer support to figure out exactly what went wrong, how to fix it and how to unblock the users in the meantime.
- Use these tools to analyze failure cases & develop fixes. As any reasonably big application, Ava is technically a big distributed system. Failures happen. But we don’t want them to happen again.
What we need you to bring to the table
- You have multiple years (!) of experience building robust backend systems that scale well. Yes, we insist on this one.
- You master NodeJS. Experience with python, pytorch and tensorflow is a big plus.
- You are familiar with modern development practices in a cloud-hosted environment, ideally on AWS infrastructure.
- You understand, in detail, the trade-offs involved in different architectures. When do we use a microservice, and when is that not the right decision?
- You’re passionate about technology; you don’t only want to get the job done, you also want the result to be maintainable and performant in the future.
- Your English is good enough to communicate efficiently in spoken and written form. French is bonus.
Bonus round: where you can shine
- Experience building and deploying models with pytorch, tensorflow, and (extrabonus) pyannote.
- Experience building systems with (soft) real-time constraints.
- Experience working with streaming audio data.
- Deep knowledge of ECS, Docker and CI/CD tooling.
- Good understanding of Deep Learning / Machine Learning algorithms. You’ll be working with our research team; shared vocabulary will be a plus.
- You want to drive a move towards TDD in the team. Not to over-promise: this is not happening at Ava yet but we’d love to get there and if you're the kind of person who wants to take a leading role in this... ❤️
- Knowledge of modern monitoring and logging platforms: ELK, but also more machine learning specific monitoring of non-trivial metrics
- Experience with building labeling pipelines. We’re currently using prodi.gy and in-house tooling, looking at LabelStudio. Let us know if you have strong opinions on this because this is one of the crucial choices to make in the team.
What's special about this role?
- We’re a mission driven company. Everyone is here because we want to make a real impact. And impact we make. You’ll be changing lives with what you do.
- Work on and with cutting edge research results. Not gonna lie, a lot of what we do is also grind work because that’s how much of anything gets done. But a good portion is also literally breaking new ground in the field. It’s exiting to see something work in the real world that would have been science fiction just a few years ago!
- You’re joining in a moment where we know what we want to build, but there are many options for how to build it. Your expertise will be invaluable to make the right technical decisions.
- Grow your skills fast! Because the models and methods we use are cutting-edge, so is the tech you’ll use to implement them. Depending on your interests, you can go arbitrarily deep into any aspect of modern ML-based product design and implementation, or you can become a jack of all trades.
- Work under interesting and challenging technical constraints. Doing everything online and with low latency makes our work difficult, but in a good way. There are not many who do what we do.
If you made it all the way to here: great, we'd love to hear from you! (Or if you just got here by speed-scrolling, why not speed-scroll the full description as well: https://www.notion.so/ava/ddc77f901ef347d1823f550dfffbb851 . In color and with pictures!)
If you're hesitating, reach out to anyone on the team, we'll explain to you exactly what you'd be getting into. 🙂