online · open to full-time · on-site · hybrid · remote
~ charl-roux · —— EDT · Ann Arbor, MI
// 00 — index

Senior AI & Frontend Engineer building full-stack AI applications

I'm Charl Roux. I build full-stack AI applications: retrieval pipelines, streaming interfaces, and the production engineering that keeps them reliable. DocLocal is the clearest example, Angular and Nx on the frontend, Python and FastAPI on the backend. Before that, 7 years shipping production Angular platforms, the last four as frontend team lead on an enterprise cybersecurity SaaS platform, where I took the codebase from Angular v2 to v19 without a rewrite or feature freeze and cut the main bundle from 400 KB to 250 KB.

LOC
Ann Arbor, MI
TZ
EDT · UTC−4
EXP
7 years
STATUS
full-time · on-site · hybrid · remote

now

available full-time · on-site · hybrid · remote · US-authorized · no sponsorship · Ann Arbor, MI hiring
currently DocLocal. PDF question answering where every answer cites a passage you can check. Angular 21 and Nx on the frontend, Python 3.12 and FastAPI on the backend running on NVIDIA NIM, with streamed answers, mid-stream cancellation and session recovery. focus
shipped an Angular v2 → v19 modernization of a cybersecurity SaaS platform — no rewrite, no feature freeze, main bundle 400 KB → 250 KB (−37.5%). prod
architecture Angular Signals + OnPush change detection — fine-grained reactivity, no unnecessary re-renders. pattern
background 7 years shipping production frontend — four as frontend team lead on an enterprise cybersecurity SaaS platform, two and a half in agency delivery across 10+ production apps, and since late 2025 building AI applications independently. exp

01Featured work

One project, built end to end: retrieval-augmented document question answering, with the streaming, failure handling and citation UI that make an AI answer worth trusting.

// regression
−50%
Per-release regressions, roughly halved by Cypress and Jest suites wired into the DevSecOps pipeline.
// migrated
v2→v19
Angular versions, migrated incrementally on a live cybersecurity SaaS platform — no rewrite, no feature freeze.

02Skills & stack

A pragmatic, opinionated stack — picked because it scales for teams, not because it's fashionable.

$tree ./stack --years frontend/
├── angular·······v2 → v19, signals, standalone  7y
├── typescript·····strict, generics, type utils  7y
├── rxjs···········streams, custom operators  7y
├── ngrx···········store, effects, entity  5y
├── html···········semantic, WCAG 2.1  7y
├── css············grid, animations, arch  7y
└── web workers····off-main-thread compute  3y
$tree ./stack --platform platform/
├── ci-cd··········github actions, docker  4y
├── nx·············monorepos, affected graph  3y
├── module-fed·····runtime micro-frontends  3y
└── fastapi········python, rag api (doclocal) now
quality/
├── cypress········e2e, visual regression  5y
├── playwright·····e2e, workers, streamed ui now
├── jest···········unit, TestBed  5y
└── accessibility··aria, keyboard, axe  6y
approach/
├── reactive·······streams over imperative
├── strict-types···types as documentation
└── a11y-first·····a baseline, not a polish
// 03 — contact

Let's talk.

I'd love to hear about your project and how I could help. Drop a note via the form, or reach me directly — I read everything and reply within a day or two.

contact.sh — new message
⏎ shift+enter for newline · enter to send