Skip to content
David Gary

Machine Learning Engineer · Applied AI

Charlotte, NC · Remote (US)

Open to contract & full-time · Remote (US)

Brief

I build and ship production machine learning: model training, evaluation, and the systems that serve it.

I build applied machine learning end to end: training and evaluating models, then shipping them behind production APIs and infrastructure. My work spans document AI and information extraction, reinforcement learning for 3D bin-packing, parameter-efficient fine-tuning research, and real-time anomaly detection, alongside the systems, security tooling, and full-stack products I've shipped.

I care about shipping under production constraints: evaluation gates before a model promotes, integrity verification, and honest reporting of what's measured versus what's still in progress. Every project claim below is marked accordingly.

Looking for

Machine learning engineering roles: applied ML, model training and evaluation, and ML systems/platform work. Contract or full-time, remote (US).

Work

16 exhibits
Exhibit 01ML & Applied AI

Packomation · Spatial Capture & Learned 3D Bin Packing

Python · PyTorch · Reinforcement Learning · FastAPI · ONNX · React Native · TypeScript · iOS · ARKit · LiDAR

An iOS app that scans a room or shipment and generates an optimized 3D load plan, for both personal moves and freight/container loading. A local Expo native module bridges RoomPlan LiDAR scans and ARKit tap-to-measure for item dimensioning, with camera intake (react-native-vision-camera) and a non-LiDAR fallback chain (marker-assisted estimate, then model prior). Planning ships classical 2D/3D heuristics in TypeScript (BL/BAF/BSSF/BLSF plus an NFDH shelf packer) alongside a learned packer: a height-map actor-critic (Zhao et al., AAAI 2021) trained from scratch by PPO self-play on synthetic instances (no labels), extended with a lookahead policy that chooses which of the next k buffered items to place, and where to put it, in one forward pass (k = 1 reduces exactly to the online env, parity-verified). Packing constraints (stacking limits, orientation locks, unload-order/LIFO) enter as declarative per-step feasibility masks randomized during training, so a single policy transfers across constraint sets; inference wraps the policy in sampled rollouts with value-guided beam search, served via a FastAPI /plan endpoint with a TypeScript client and an ONNX export path for on-device inference. Freight mode adds pallet-first planning, container presets, load sequencing, a deterministic scorecard with a profile-aware re-ranker, and carrier handoff docs.

  • Measured:Under realistic constraints the lookahead policy's strict win rate over the best-of-4 heuristic rises from 0.10 to 0.69 as constraints tighten, staying 90–95% proven-optimal against a CP-SAT lower bound while the heuristic's optimality gap grows ~9×; the learned edge grows with constraint complexity
  • Measured:Process-parallel env stepping (shared-memory workers): 555 → 4,051 env-steps/s (7.3×) and ~3.7× end-to-end PPO, turning a ~3-hour training run into under an hour on one GPU
  • Measured:Eval-gated promotion: a checkpoint ships only if it beats the heuristic baseline; promoted checkpoint and training configs are committed. Jest suite covers planning, dimension estimation, sensor matching, persistence, exporters, and integration
  • In progress:Completability research: the boundary of mask-sufficiency is dead-end-free vs dead-end-prone, not static vs order-dependent; a fixed-capacity cut-subset feasibility benchmark is underway
Fig. 01 · Learned packer fitting a 2-bedroom load (18 items, 7 fragile) into a 14-ft truck under automatic stacking constraints
Exhibit 02ML & Applied AI

Does the Basis Matter? Permutation Controls for Wavelet PEFT

Python · PyTorch · PEFT / LoRA · Wavelets · Computer Vision · Medical Imaging · SAM · Permutation Tests

