Full-Stack Software Engineer, AI Applications
- Discuss this with your agent
- Open in Claude
- Open in ChatGPT
Prepare application
- Draft this with your agent
- Open in Claude
- Open in ChatGPT
Role details
Tech stack
+7 more
Job description
- Build and maintain full-stack product features, with Python services on the backend and TypeScript on the frontend
- Develop and debug backend APIs, database access, asynchronous jobs, queues, retries, and state transitions
- Debug production problems with evidence: reproduce, narrow, hypothesize, instrument, fix, test, and verify
- Trace changes across pull requests, commits, CI runs, artifacts, deployments, environments, logs, and user-visible behavior
- Write behavior-focused tests and verify behavior at runtime in the environment where it actually runs
- Improve reliability, failure handling, backwards compatibility, and observability in the systems you touch
- Add validation, structured outputs, fallbacks, and approval boundaries around AI-driven features, working alongside the team’s existing AI expertise
- Communicate clearly about what is confirmed, assumed, incomplete, or still unverified, * Independently investigate and resolve full-stack and deployment-related problems
- Deliver focused product improvements with meaningful tests
- Prove which code and artifact are actually running in each environment
- Improve the reliability and observability of backend, asynchronous, and AI-driven workflows
- Close the loop on your work rather than considering it finished once the code is merged
How we work
We encourage responsible use of AI engineering tools. We care less about which frameworks you have memorized and more about whether you can:
- Reconstruct a real system precisely
- Explain your personal contribution
- Find and prove the root cause of a failure
- Verify AI-generated work independently
- Communicate clearly and complete the operational loop
Routine reliability work is normal software-engineering work. Production debugging, deployment verification, CI failures, environment inconsistencies, recurring engineering issues, and failure recovery are part of the job, not lesser or separate work. We value engineers who take responsibility for making the whole system work, not only for completing the code immediately in front of them.
Requirements
- Strong practical software-engineering experience building and supporting real production software
- Strong Python, including backend APIs, services, and database work
- Strong TypeScript experience; broad fluency matters more than any specific framework
- Comfort with asynchronous processing, retries, idempotency, state, and failure recovery
- Good engineering judgment around reliability, failure handling, backwards compatibility, testing, and observability
- Willingness to debug across system boundaries, rather than treating problems outside your own component as someone else’s responsibility
- Fluency with Git, pull requests, code review, automated testing, CI/CD, and production verification
- Effective use of AI coding agents such as Codex or Claude Code, while remaining personally responsible for understanding, reviewing, testing, and verifying the resulting work
- An evidence-based approach to problem-solving: reproduce, narrow, hypothesize, instrument, fix, test, and verify
- The ability to learn unfamiliar frameworks, systems, and codebases quickly
- A can-do attitude, an ownership mentality, and clear communication about what is known, assumed, incomplete, or unverified
We value production software-engineering experience more than expertise in any particular framework or AI architecture. We are looking for someone who has already shipped and supported production software and can independently own reasonably scoped engineering problems.
Nice to have
- Experience with Django or another Python web framework (useful, not required)
- PostgreSQL or comparable relational-database experience
- Experience with AWS, containers, Redis, queues, or asynchronous job systems
- Familiarity with observability, tracing, and production debugging
- Experience with agent frameworks such as Pydantic AI or comparable tools, particularly around production concerns: structured outputs, validation, fallbacks, retries and failure recovery, provider or model switching, observability and tracing, evaluation, cost and latency optimization, and safe handling of partial or failed tool execution
- Experience with clinical, healthcare, pharmaceutical, or other regulated software
Prior clinical-trial experience is welcome but not required. We value engineers who can learn an unfamiliar regulated domain quickly, communicate uncertainty honestly, and apply sound engineering judgment.
About the company
Hill Research is looking for a hands-on software engineer who can build and maintain production full-stack systems, debug complex problems, improve reliability, and work effectively in an AI-enabled development environment.
About Hill Research
Hill Research develops AI-enabled software for clinical-trial and pharmaceutical workflows. Our TriClick platform helps teams process clinical documents, manage data workflows, and produce traceable outputs.
Our goal is not simply to generate results with AI. We build systems that must be reliable, secure, reproducible, and suitable for sensitive, regulated workflows.
Apply for this position
This job is hosted externally. Click below to view the full posting and apply.
Prepare application
- Draft this with your agent
- Open in Claude
- Open in ChatGPT
Good distractions
Talks and stories from around this role — technically off-topic, practically not.
Moments
Explore playlistsVideos
See allRelated articles
See all
What is Software Engineering in the Age of AI?
How We Built a Worry-Free System That Runs for 10+ Years – And What We’d Do Again
Dev Digest 137 - AI'm not sure about this
From Prototype to Production: Build AI Agents with This Free 4-Course Learning Path