Experienced Full-Stack Software Engineer
About Us
We are dedicated to revolutionizing the freight industry by liberating tons of freight from congested highways, reducing carbon emissions, and enhancing transportation efficiency. We deploy 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. We foster a welcoming, respectful, and inclusive work environment with great opportunities for professional growth.
Role Overview
We are hiring a Full-Stack Software Engineer to own the software our operators actually touch — the C# services behind our fleet and the Flutter applications running on the ruggedized Android tablets mounted in and around our railcars. You'll build the operator-facing interfaces that turn vehicle telemetry and fleet state into something a human can act on in the field, and the backend services that feed them. This is hands-on, end-to-end work: you'll be designing the tablet UX, wiring it to the backend, and seeing it run on hardware in a rail yard.
What You Will Do
- Build and maintain operator-facing Flutter applications targeting ruggedized Android tablets — designing for field use: glare, gloves, intermittent connectivity, and people who are not software engineers.
- Write, test, and maintain the C# backend services and internal tools those interfaces depend on — telemetry ingestion, fleet operations, real-time visibility.
- Write unit and integration tests for your code and verify behavior before it ships to production — our software runs on vehicles in the field, so catching problems before they reach hardware is part of the job, not an afterthought.
- Investigate and fix bugs in production systems — reproduce, diagnose root cause, write the regression test.
- Participate in code reviews, both giving and receiving feedback.
- Work with experienced engineers to break product requirements into concrete implementation tasks.
- Contribute to documentation and internal technical knowledge bases.
- Support field testing and integration on physical rail vehicles when needed — including getting tablets and software working in the yard.
How We Work
- The engineering team is small — you'll typically work in groups of two to four on focused projects, with a broader team of around ten collaborating across efforts.
- We do daily standups, asynchronous communication in Discord, 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.
- We expect you to use AI tools well. Our engineers use LLM-based development tools daily, and we want someone who has real judgment about where they accelerate the work and where they quietly create problems.
- We test before we ship. Because our code ends up on vehicles carrying real freight, we'd rather catch a problem in a unit test than in a rail yard. We expect you to think the same way — verify behavior before it reaches production, and treat a bug as something to reproduce and cover, not just patch.
- Some of what we're building doesn't have a known solution. Autonomous rail is a young field, and certain problems require experimentation — build a prototype, test it, learn from what doesn't work, iterate.
- If ambiguity energizes you rather than frustrating you, you'll fit in well.
- You'll do occasional domestic travel for field testing, vehicle integration, and customer demonstrations — the kind of travel where you see your software running on actual hardware.
About You
- Basic Qualifications (Required Skills/Experience): 2–7 years of professional software engineering experience building and shipping production software, strong problem-solving ability, solid understanding of data structures, algorithms, and how to design maintainable systems, familiarity with C# and Flutter/Dart, or the demonstrated ability to ramp into our C#/Flutter/Android stack quickly, experience shipping UI to Android tablets (or comparable mobile/tablet work you can walk us through), discipline about testing before production — you write unit and integration tests, verify behavior before it ships, and when you fix a bug you reproduce it and lock it down with a regression test, proficiency with Git in a collaborative workflow — branching, merging, pull requests, code review, comfort working in a Linux command-line environment, fluent, demonstrated use of AI-assisted development tools (Claude, Cursor, Copilot, etc.) on real work — and a thoughtful point of view on when they help and when they get in the way, fluent in both written and verbal English, U.S. Person (immigration or work visa sponsorship will not be provided).
- Preferred Qualifications (Desired Skills/Experience): Experience designing UI for industrial, ruggedized, or field-deployed devices — touch interfaces used in harsh conditions, not just consumer apps, experience with the Android platform beyond Flutter — device provisioning, kiosk/lockdown modes, hardware integration, working knowledge of Docker and containerized development workflows, experience with CI/CD pipelines, coursework or project experience in real-time systems or robotics, experience reading and extending an existing codebase, not only building from scratch — most professional engineering is understanding systems that already exist, comfort working across disciplines — collaborating with hardware, electrical, or mechanical engineers translates directly here.
Closing
If you're passionate about software engineering and eager to contribute to autonomous rail technology, we'd love to hear from you!