This project began as WaRA, a PyTorch PEFT library for LoRA-style fine-tuning in the wavelet domain (a separate low-rank adapter per DWT subband, recombined via inverse DWT at zero inference cost), and grew into a diagnostic study of whether frequency-domain PEFT methods exploit any real structure in their basis. The instrument is a matched basis-permutation control. Permutations are orthogonal and energy-preserving: they leave the LoRA baseline exactly invariant (singular values are preserved) while destroying the adjacency a separable 2D DWT relies on, so comparing the real metric to its permutation null separates real structure from basis artifact. On SAM ViT-B fine-tuned for CT segmentation (MSD-Spleen, full fine-tuning to val DSC 0.929, one 12 GB GPU), the two spaces split cleanly. In weight space, a genuine update is statistically indistinguishable from its permutation null (mean z ≈ 0), and a per-subband wavelet split needs ~85% more parameters than plain LoRA to match approximation quality, because the update is globally low-rank, exactly the regime where the SVD is optimal. In activation space, the patch-token grid beats its spatial-permutation null in every block (mean z ≈ +19). The wavelet basis helps only where adjacency is real, which explains why published wavelet PEFT operates on activations rather than weights.

  • Measured:Weight space is a basis artifact: a full fine-tuning update is indistinguishable from its permutation null (mean z ≈ 0), and the wavelet split needs ~85% more parameters than plain LoRA
  • Measured:Activation space is real: the patch-token grid beats its spatial-permutation null in 100% of blocks (mean z ≈ +19)
  • Measured:The WaRA library remains the instrument: weight-space and activation-space (WaRA-Seg for SAM) variants with a parameter-matched LoRA baseline; 75-test pytest suite passes
  • In progress:Paper v2 ('Does the Basis Matter?') extends the control to FourierFT, WaveFT, VeRA, and RandLoRA across parameter budgets to test a capacity-threshold law
Exhibit 03ML & Applied AI

Certifying Compression · Anytime-Valid Fidelity Tests for Compressed Models

Python · PyTorch · Statistics · E-processes · Model Compression · Quantization · LLMs

A statistical library (certify) and paper for certifying whether a compressed model is ε-equivalent to its source, with guarantees that hold at any stopping time. The certifier is an anytime-valid ε-equivalence test (betting confidence sequence plus a GROW-boundary e-process) whose wrong-verdict probability stays ≤ α no matter when you stop. Matching sample-complexity bounds accompany it, E[τ] = (1+o(1))·log(1/α)/KL(D‖ε) with rate ratio ≈ 1.2 at α = 0.05, and the oracle second-order term is resolved exactly. It ships two specializations: a worst-slice test certifying that every subgroup stays within ε, made multiplicity-free by a product e-process (no Bonferroni log G penalty), and a compression-frontier mode that certifies which of K candidate compressions are ε-equivalent and returns the cheapest, sharing each source pass so the expensive source cost is max_k rather than Σ_k. An audit applies it to eight architecture families under bitsandbytes plus released GPTQ/AWQ checkpoints: 4-bit certifies NOT_EQUIVALENT for every family, 8-bit is architecture-dependent, and query cost tracks the theory. The paper is explicit that the statistical pieces specialize known results; the contribution is assembling them into the first rigorous, deployable, anytime-valid certifier for compression, run end to end on a single 12 GB GPU.

  • Measured:Provenance recorded for every number in the paper
  • Measured:Audit across 8 architecture families: 4-bit certifies NOT_EQUIVALENT for every family, 8-bit is architecture-dependent; query cost tracks the theory
  • In progress:Consolidating for submission; open theory: the exact plug-in second-order adaptivity constant
Exhibit 04Systems & Security

Anomalens · Real-Time Host & Network-Behavior Anomaly Detection

Go · Anomaly Detection · Isolation Forest · Conformal Prediction · SHAP · WebSockets · Real-time Streaming

A single-binary Go service that streams host telemetry at 1 Hz over WebSocket and flags anomalies with an online isolation forest and conformal-prediction alerting. It collects CPU/memory/disk/network/process metrics via gopsutil, scores each snapshot with a sliding-window online isolation forest (Liu et al., 2008), and fires alerts at a target false-positive rate using conformal p-values (no per-metric threshold tuning). Each alert ships linear-SHAP feature attributions and a rule-based label across six anomaly types (resource exhaustion, data exfiltration, port scan, process anomaly, ransomware-style disk writes, and C2 beaconing, with network-aware features like send/recv asymmetry and send-periodicity). Persists to embedded BoltDB with switchable live/historical views and a go:embed single-binary build.

  • Measured:Conformal p-value alerting at a target false-positive rate, with no per-metric threshold tuning
  • Measured:29-feature engineering with linear-SHAP attributions on every alert; 1,905 lines of tests pass
  • In progress:Separate Python pipeline (IsolationForest / LSTM-autoencoder / XGBoost → ONNX) exists for offline evaluation but is not yet wired into the live binary
