def ** __ @ # := f"" <T> :: => ... { } != ?? <> ?. ??= get; null fun -> ?: |> !! it #! $@ | && >> ${} $( ) 2>&1

>_ hello, world

Hugh O'Neill

Full-Stack Software Engineer

Building across the stack, from databases to frontends and everything in between.

open to full-stack & software engineering roles · remote / NJ / NYC

scroll

about me

Hugh O'Neill

Full-stack software engineer with a B.S. in Computer Engineering from the University of Pittsburgh and an AWS Certified Cloud Practitioner certification. Experienced in building and scaling production applications across modern web and desktop stacks, with a strong foundation in data structures, algorithms, and software design.

Most recently the first engineering hire at Avalon Tax, an AI-focused tax-preparation startup, where I delivered rapid platform enhancements across Electron/React frontends and Python backend services, leveraging AI-assisted workflows to accelerate development. Previously at M*Modal (3M HIS), I helped build a healthcare web application that transformed NLP-derived clinical data into actionable insights, contributing across the full stack within agile teams. Earlier, four Co-Op rotations at Ansys where I automated testing workflows and improved internal tooling.

Strongest in full-stack web development, scripting & automation, and database design. Currently seeking opportunities where I can contribute quickly and help teams deliver impactful products.

experience

projects

Crystal Battle

Competitive Pokemon battling agent for Gen 9 OU and Monotype. Instead of trusting one guess about the opponent's partly-hidden team, each turn it samples several plausible completions from Smogon usage statistics, runs one Monte Carlo Tree Search per sampled world over a Rust battle engine, and merges the results; observational set inference (speed floors, damage brackets) sharpens those beliefs as the battle reveals evidence. Team preview and forced switches are searched, not picked by heuristic. A translation layer validated on 4,917/4,917 real ladder turns feeds live play on Pokemon Showdown, where every change is A/B benchmarked head-to-head against foul-play, winner of the NeurIPS 2025 PokeAgent Challenge. Also in the repo: trained lead-picker and move-prediction nets, an exhaustive endgame solver, and honestly-documented negative results from the self-play distillation arc.

Rust Python PyTorch ONNX MCTS

Crystal Broadcast

Live AI commentary for the battles above — built on the inversion that most AI-VTuber projects get backwards. Rather than putting a language model in the driver's seat, the strong non-LLM agent plays and the LLM is a grounded observer. A beat director turns the raw battle protocol into typed events and decides which are worth saying at all (pure logic: no I/O, no wall clock, so it is replay-auditable and unit-testable); a two-persona caster speaks them as an analyst who cites and a gremlin who does not; and a presentation-clock scheduler holds each line until the viewer actually sees the moment, because the engine finishes a turn seconds before the animation does. Every factual claim is checked against the protocol, mechanics are retrieved from a citation-backed RAG, and a gold set of graded scenarios scores the commentary the way an eval suite scores a model — which is how fabricated crits, invented abilities and mis-attributed agency get caught.

Python WebSockets Local LLM RAG Evals

job-scan

Daily, resume-matched job scanner that runs itself on a timer and costs nothing to operate. Scrapes fresh postings from company ATS boards (Greenhouse, Lever, Ashby) and remote aggregators (HN "Who is hiring?", RemoteOK), drops obvious misses with cheap title/location pre-filters, then scores each survivor 0–100 against my resume with a local LLM. The model rates four independent dimensions — the final number is computed deterministically in Python, so the ranking is transparent and tunable rather than a black-box vibe. Dedupes against SQLite and delivers a ranked Markdown digest plus a Flask dashboard with application-status tracking. Runs unattended via systemd timers, no API keys.

Python Flask Ollama / Gemma SQLite systemd

grounded-rag

Citation-grounded question answering, grown into a four-corpus Pokemon expert: Smogon usage statistics, PokeAPI data, Bulbapedia prose, and Smogon strategy analyses (~25k chunks, all local). Questions route through hybrid retrieval (vector + IDF-selected keyword search, reciprocal rank fusion) with a cross-encoder reranker that also scores the "I don't know" refusal gate, or to deterministic tools backed by the poke-engine battle engine: type matchups with conditional immunities, true damage calcs with battle state (boosts, items, weather, Tera, real Smogon sets), and tiered "what would it take to OHKO, or to survive?" escalation searches. Answers cross-reference themselves (a damage calc into Bronzong warns that Levitate appears on 95% of its observed sets) and cite full provenance, down to sources the answer itself introduces. Built eval-first: 108 gold questions at 100% retrieval, faithfulness, and refusal, cross-checked against 237 frozen paraphrases with zero ungrounded entity mentions across every generated answer, so each corpus-growth regression is caught by the harness and pinned by its own gold question.

Python FastAPI React / TS Postgres + pgvector Ollama Cross-encoder Docker / k8s

Unified Theme Engine

System that themes 32 applications from shared JSON color palettes. Generates configs for Waybar, Kitty, Rofi, Neovim, Firefox, and 25+ more via envsubst templating with contrast-aware color generation and per-theme overrides.

Bash Shell JSONC

Kitty-Run Redux

Run-and-gun platformer rebuilt from scratch in Godot. Procedurally generated terrain, pixel-art sprites, parallax backgrounds, and a CRT post-processing overlay. Playable in the browser via itch.io.

GDScript Godot 4

lyrics

Terminal lyrics viewer that syncs with any MPRIS media player. Fetches time-synced lyrics from lrclib, displays a real-time scrolling view with gradient progress bar, and pulls song annotations from Genius in a dual-pane curses UI.

Python Curses MPRIS Genius API
lyrics screenshot
banana screenshot

banana

3D rotating banana in the terminal. Yes, it's the donut script. No, I'm not sorry.

Python 3D Math
gradfill demo

gradfill

Terminal screensaver that fills the screen with animated gradient patterns — diagonal, spiral, wave, burst, and more.

Bash
pacpipes screenshot

pacpipes

Pac-Man terminal screensaver — eats pellets through lanes with a ghost in pursuit, leaving colored trails.

Bash
leetcode-srs terminal screenshot showing cards and problems due today

leetcode-srs

Spaced-repetition trainer for coding interviews. SM-2 scheduling over data-structure, pattern-decision, and problem cards; grades "confidently wrong" as worse than blanking.

Python SQLite SM-2

skills

Languages

  • Python
  • Java
  • TypeScript / JavaScript
  • Kotlin
  • Rust
  • C
  • SQL

Frontend

  • Angular
  • React
  • HTML & CSS
  • Electron
  • Vite

Backend & Data

  • PostgreSQL / NoSQL
  • Node.js
  • Spring Boot
  • Flask
  • Supabase
  • Docker

Tools & Practices

  • Git / Hg / SVN
  • AWS (Certified)
  • Shell Scripting / Bash
  • E2E & Unit Testing
  • Agile / Scrum
  • AI-Assisted Development

AI / ML

  • PyTorch / ONNX
  • Reinforcement Learning
  • MCTS / Tree Search
  • Local LLMs (Ollama / Gemma)
  • OpenAI API
  • Azure AI
  • Claude & Codex

contact