Senior Full Stack Developer - Java + TypeScript/React + AI
Job details
- Pay
- $94,400 – $140,000 a year
- Work mode
- Remote
- Employment
- Full-time
- Level
- Senior
- Experience
- 5+ years
- Posted
- Oct 21, 2026
- Last confirmed open
- Oct 22, 2026
About this role
***** Must be a US citizen or hold a green card. *****
About Penn River
Penn River is an agentic cloud-native core policy administration platform for life and annuity carriers. Our architecture unifies the product lifecycle, from actuarial requirements through configuration and automated certification, so carriers can launch, convert and innovate quickly.
We are a small, fast-growing team, and every implementation we deliver shapes how carriers see us. This role sits at the center of that.
Overview
We're looking for a full stack engineer who can take a feature from schema to screen, uses AI daily as both a development tool and a product capability, and has knowledge of, or real curiosity about, the life and annuity business. This is a high-autonomy role: we want someone who will take ownership of a domain, whether a product area, an integration, or a part of the platform, and drive it with minimal direction.
The profile below describes the ideal; strong candidates will be deep in most areas and credible in the rest.
Backend (Java) and Infrastructure
- 5+ years of production Java on a modern version (17+), with Spring Boot as the default: REST API design, Spring Data/JPA, Spring Security, and configuration management.
- Designs APIs deliberately: resource modeling, versioning, error contracts, and pagination. Understands the boundary between domain services and the BFF.
- Solid with PostgreSQL: schema design, migrations (Flyway/Liquibase), can read a query plan, and knows when the ORM is hurting them.
- Comfortable with AWS fundamentals: deploys, logs and metrics, IAM basics, and managed services like ElastiCache and RDS.
- Fluent in containerization: Docker for local and production builds, and working familiarity with Kubernetes on EKS (deployments, services, config and secrets, reading pod logs when something breaks).
- Comfortable with build and deployment pipelines in GitHub: GitHub Actions workflows, branch protection, PR checks, and artifact and image builds. Can debug a failing pipeline without waiting for someone else.
- Not afraid of older code. They won't lead the platform migration, but they'll touch legacy paths and should handle them calmly.
Frontend (TypeScript/React)
- 3+ years of production TypeScript and React with strict typing, modern hooks and composition, and server-state tooling (TanStack Query or similar).
- Builds and owns a BFF (Node/TS or Spring) that shapes Java domain APIs for the UI, aggregates calls, handles auth and session, and keeps the client thin.
- Thinks in component systems: shared libraries, design tokens, and Storybook-style documentation.
- Builds for accessibility and performance by default.
Full Stack Mindset
- Takes a feature from schema to screen: data model, service, API contract, BFF, UI, and tests. On this team there is no wall to throw work over.
- Tests at every layer: JUnit and integration tests on the backend, Testing Library and Playwright on the front. Picks the right layer for the change.
- Security-literate end to end: input validation, server-side authorization checks, token handling, and no PII in logs or the browser. SOC 2 controls are part of the work.
UI/UX
- Product-minded. Turns a fuzzy workflow into an interaction model and can mock it in Figma when there's no designer.
- Enjoys data-dense enterprise UIs: complex forms, tables, validation, and configuration screens. Designs for operators who live in the app all day.
- Turns client pain into concrete UX improvements.
AI and Prompt EngineeringAI as a development tool
- Uses Claude Code, Cursor, or similar daily; verifies output rigorously and owns every merged line.
- Contributes reusable prompts and skills to the team's shared catalog.
AI as a product feature
- Has shipped LLM features in production: structured outputs, tool use, streaming, and RAG.
- Treats prompts as versioned, testable artifacts backed by evals, not strings buried in code.
- Keeps LLM calls server-side (BFF or a Java service) for key management, PII redaction, audit logging, and rate limiting.
- Designs UX for AI failure modes: citations, confidence cues, human confirmation on consequential actions, and graceful fallbacks. This is critical in a regulated domain.
- Prototypes quickly to support our customer-facing AI story, and knows the gap between a demo and production.
Product and Life & Annuity Curiosity
- Ideal: experience in insurance, financial services, or another regulated domain.
- Minimum: asks why a business rule exists and wants to learn the vocabulary (policy lifecycle, riders, commissions, in-force vs. new business).
- Treats correctness and auditability as features. A wrong cash value or commission is a client-trust event.
- Can hold their own on a client call.
Red Flags
- “Full stack” that's really frontend with some Express, or a Java backend with some jQuery. Probe both sides equally.
- AI experience limited to chat usage: no evals, no production integration, no verification discipline.
- Calls LLMs from the browser, or has no answer for where PII redaction belongs.
- Bored by enterprise workflows, or needs PM, design, and QA layers to function.
Pay: $94,400.00 - $140,000.00 per year
Benefits:
- 401(k) matching
- Dental insurance
- Disability insurance
- Health insurance
- Health savings account
- Life insurance
- Paid holidays
- Paid time off
- Vision insurance
Experience:
- Java: 5 years (Preferred)
Work Location: Remote