Anomalens: Real-Time Host & Network-Behavior Anomaly Detection
Fig. 04 · Crypto-miner CPU spike flagged critical (score 0.912) with per-feature attributions
Exhibit 05Client Work

Spirit · Learning Platform (EdTech SaaS)

Next.js · TypeScript · PostgreSQL · Prisma · Stripe · Mux · Clerk · Railway

A full-stack EdTech platform for a spiritual-education client, live in production at learnwithspirit.com, where learners buy and watch structured courses and instructors run their own teaching workspace. Next.js 15 + TypeScript on Prisma/PostgreSQL: Clerk auth with learner/instructor/admin roles, Stripe Checkout for single courses and discounted bundles, Mux video with signed RS256 playback and self-serve instructor upload, and Resend transactional email. Lessons span video, audio, Markdown articles, and private reflection journals, with resume positions, practice-streak stats, and auto-issued shareable certificates; learners get one-click data export and account deletion, and money and content mutations land in an audit log.

  • Measured:Deployed to production on Railway behind Cloudflare at learnwithspirit.com, with 13 Prisma migrations applied on deploy and CI on GitHub Actions
  • Measured:70 Vitest tests across 9 files pass, covering the money path end to end: checkout (course and bundle variants), signature-verified webhook fulfillment with idempotent redelivery, refund revocation, entitlements, and the admin authorization matrix
  • Measured:Signature-verified Stripe webhook grants entitlements idempotently inside a DB transaction; bundle purchases allocate the discounted total pro-rata across member courses; refunds revoke access and email the buyer
  • In progress:Soft launch: the production catalog is still seed content — real course videos, business registration, and the switch to live-mode Stripe sit with the client

Index · additional entries

06Certainaity

Forensic Image Manipulation Detection

An end-to-end forensic image-analysis service that flags splicing, copy-move, AI inpainting, and GAN-generated images and produces court-ready PDF reports with chain-of-custody metadata. I built the full inference pipeline: handcrafted forensic features (ELA, wavelet noise variance, CFA artifact maps, DCT block similarity) computed in parallel, then a pluggable weighted ensemble over five PyTorch detector heads (a 9-layer FCN, fine-tuned MantraNet, a Siamese ResNet-50 with contrastive loss, a CLIP ViT-B/32 inpainting head, and a dual-head CLIP ViT-L/14 GAN head). Ensemble weights are tunable via an L-BFGS-B routine that maximizes pixel-level F1 on a validation set. Wrapped in a FastAPI + Celery + Redis service with RS256 JWT auth, SHA-256 chain-of-custody, a JPEG re-compression resilience check, PDF/JSON reporting, a React canvas-overlay UI, Kubernetes manifests, Prometheus metrics, and CI enforcing 85% line coverage.

Python · PyTorch · CLIP · Computer Vision · FastAPI · Celery · Kubernetes · React · TypeScript

  • Measured:Five-detector pluggable ensemble with L-BFGS-B weight tuning on pixel-level F1
  • Measured:Serving stack complete and inspectable: FastAPI + Celery + Redis, K8s manifests, Prometheus, CI gate at 85% line coverage
  • In progress:Model weights are mounted at runtime and have not yet been trained for this build, so end-to-end detection accuracy is unbenchmarked
07Spectral Compressibility

What Training-Free Metrics Actually Predict

A theory-plus-audit research project (speccomp) on what makes a neural network layer compressible, and whether the field's training-free sensitivity heuristics actually measure it. The central audit finding is that popular training-free scores (Hessian trace as in HAWQ, heavy-tailed exponent α) predict weight-space compressibility but not output-space damage; used for mixed-precision bit allocation, they perform worse than random. A cheap one-backward empirical-Fisher gradient predictor does better. It beat HAWQ's double-backward Hessian score on 100% of cells in the multi-architecture RTN sweep, and ties it (WikiText-2 perplexity 60.5 vs 60.1) at a fraction of the cost under GPTQ, a real quantizer implemented from scratch with cached bit-independent inverse-Hessians. A Gauss–Newton analysis explains the gap, and its falsifiable probe-noise-vs-data-alignment prediction held up in testing. The headline claim survived a pre-registered confirmatory test, locked before the data was collected, on 7 held-out models across 5 architectures. All numbers reproduce from the experiments directory; everything runs on a single 12 GB GPU.

