Junior Product Engineer
Build the TypeScript and Postgres coordination layer that connects vessel teams, suppliers and forwarders in a fully remote maritime AI team.
Backend-leaning, product-minded. You’ll build the coordination layer that keeps ships running—connecting vessel teams, suppliers and forwarders, and the emails, agents and parsers that hold it all together.
- Employment: Full-time
- Location: Fully remote
- Level: Junior · 1–3 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 we’re looking for
- One to three years writing backend code that real users depend on. Titles matter less than having shipped something and then lived with it.
- Fluent TypeScript and SQL you write yourself rather than hope an ORM generates. You should be comfortable reading a schema and an EXPLAIN plan.
- You write tests while building, not as a chore afterwards.
- You ask why. An under-specified ticket makes you uncomfortable enough to resolve it before writing code.
- 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
- Tell Harper about your background and what you are looking for. Harper helps you explore whether this role fits your experience and goals.
- 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.
- The company decides whether to move forward and provides its interview details. An unanswered request is not treated as acceptance or rejection.