Skip to content
Anthony Cavero

projects

Selected work

Case studies — robot vision on a Jetson, a GPT written layer by layer, and web apps that shipped. Each one covers the problem, my approach, and where it landed.

robotics · computer vision

FRC Robot Vision

Camera frames in, robot field pose out — on a Jetson, at competition speed.

problem
An FRC robot needs to know exactly where it is on the field, which means detecting AprilTags and solving for pose in real time on a power-constrained Jetson — with latency low enough to steer by.
approach
Built ROSVision, a ROS 2 package for the Jetson Orin Nano: CUDA-accelerated tag detection via NVIDIA Isaac ROS, optional solvePnP refinement, multi-tag SQPNP fusion into a single field pose, and publishing to NetworkTables 4 in PhotonVision-compatible conventions — plus a competition-day calibration dashboard that persists settings across reboots. Alongside it: a portable CPU-only C++ AprilTag pipeline and Isaac Sim Python scripts for generating synthetic 2D/6D pose training data.
result
An end-to-end pipeline from camera frame to robot pose in the field frame, streamed live to the roboRIO — with an offline stub mode so the whole pipeline runs without robot hardware.

ml research · interpretability

Probe Reliability Benchmark

When is a linear probe real evidence? Geometric and spectral diagnostics across six LLM families.

problem
Interpretability work leans on linear probes: train a classifier on a model's hidden states, get high accuracy, conclude the concept is represented. But probes can score well for reasons that have nothing to do with what the model actually uses — accuracy alone doesn't tell you when to trust them.
approach
Built a seeded benchmark that trains 20 probes per layer across six open model families — Pythia, BERT, GPT-2, Qwen, Llama 3.2, Gemma 2 — and three linguistic tasks (subject–verb agreement, gender agreement, SST-2), then scores each probe two ways: spectral diagnostics measuring how its weights align with the top eigenvectors of its own training-loss Hessian, and causal interventions checking that removing the causal concept breaks the probe while a merely correlated one survives. A learnability gate refuses to launch runs on representations that aren't decodable, and every run writes a manifest with the git commit and data hashes.
result
A reproducible, resume-safe research pipeline — smoke tests, per-model configs, aggregated results tables, 5,400 probe records at full scale — that runs on a local GPU or Lambda Cloud.
  • Python
  • PyTorch
  • Transformers
  • PyHessian
  • spaCy

machine learning

GPT from Scratch

Every layer of a transformer, written by hand.

problem
It's easy to fine-tune a transformer without ever understanding one. The goal: implement a GPT where no framework does the thinking for me.
approach
Worked through the NeetCode ML course from gradient descent up, then assembled every submission into one working repo — hand-written backprop and MLP primitives, embeddings, positional encoding, BPE tokenization, self- and multi-head attention, layer/RMS/batch normalization, a KV-cache, grouped-query attention, and a full training loop with text generation.
result
A trainable GPT where every file is code I wrote and submitted for the course — run train.py, then generate.py.

full-stack web

BlueScout

Offline-first match scouting and strategy for FRC Team 1086.

problem
FRC scouting happens in arenas with bad or no Wi-Fi, and the data only matters if it reaches the strategy table before alliance selection.
approach
Built a self-hostable Next.js platform: role-based accounts with lead approval, lead-assigned match scouting with a live coverage grid, offline capture to IndexedDB with animated multi-frame QR hand-off when there's no network at all, one-click sync from The Blue Alliance and Statbotics, a strategy dashboard blending efficiency and reliability, and real-time collaborative picklists over Socket.IO.
result
Covers the team's full scouting workflow for the 2026 REBUILT season, with all season-specific scoring isolated to a single config file for reuse next year.
  • Next.js
  • TypeScript
  • PostgreSQL
  • Prisma
  • Socket.IO
  • Tailwind CSS

applied ai

ContractorAI

A construction company's private AI workspace, built on the Claude API.

problem
A construction company's estimating, invoices, RFIs, and daily reports live in scattered documents — and a general-purpose chatbot knows nothing about the company's projects, templates, or trades.
approach
Built a private, construction-specialized assistant: streaming chat grounded in per-project context and files, invoice extraction with an approve/deny review trail, plan reading and door/framing takeoffs, generators for scopes of work, RFIs, change orders, and daily reports, Google Workspace tools gated behind one-click approvals, and scheduled automations that run unattended but can never send email.
result
Shipped through six phases: the web app plus Capacitor mobile and Electron desktop shells, role-based accounts, and an admin dashboard tracking per-user AI spend by feature. In use by roughly a dozen internal employees, with 10+ recurring tasks automated.
  • Next.js
  • TypeScript
  • Claude API
  • PostgreSQL
  • Drizzle ORM

web

America & the World

An AP U.S. History argument, shipped as a website instead of a paper.

problem
Answer an APUSH research question — is the United States a better version of itself in 1945 than it was in 1898? — in a form a whole class can actually explore.
approach
Designed and built the site with two classmates using the Next.js App Router and Tailwind CSS, then deployed it to Vercel with a production URL.
result
Live in production at america-and-world.vercel.app — and earned a 95% on the project.

more on GitHub →