Python · PyTorch · Random Matrix Theory · Model Compression · Quantization · GPTQ · Statistics

  • Measured:Pre-registered confirmatory test (locked before data) passed on 7 held-out models across 5 architectures
  • Measured:One-backward gradient allocator matched HAWQ under GPTQ + WikiText-2 (perplexity 60.5 vs 60.1) and beat it on 100% of multi-arch RTN cells; data-free scores allocate worse than random; 37/37 tests pass
  • In progress:Workshop paper drafted ('What Do Training-Free Compressibility Metrics Actually Predict?'); multi-model GPTQ sweep next; targeting NeurIPS 2027
08Sketchy

Low-Rank Curvature Corrections to Muon, Tested Honestly

An optimization-theory project asking two questions: is Muon's gradient orthogonalization genuinely optimal, or an artifact of its isotropic-curvature model? And is a randomized Nyström low-rank-plus-scaled-identity preconditioner (SketchySGD-style) the cheapest provable correction, i.e. steepest descent under a data-adaptive norm with O(p·r) memory? I built sketchy, a PyTorch library with stabilized-Nyström sketching, Hessian-vector-product and Gauss–Newton oracles (including multiclass), SketchySGD/SketchySVRG, and Muon, plus six experiment suites with figures (CIFAR-10 on a single RTX 3060) and five theory notes. The empirical answer is a negative with a mechanism: the rank-r curvature correction substantially redirects the Muon step (~0.84 direction change) without improving optimization, and the concentration experiment shows the redundancy is structural rather than a concentration artifact. After a novelty audit found the 2025–26 optimizer/curvature space saturated (five candidate re-pivots each killed by a pre-check), the project is shipping that negative result, with its mechanism, as a 10-page arXiv paper rather than chasing a saturated niche.

Python · PyTorch · Optimization · Second-Order Methods · Nyström Sketching · Muon

  • Measured:Phases 0–5 complete: Nyström/HVP/GGN oracles, SketchySGD/SketchySVRG, Muon; 22 tests green; 6 experiment suites with figures
  • Measured:The rank-r correction redirects the Muon step (~0.84) without helping; the redundancy is structural, refuting the concentration-predicts-the-gap framing
  • In progress:Paper 1 consolidating (10-page arXiv build compiles); per-layer interpolation optimizer, nanoGPT runs, and pip packaging remain
09Macforensic

Forensic Imaging Tool for macOS

A macOS command-line tool for forensically sound disk acquisition, built for investigators who need a verifiable raw image with a defensible chain of custody. It enumerates and risk-flags source devices via diskutil, streams a block device to a .dd image, and records a JSON case manifest plus an append-only acquisition event log, with a PyInstaller DMG build for field-portable distribution.

Python · Systems · Forensics · Security

  • Measured:Verify-after-write: SHA-256 computed during acquisition, then the written image is re-hashed to confirm it matches
  • Measured:Three policy modes (forensic-safe / lab / emergency-live) guard live acquisition of the currently booted disk; a map-apfs subtool documents containers, physical stores, and volumes
  • Measured:Optional detached Ed25519 signatures and RFC3161 timestamping of the hash sidecar
  • Measured:pytest suite covers the imager, verifier, and APFS topology mapping
Macforensic: Forensic Imaging Tool for macOS
Fig. 09 · Device survey with per-disk risk flags, then APFS container mapping; read-only, no root
10Entropy Encryption Detector

Autopsy Ingest Module

An Autopsy file-ingest module that implements the methods from my ITIS 5250 computer-forensics paper ('Evaluating Entropy-Based Encryption Detection Methods', UNC Charlotte, Dec 2023). Autopsy's built-in detector flags a file as encrypted when its Shannon entropy exceeds 6.0 bits/byte, a rule that produces false positives on structured-but-dense formats like PDFs and archives. This module instead computes four entropy measures per file from a byte histogram (Shannon, collision at Rényi α=2, Rényi α=3, and min-entropy) and raises Autopsy's native TSK_ENCRYPTION_SUSPECTED artifact with all four values recorded in the comment. It defaults to min-entropy, the paper's lowest-false-positive measure: structured files always have a dominant byte, encrypted data has none. Analysts can switch measures, tune the threshold and α, or flag when any measure trips. The code is Jython- and CPython-safe, and ships with unit tests, a standalone CLI scanner, and a regenerable labeled corpus that reproduces the paper's result.

