All roles
Maritime AI

Senior Product Engineer

Full-timeSenior · 5+ yearsRemote

Own end-to-end maritime workflows, system design and production AI-agent behavior with TypeScript, Postgres and AWS in a fully remote team.

Backend-leaning, product-minded, and senior enough to shape the problem as well as solve it. You’ll own whole workflows in the coordination layer that keeps ships running—vessel teams, suppliers and forwarders, and the emails, agents and parsers that hold it all together.

  • Employment: Full-time
  • Location: Fully remote
  • Level: Senior · 5+ years
  • Focus: Backend, product-leaning
  • Core stack: TypeScript, Postgres, AWS

What Narwhal does

An operating system for running ships

Narwhal is a maritime platform for technical ship management. Running a fleet means holding together maintenance, procurement, supply chain and logistics across systems that do not talk to each other—ERPs, planned maintenance systems, procurement platforms, forwarder portals—and an enormous amount of email in the gaps. Narwhal is building the layer that unifies all of it and putting AI agents on coordination work still being done by hand.

A vessel may need a spare part, triggering a long and fragile chain across purchase orders, supplier and forwarder quotes, bookings, road/sea/air legs, and documents such as bills of lading, air waybills, packing lists and proofs of delivery. Narwhal replaces inbox-driven coordination with shared structured state, transactional email sent at the right moment, and LLM agents that read replies and write results back without manual retyping.

The stack

  • Language: TypeScript end to end, Node 22
  • API: tRPC 11 with superjson; Zod for validation
  • Data: Postgres, Drizzle ORM, drizzle-kit migrations
  • Frontend: Next.js 15, React 19, TanStack Query
  • AI: Anthropic SDK, Claude Agent SDK, Langfuse tracing
  • Infrastructure: AWS (S3, SES, Cognito, ECS), Terraform, Vercel
  • Testing: Vitest—unit tests plus an integration suite against real Postgres
  • Tooling: pnpm workspaces, Turborepo, ESLint, Prettier, GitHub Actions

What you’d own

  • Whole workflows, end to end: schema, endpoints, scheduled work, outbound email, the agent that reads the reply, and the screens that surface it. Take a rough description to production and stay close enough to see how it behaves with real operators.
  • The shape of the system: service boundaries, endpoint conventions, durable background work, and safe migrations on live tables. The patterns you set should be worth the rest of the team copying.
  • Agent behavior you can defend: tool design, structured output, database write guardrails, tracing and evaluations as part of the feature.
  • The failure modes: read production logs, ship the fix, and remove the class of bug rather than only the instance.
  • The people around the work: review closely, leave the code better than the PR found it, and make the codebase easier for the next engineer to join.

What we’re looking for

  • Five or more years writing backend code that real users depend on, including at least one system you owned long enough to live with your own decisions.
  • Deep TypeScript and SQL you write yourself rather than hope an ORM generates. You can read an EXPLAIN plan and tell whether the query is wrong or the index is.
  • Data models that survived changing requirements. You have designed schemas, migrated them under load, and know which parts of a design are expensive to get wrong.
  • You have shipped an LLM-based product and know where it fails. The gap between a convincing demo and a system you would let email a customer is central to this role.
  • You write tests while building and have a view on which tests earn their maintenance.
  • You ask why and push back. You resolve under-specified work before coding, including when resolution means changing the ticket.
  • You write clearly: PR descriptions, specs and messages that someone three time zones away can act on without booking a call.
  • You are comfortable in a codebase you do not fully understand yet and would rather read the existing implementation than invent a parallel one beside it.

How the Harper process works

  1. Tell Harper about your background and what you are looking for. Harper helps you explore whether this role fits your experience and goals.
  2. If you want to be considered, Harper confirms your interest and what may be shared. A Harper 팀원 makes the final review before any introduction to the hiring company.
  3. The company decides whether to move forward and provides its interview details. An unanswered request is not treated as acceptance or rejection.