Senior Software Engineer
Job description
About the role
This role is centered on the design, validation, and evolution of complex systems with speed and rigor through the Flow platform. The hire will own the implementation of AI features that span the entire stack, tightly integrating backend services and APIs with intuitive UI hooks rather than merely exposing raw model endpoints. You will work within small, cross-functional teams that practice agile methodologies, including sprint planning, daily standups, and frequent code reviews to ensure high-quality delivery. A core responsibility is writing robust tests, fixing bugs promptly, and proactively improving the performance and reliability of production services. The role values clear communication as highly as technical proficiency, requiring you to articulate technical decisions in plain language to both technical and non-technical stakeholders. You will spend a significant portion of each week on planning, code review, and debugging activities, ensuring that experiments and iterations are executed safely and effectively. Success in this position is defined by the ability to own end-to-end outcomes and contribute to the foundational infrastructure that powers hardware system verification.
Key facts
What you'll do
Full AI features are delivered by linking backend integrations and APIs with simple UI hooks instead of exposing only model endpoints.
You will build and maintain the server-side services that power AI workflows, ensuring they are scalable, observable, and secure.
The role requires implementing robust data pipelines and evaluation harnesses to measure the quality and safety of AI-driven features.
You will collaborate closely with product managers and hardware engineers to translate complex requirements into reliable software solutions.
The position involves creating and managing prompt and model management systems that allow for flexible configuration and versioning.
You will implement observability and monitoring tools to track the performance and behavior of AI models in production environments.
The role includes responsibility for developing and maintaining safety and guardrail mechanisms to ensure responsible AI usage.
You will contribute to the evolution of the platform's infrastructure to support agentic systems engineering and agentic domain engineering workflows.
The position requires hands-on experience with modern Large Language Model providers, including OpenAI, Anthropic, and Hugging Face.
You will work with vector stores and Retrieval-Augmented Generation (RAG) patterns to build intelligent and context-aware applications.
Requirements
Five or more years of professional experience developing production software are mandatory for this position.
You must have hands-on experience designing, testing, and operating services at scale within a cloud environment.
Practical, production-level experience with modern LLM providers and associated tooling is a hard requirement.
Demonstrated comfort working in a high-ownership, fast-paced environment where experimentation and rapid iteration are standard practice is required.
You must be able to make pragmatic decisions regarding models, architectures, and deployment patterns while aligning strictly with business and technical constraints.
A strong proficiency in TypeScript, Node.js, and Python is necessary to build AI and backend services effectively.
You are required to have experience contributing to or building infrastructure for data pipelines, evaluation harnesses, and observability systems.
The ability to explain complex technical concepts clearly and concisely to diverse audiences is an essential criterion for success.
Nice to have
Exposure to agentic systems engineering and agentic domain engineering workflows is valued.
Experience contributing to or building infrastructure for data pipelines, evaluation harnesses, prompt and model management, observability, and safety or guardrails is a plus.
Practical notes
This role is based in San Francisco and is full-time.
Typical interview steps
Hiring for engineering roles usually starts with a recruiter screen, followed by one or two technical rounds. Candidates often solve a coding problem, discuss past projects, and answer system design questions. Some loops include a take-home task. Final rounds typically cover team fit and give candidates a chance to ask questions. Interviewers look for how you break down an unfamiliar problem, not just whether you reach the answer. Practicing a few problems aloud and reviewing your own past projects are the best preparation.
Good to know
Flow Engineering uses an AI-leaning stack centered on TypeScript, Python, LLM APIs, and managed cloud services. Speed is prioritized, with prototypes hardened for production once validated. Ownership, evaluation, observability, and safety are treated as fundamentals from the start.
Questions to ask
Good questions to ask the employer in the interview: what does success look like in the first six months, how is the team structured, what is the current biggest challenge, and how are decisions made. Asking about growth paths and the review process is also well received. Employers expect questions, and good ones show preparation.
Career growth
Engineering careers usually progress from individual contributor to senior, staff, and principal levels. Some engineers move into management and lead teams of five to twenty people. Others stay on the technical track. Growth follows demonstrated impact, not tenure alone. A typical engineering ladder has clear levels with defined expectations for scope, quality, and mentorship. Moving up usually requires owning outcomes end to end rather than completing assigned tickets.
About the company
Flow is the iterative requirements and verification platform built for hardware teams to ship complex systems faster.