Python · Jython · Autopsy · Digital Forensics · Entropy · Security

  • Measured:Reproduces the paper's headline on the bundled corpus: Shannon (Autopsy's default) wrongly flags a real PDF at 7.90 bits/byte; min-entropy clears it (4.82) while still catching random bytes (7.87)
  • Measured:Drop-in python_modules folder with a settings UI (measure, threshold, α); unit tests and the CLI scanner run without Autopsy
11Retail Platforms

New Leaf & Locket Vintage

Two live e-commerce sites, a mobile plant shop (The New Leaf) and a vintage clothing store (Locket Vintage), each with a self-serve storefront and an owner admin dashboard. Built on a reusable Express + SQLite (node:sqlite) API and React/Vite storefront pattern, with self-serve Stripe Checkout, signature-verified Stripe webhooks driving order and inventory state, and JWT-secured admin portals for inventory, orders, schedule, expenses, bookings, and reporting. Hardened with express-rate-limit, Helmet, a strict CORS allowlist, and request sanitization; Locket onboards real inventory via a CSV import pipeline. Deployed on Vercel (storefronts) + Railway (APIs).

React · TypeScript · Express · SQLite · Stripe · Admin Portal

  • Measured:Two stores live in production on Vercel + Railway; Locket onboards real inventory via a CSV import pipeline
  • Measured:Stripe Checkout with signature-verified webhooks driving order and inventory state; JWT admin, rate limiting, Helmet
12Board Logs

Board Climbing Analytics Platform

A personal climbing-progress tracker that turns a messy session spreadsheet into an interactive analytics dashboard for spotting training trends. Full-stack TypeScript: an Express + SQLite (node:sqlite) backend seeds from an Excel/CSV log via an ExcelJS pipeline (with Excel date-serial handling), then computes analytics server-side: a cumulative timeline with 7-day rolling average, grade distribution, per-grade flash rate and average attempts, attempt histogram, sends-by-wall, style mix, and weekday training volume. A React + Recharts frontend renders these with date/wall/grade/style filters and token auth. Deployed frontend on Vercel, backend on Railway.

React · TypeScript · Express · SQLite · Recharts · Data Visualization

  • Measured:687-send dataset across 9 walls; 8 analytics views computed server-side
  • Measured:Live at boardlogs.com
13Taskmaster Presentation Suite

A local-first web app I built to run homemade Taskmaster game nights: one operator drives the show, and a second screen displays it to the room. TypeScript end to end: a Fastify API over Node's built-in SQLite (node:sqlite, WAL mode) with routes for episodes, contestants, tasks, scoring, results, presenter state, and history, where every score change is written to a score_events table (old/new points, actor, timestamp) for a full audit trail with rollback. A React + React Router front end pairs a control surface with a dedicated /presenter window that stays in sync by polling shared state through TanStack Query; Zustand (persisted) handles local UI flow. Includes a media picker (video/image/gallery via multipart) plus JSON export/import of the whole show database.

React · TypeScript · Fastify · SQLite · TanStack Query · Zustand

  • Measured:Every score change lands in a score_events audit table (old/new points, actor, timestamp) with rollback
  • Measured:Operator and presenter UIs stay in sync via polled shared state; TypeScript end to end
14MultiModelRTC

P2P Video Chat with In-Browser ML Detection

A peer-to-peer WebRTC video chat where TensorFlow.js models run in the browser to detect faces, hands, and objects, overlaying live annotations on each stream. A Vite client establishes RTCPeerConnection sessions over Google STUN with Firebase Firestore for room signaling (offer/answer + ICE), so media never leaves the peer-to-peer path. Four TensorFlow.js models (coco-ssd, facemesh, handpose, body-pix) run client-side and render predictions as positioned DOM overlays (boxes, face mesh, gesture labels). No video pixels are modified, and there is no server-side CV. Built as a 4-person UNC Charlotte ITCS 6166 course project (2023), where I was the repo integrator and authored the final IEEE report; per-member feature ownership isn't separable from the source.

WebRTC · TensorFlow.js · Computer Vision · Firebase · JavaScript · Real-time

  • Measured:Four TF.js models run fully in-browser; media stays on the peer-to-peer path with no server-side CV
  • Measured:4-person course project; I was the repo integrator and report author, and per-member feature ownership isn't separable
