Skip to content

Software Engineering Intern

Take a real product problem from the first investigation to code that someone can use.

Engineering · Internship · Toronto, Canada · Hybrid
Apply for this role

About Fate Labs

Writing code is only part of engineering. Understanding a codebase, carrying decisions forward, and knowing whether a change works are just as important. We’re building Estelle to bring that work into one place.

Our goal is a software factory where agents and engineering teams can build on shared repository context, memory, review, and production feedback. There are hard problems across systems, product design, and how people work with agents. We’re a small team in Toronto, and we’re looking for people who want to take those problems on with us.

About the role

As a Software Engineering Intern at Fate Labs, you’ll contribute directly to Estelle. You’ll work with the team on a scoped engineering problem, understand the code around it, and build and test a change that fits into the product.

The work could involve a developer-facing feature, an integration, an indexing tool, or an improvement to the agent workspace. We want to see how you approach unfamiliar problems and learn from feedback. Class projects, personal projects, and open-source contributions are all useful ways to show us that.

Languages and tools

You’ll work in Python or TypeScript depending on the project. Web work uses React and Next.js; backend and data tasks may involve HTTP APIs, SQL, and PostgreSQL. There is also Rust in the CLI for projects involving local tooling.

Be comfortable using Git, a terminal, your editor, and a debugger or test runner. Familiarity with GitHub pull requests and coding agents is useful. You can start with one language you know well and learn the surrounding tools as the project requires them.

What you’ll do

  • Investigate a scoped product or infrastructure problem and propose a practical way to solve it.
  • Build features, fixes, and internal tools with code that is readable and straightforward to maintain.
  • Write tests for the behavior you change, including what should happen when something fails.
  • Try your work against real repositories and workflows, and use what you find to improve it.
  • Participate in code reviews, explain your choices, and incorporate feedback from the team.

What you should be comfortable building

  • A small Python service or script that consumes an API, validates the response, and handles errors clearly.
  • A TypeScript or React feature that takes user input, calls an API, and handles loading, success, and failure.
  • A focused bug fix with a reproducible example and an automated test, or a small database-backed feature you can explain end to end.

What you’ll bring

  • You’ve written software beyond a tutorial and can explain how a project works and which parts you built.
  • You have a working foundation in at least one programming language and know how to use Git.
  • You’re willing to read documentation, investigate errors, and ask for help after making a thoughtful attempt.
  • You can communicate what you’ve tried, what you’ve learned, and where you’re stuck.
  • You want to build tools that other developers will use.

Experience that would help

  • Coursework, personal projects, hackathons, open-source contributions, or previous internships that involved writing and debugging software.
  • Projects using Python or TypeScript alongside an API, a database, or a user interface. Share a repository or walkthrough and tell us which parts you built.
  • Experience working on a project with other people, reviewing changes, and using Git to keep the work organized.
  • Experiments with search, parsers, developer tools, or coding agents, including what worked and what you would improve.
Contact us.Your name, your company name, and your work email.Open the form

All fields are required unless marked optional.

Apply for this role