AI Engineer- NLP

Velocitor Solutions
Charlotte, NC, United States
7 days ago

Role details

Contract type
Permanent contract
Employment type
Full-time (> 32 hours)
Experience level
Expert
Experience required
3 years minimum
Working hours
Regular working hours
Job source

Tech stack

Query Performance Application Programming Interfaces (APIs) Artificial Intelligence Architectural Patterns Unit Testing Microsoft Azure Command-Query Responsibility Segregation (Software Development) Data Retention Data Security Software Debugging Dependency Injection Python (Programming Language)
+23 more
PostgreSQL Azure DevOps Pipelines Search Technologies SQLAlchemy Software Testing Automation Framework Strategies of Testing TypeScript Privacy Controls Tailwind ReactJS Large Language Models Backend Fastapi Pytest Webpack ONNX (Open Neural Network Exchange) Format Front End Software Development Full-text Search JestJS Terraform Pagination Domain Driven Design Key Vault

Job description

V-Assistant is a conversational AI system running in production on Velocitor’s VTrack fleet management platform. Users ask natural-language questions about vehicles, drivers, safety events, scorecards, and inspections, and get back formatted answers with charts and tables. Under the hood it is a LangGraph tool-calling agent over 28 domain tools that wrap the VTrack API, fronted by NeMo Guardrails, backed by PostgreSQL with pgvector for retrieval and agent checkpointing, and served to an embeddable React chat widget over an NDJSON stream. It is deployed across five environments on Azure Container Apps.

What you will work on

  • Take over and then extend the core chat pipeline: guardrails, conversational query reformulation, embedding-based tool routing, the LangGraph agent, response formatting, and follow-up question generation.
  • Maintain and add to the domain tool layer over the VTrack API, including argument schemas, authorization checks, pagination, date handling, and error formatting.
  • Support the system in production: respond to incidents, investigate latency and quality regressions, and improve the telemetry and runbooks where the current instrumentation makes diagnosis harder than it should be.
  • Improve retrieval quality for the RAG-backed knowledge tools using PostgreSQL full-text search and pgvector, and help decide where a hybrid approach is warranted.
  • Contribute to an evaluation practice that gates model and prompt changes: representative and adversarial datasets, tool-selection and argument accuracy, shadow traffic, canary rollout, and automated rollback.
  • Help reduce and control LLM cost and latency through per-request token and cost telemetry, prompt and context trimming, caching, model tiering, and elimination of redundant LLM stages.
  • Strengthen security boundaries: tenant-scoped credentials and queries, server-side tool authorization independent of the model, and prompt-injection defense across the prompt, retrieval, tool, authorization, and output layers.
  • Extend the tiered test strategy across commit, PR, nightly, and release gates

Technical environment

Backend: Python 3.12, FastAPI, Pydantic v2, SQLAlchemy 2 with Alembic, async psycopg/asyncpg, LangChain and LangGraph, Azure OpenAI via langchain-openai, NeMo Guardrails, ONNX Runtime embeddings via FastEmbed, LangFuse and structlog for observability, httpx, strict mypy and ruff, pytest with DeepEval.

Frontend: React 19, TypeScript, Vite, Tailwind v4, @assistant-ui/react for the chat runtime, TanStack Query, Radix UI, Recharts, MSW, Vitest and Testing Library.

Infrastructure: Azure Container Apps, Azure PostgreSQL Flexible Server with pgvector, Front Door, Key Vault, Container Registry, OpenTofu/Terraform across five environments, Azure DevOps Pipelines.

Architecture patterns: domain-driven design with domain, application, and infrastructure layers; CQRS in the L&D module; dependency injection container; UI/hook/connector separation on the frontend.

Requirements

  • Three or more years building and supporting backend services in production, with hands-on experience shipping at least one LLM-backed feature that real users depend on.
  • Demonstrated ability to take ownership of an existing codebase you did not write, including reading unfamiliar code, using tests and traces to establish how it actually behaves, and making safe changes before you understand every corner of it.
  • Strong Python: async programming, type-driven design, and comfort working in a strict mypy codebase.
  • Working experience with an LLM orchestration framework such as LangChain, LangGraph, or an equivalent agent framework, including tool and function calling.
  • Solid PostgreSQL skills: schema design, query performance, migrations, and an understanding of connection-pool behavior under load.
  • Experience supporting a live service: diagnosing production issues from telemetry, reasoning about blast radius, and knowing when to roll back rather than fix forward.
  • Judgment about when an autonomous agent is appropriate and when a deterministic workflow is the better design, especially for operations that modify data or carry compliance requirements.
  • Understanding of security boundaries in AI systems: treating model output and retrieved content as untrusted, enforcing authorization outside the model, and scoping data access per tenant.
  • Ability to debug across service boundaries using traces, per-stage latency metrics, and correlation IDs rather than guesswork.
  • Familiarity with retries, backoff with jitter, circuit breakers, and concurrency limits when working against rate-limited upstream providers.
  • Testing discipline that goes beyond unit tests, including contract tests against external APIs and some exposure to evaluating non-deterministic components.

Nice to have

  • Prior experience on a vendor-to-in-house or team-to-team handover of a production system.
  • Azure experience, particularly Container Apps, OpenAI deployments and quota management, and Key Vault.
  • Terraform or OpenTofu, and Azure DevOps Pipelines.
  • Vector search and RAG systems at scale, including chunking strategy, hybrid retrieval, and reranking.
  • LLM-as-judge evaluation, and awareness of its failure modes such as scoring variance, verbosity bias, and susceptibility to injection.
  • Guardrails frameworks such as NeMo Guardrails, or equivalent safety-layer work.
  • Modern React and TypeScript, enough to be effective in the widget and admin SPA when a feature spans the stack.
  • Data retention and privacy engineering: classification, deletion across messages, traces, embeddings, and caches, legal holds, and third-party provider retention terms.

Apply for this position

This job is hosted externally. Click below to view the full posting and apply.

Apply on www.indeed.com

Good distractions

Talks and stories from around this role — technically off-topic, practically not.

2:08 min

Applying large language models to infrastructure tasks

Alfonso Sandoval Rosas Alfonso Sandoval Rosas · Europe 2026 Virtual

1:21 min

Exploring the target application for front end tests

Anna Mcdougall · JS Congress

3:05 min

Tagging and organizing execution scenarios with pytest markers

Florian Bruhin · WWC 2021

5:30 min

Building components of a real-world LLM lifecycle

Maxim Salnikov Maxim Salnikov · LIVE

2:59 min

Introduction and transitioning into the tech industry

Anna Mcdougall · JS Congress

5:30 min

Extending testing workflows using popular pytest plugins

Florian Bruhin · WWC 2021

Videos

See all

Related articles

See all