15CYouTube Desktop

A desktop GUI for grabbing YouTube videos and playlists without touching the terminal. A C++17 app with a wxWidgets window that takes a pasted URL and an output folder, then shells out to yt-dlp (with ffmpeg for format support) and streams its log output live in-app. Intentionally wraps the yt-dlp CLI rather than re-implementing YouTube extraction, with an optional full-playlist mode for playlist links.

C++ · wxWidgets · GUI · Desktop

16MDViewerMac

Native Markdown Viewer

A native macOS app for people who want a fast, clean local preview of Markdown files without opening a browser or editor. A SwiftUI shell renders Markdown to HTML in a WebKit view via the Ink parser, with Cmd+O file-open and drag-and-drop intake, a GitHub-like reading style, and shell scripts that build a .app bundle and package it as DMG/PKG.

Swift · SwiftUI · macOS · WebKit · Desktop

  • Measured:Downloadable DMG build, ad-hoc signed for local use and not notarized

Experience

9 roles

Apr 2024 – Present

Remote

Machine Learning Engineer · Watermark Inc.

Led development of QuillParse, Watermark's AI-powered document parsing and data-extraction product.

  • Built a document preprocessing pipeline that extracts structured data from unstructured text, improving model performance by 30%
  • Trained and evaluated successive model versions, reaching a 25% gain in data-extraction accuracy over the baseline
  • Served the trained model from a production API for real-time document parsing by enterprise clients

Aug 2023 – Apr 2024

Remote

Software Engineer · Watermark Inc.

Web development and internal tooling for an AI-driven document parsing startup.

  • Maintained the main company website and shipped new customer-facing features
  • Built internal tools the research team used to organize and search historical documents
  • Annotated training data and evaluated model performance for the early AI product

Apr 2024 – Present

Remote

Software & Machine Learning Engineer · Freelance

Evenings & weekends, alongside my full-time ML role at Watermark.

Contract ML and product engineering across retail platforms, EdTech recommender systems, and production ML tooling.

Jan 2024 – Apr 2024

Remote

Contract Software Engineer · Narrative.ai

Back-end and front-end contract work on a real-time logistics platform: ingesting carrier events, tracking shipment state, and surfacing live status in a production operations dashboard.

  • Built back-end services for real-time shipment tracking, including status ingestion, state management, and carrier data integration
  • Maintained production databases, owning schema design and query optimization for high-volume logistics data
  • Built front-end components for the operations dashboard that surface live shipment status

May 2022 – Aug 2023

Charlotte, NC

Graduate Research Assistant · University of North Carolina at Charlotte

Research on second-order optimization and continual reinforcement learning. I built reproducible experiment frameworks and migrated legacy MATLAB pipelines to Python.

  • Built a research framework to evaluate second-order optimization algorithms
  • Implemented and experimentally tested replay buffer designs for continual reinforcement learning
  • Converted several legacy MATLAB codebases to Python so other researchers could maintain and extend them

Jan 2022 – May 2022

Remote

Machine Learning Engineering Intern · Hexagon Solutions

ML engineering for cybersecurity products including network log analysis, vulnerability visualization, and feature work on a unified security posture dashboard.

  • Scripted network log analysis tools to provide feedback for reinforcement learning agents
  • Performed data analysis and visualization to identify and mitigate security vulnerabilities
  • Added features to a web application that gives clients a unified view of their security posture

Aug 2021 – May 2022

Saint George, UT

Undergraduate Research Assistant · Utah Tech University

Contributed to university-wide scheduling systems and led security research on ML-assisted side-channel analysis.

  • Contributed to implementation of university-wide course scheduling and classroom placement system
  • Led a data-analysis project to find optimal course-enrollment sequences for students
  • Led security projects applying machine learning to side-channel attacks

Education

9 graduate courses

2022 – 2023

M.S. Computer Science · University of North Carolina at Charlotte

  • 4.0 GPA · Phi Kappa Phi Honor Society
  • Graduate Certificate in Applied Artificial Intelligence
  • Graduate coursework in machine learning, digital forensics, databases, and algorithms
  • Graduate research assistant in optimization and reinforcement learning

Graduate coursework

Full course dossier

Contact

Interested in collaborating, hiring, or discussing ML, systems, or product work. Open to contract & full-time · Remote (US).