Associate Full-Stack Software Engineer
Job type: Full Time · Department: Software · Work type: On-Site · USD 70,000-90,000 / year
St. Louis, Missouri, United States
At Intramotev, we are dedicated to revolutionizing the freight industry by liberating tons of freight from congested highways, reducing carbon emissions, and enhancing transportation efficiency. We are deploying self-propelled battery-electric railcars and vehicles to transform freight logistics and bring innovation to our rail network. Based in St. Louis, MO, we are committed to promoting industrial revitalization, saving lives, and minimizing the environmental impact of trucking and transportation.
We are a small team, which means the work you do here ships to real hardware and you see its effect fast. We actively foster a work environment for every teammate that's welcoming, respectful, and inclusive, with great opportunities for professional growth. Find your future with us.
We're hiring an Associate Full-Stack Software Engineer to help build the operator-facing layer of our autonomous railcar fleet — the Flutter applications that run on the ruggedized Android tablets our operators use in the field, and the C# services behind them. You'll work in C# and Flutter against a real product surface: the human-machine interface (HMI) that lets operators see and control what our self-propelled rail vehicles are doing, and the backend that feeds it. You'll start by reading and extending systems that already exist, with mentorship and code review from senior engineers as you ramp.
This is a full-time, 100% in-office role based in St. Louis, MO. You'll work within a small group of two to four engineers inside a broader team of around ten, with occasional domestic travel for field testing, vehicle integration, and customer demonstrations — the kind of travel where you see your software running on actual hardware.
Get hands-on with the codebase — start by reading, running, and debugging existing modules rather than writing new code from scratch. Pair with a mentor to understand our operator-interface architecture and development workflow. Set up your local environment, get comfortable with our CI pipeline and testing practices, and ship your first small fix or improvement through code review by the end of your second month.
Own well-defined features or modules end-to-end — from understanding the requirement, through implementation, testing, and code review. You'll be writing Flutter and C# that runs on tablets in the field, so you'll start developing an instinct for how software quality translates to physical system behavior. Expect to work across two or three focused areas rather than one, and to be asking fewer questions about "how does this work" and more about "should we do it this way or that way."
Take on moderately complex tasks with decreasing guidance. Start contributing to technical design discussions — not leading them yet, but asking the questions that shape them. You might propose a small improvement to a tool, a testing pattern, or a piece of infrastructure that makes the team's work better. By this point you'll have enough context to move through the operator-interface stack on your own.
Operator Interfaces: Build and improve Flutter applications that run on our ruggedized Android tablets — the operator-facing HMI for our rail vehicles.
Backend Services: Write, test, and maintain the C# services behind those interfaces — the systems that move data between the vehicles and the people operating them.
Testing & Quality: Write unit and integration tests for your code, and help reproduce, diagnose, and fix bugs to root cause before they reach production.
Collaboration & Code Review: Participate in code review — giving and receiving feedback — and work with experienced engineers to break product requirements into concrete implementation tasks.
Field Support: Support field testing and integration of software on physical rail vehicles when needed.
The engineering team is small — you'll typically work in groups of two to four on focused projects, with the broader team of around ten collaborating across efforts. At this size, there's no hiding behind process or hierarchy. You'll be in the room for design discussions, your code will be reviewed by senior engineers who know the system deeply, and your questions will be answered by the people who built what you're working on.
We do daily standups, asynchronous communication, and design reviews for anything nontrivial. Code review is mandatory — not as a gate, but as a practice the whole team treats as a teaching and learning tool. For an associate engineer, that means consistent, detailed feedback on your code from day one, and a path to reviewing others' code as you build context.
Some of what we're building doesn't have a known solution. Autonomous rail is a young field, and certain problems require experimentation — building a prototype, testing it, learning from what doesn't work, and iterating. If you're the kind of person who finds an ambiguous spec interesting rather than uncomfortable, you'll fit in well.
We evaluate depth of understanding over breadth of buzzwords. Our process includes a brief online technical screen focused on fundamentals, a take-home exercise involving real-world code with a defined time scope, and a final on-site conversation with the engineering team. We provide clear expectations before each stage and aim to complete the process within three weeks.
Base salary: {{comp_band.base}} Equity: {{comp_band.equity}}
Intramotev offers a comprehensive benefits package for all team members, including:
Medical coverage: We cover 100% of employee medical premiums, plus low-cost dental and vision options.
Vacation: Full-time employees enjoy unlimited paid time off.
Equity: Full-time employees receive equity in the company.
Parental leave: New parents receive paid time off to spend quality time with their family.
Bachelor's degree in Computer Science, Computer Engineering, or a related field (or equivalent practical experience).
0–2 years of software engineering experience — internships, co-ops, research, and significant project work all count.
Problem-solving aptitude: you can take an unfamiliar problem, break it down, and work toward a solution rather than waiting to be handed the steps.
A solid grasp of data structures, algorithms, and clean, maintainable code — fundamentals that transfer across languages.
Proficiency in at least one programming language (C# preferred; Python, Java, C++, or similar is fine) and the ability to ramp into our C#, Flutter, and Android stack.
Proficiency with Git in a collaborative workflow — branching, merging, pull requests, and code review.
A developing discipline about testing — you write unit tests and understand why automated testing matters before code ships to production.
Comfort working in a Linux command-line environment.
Familiarity with AI-assisted development tools (Claude, Cursor, Copilot, etc.) and a thoughtful point of view on when they help and when they get in the way.
A portfolio of technical work you can walk us through — a GitHub profile, personal projects, research, or substantial coursework. We'll review it as part of our evaluation.
Fluent in both written and verbal English.
Must be legally authorized to work in the U.S. CPT/OPT is supported.
None of these are required — if you meet the basic qualifications and the role excites you, apply. But if you bring some of these, you'll ramp faster:
Experience building UI with Flutter, or a comparable framework such as React or SwiftUI. We use Flutter for our operator-facing interfaces.
Exposure to Android — provisioning, kiosk/lockdown configuration, or hardware integration.
Backend or services experience in C# or Python.
Working knowledge of Docker and containerized development workflows.
Experience with CI/CD pipelines — even just GitHub Actions on a personal project.
Coursework or project experience in real-time systems or robotics.
Experience reading and extending an existing codebase rather than only building from scratch.
Comfort working across disciplines — collaborating with hardware, electrical, or mechanical engineers.
Your code runs on real machines. Most software jobs are about moving data between screens and databases. Here, the software you write helps operate physical vehicles carrying real freight on real rail lines. The feedback loop between your code and the physical world is short, visible, and unforgiving in the best way — you'll build engineering instincts that most developers never get the chance to develop.
Small team, real ownership. This isn't a place where junior engineers spend two years modifying config files before touching anything important. You'll own features end-to-end, sit in on design decisions early, and ship code that matters to the product within your first months. The tradeoff is honest: a small team means fewer layers of support and more responsibility on your shoulders sooner.
The problem is worth working on. Freight trucking is one of the largest sources of carbon emissions and highway congestion in the country, and the economics of rail have been broken for decades. We're building the infrastructure that moves freight off highways and onto electric rail. If that distinction matters to you, you'll feel it in the work every day.
This role offers relocation based on candidate eligibility.
Intramotev is an Equal Opportunity Employer. Employment decisions are made without regard to race, color, religion, national origin, gender, sexual orientation, gender identity, age, physical or mental disability, genetic factors, military/veteran status or other characteristics protected by law.
If you're passionate about software engineering and eager to contribute to autonomous rail technology, we'd love to hear from you!
Autofill from resume
Save time by uploading your resume. (Only PDF or DOCX format supported)