Jarod Ferkin

data science · ucf · class of 2027

JarodFerkin

I build machine learning that works where it's used.

I train models and shrink them with reverse training, a method I developed: cut, measure the one job that matters, regrow, repeat. I build the software around them with the people who use it, from a horse barn to small businesses that do their own marketing. I learn the job before I write the code.

Roles
ML Engineer · Forward Deployed Engineer · Applied AI Engineer
Available
Internships 2027 · New grad Spring 2027
Based
Orlando, FL · will relocate · clearance-eligible
Works in
  • LanguagesPython · SQL · TypeScript
  • Machine learningPyTorch · scikit-learn · pandas · NumPy
  • Model deploymentONNX Runtime · quantization · pruning · in-browser inference
  • LLM appsClaude API · document and photo extraction · human review queues
  • Data and backendFastAPI · DuckDB · PocketBase · REST APIs · webhooks
  • ShippingDocker · Fly.io · GitHub Actions · React · pytest

a classifier learning where the birds are, live · click or tap to add a point

client work

Built with the people who use it

delivery 01 · a working horse barn · 2026

Barn Manager

A web app that runs a horse barn, built with the trainer who uses it every day.

Who it's for

A trainer who boards, trains and shows horses for their owners, and the owners themselves.

What they do with it

  • Open it and see what needs attention today: care that's overdue, shows in the next three weeks, mares on foaling watch.
  • Forward a vet or farrier email, or photograph an invoice. Claude reads it, matches each line to the right horse, and queues the records for a one-tap approve. Nothing is filed without a person saying yes.
  • Give every owner their own page: their horses, what's coming up, their membership cards, behind their own sign-in. Or share one horse with a vet or a buyer through a private link.
  • Get reminders by email and text, and keep working on barn Wi-Fi: pages already opened still open, and changes made while the connection drops are sent when it comes back.

How I built it

Scoped in a structured design session before any code. One barn today, built multi-barn from the start so it can sell to the next one. PocketBase, a single Go binary, holds the data, sign-ins and files; React in front; a Tauri shell makes it a desktop app on Mac and Windows.

Role
Solo engineer, from scoping to deployment
Status
Deployed on Fly.io, in development with the client

ReactTypeScriptPocketBaseTauriClaudeTwilioFly.io

Open the demo barn

The Barn Manager dashboard: counts of overdue care, care due in 30 days, shows in 3 weeks and records pending review, then a list of care due per horse, shows in the next three weeks, foaling watch and membership renewals.
The dashboard of the public demo barn: overdue care first, then what's coming due, shows, and foaling watch.

delivery 02 · marketing tools · 2026 · first client confidential

Groundwork

One weekly answer to "what is our marketing actually getting us?" for small businesses that do their own marketing.

Small businesses run their own ads, answer their own messages, and trade free services for posts from local creators. Almost none of them can say which of it brings in customers who show up and come back. The ad platforms report clicks, the booking system knows who walked in, and nothing connects the two. Groundwork connects them.

What it replaces
BeforeWith Groundwork
Judging ads by clicks and likesWhat each channel and campaign costs per new customer who actually showed up
Taking "how did you hear about us?" at face valueEach customer matched to the promo code, tracked link, lead form or ad click that brought them in, with a flag when their answer disagrees
Ads that optimize for clicksBooked visits sent back to Meta, so its ads can optimize for people who walk in
A wall of numbers nobody readsA Monday report and a phone-friendly dashboard that say what to stop, watch or keep, and only once there is enough data to say it

Why it holds up

  • It starts from what a business already has. Booking exports, ad spend and lead lists plug in through a settings file, so onboarding the next business is a folder of configuration, not new code.
  • Privacy is enforced by the code. Health details and minors can never reach an ad platform, message text is never stored, and nothing is sent live until a go-live checklist passes.
  • It helps plan, not just measure. Local events, weather, holidays and competitor changes become a weekly brief of dated campaign ideas.
  • It is tested like a product. 861 automated tests, including one that must reproduce a known set of numbers exactly, and two adversarial reviews with every confirmed defect fixed.

How I built it

A Python data platform: pandas and pydantic clean and type each export, DuckDB holds the warehouse and answers SQL, and a registry of modules each computes one set of numbers. A FastAPI service handles signed webhooks and tracked links, and a Streamlit dashboard serves the staff. It reads from eight sources, including the Meta Marketing API, Google Sheets and CallRail, and sends conversions back through Meta's Conversions API, with Google and TikTok formats behind the same gate.

Role
Founder and engineer: pitched it, designed it, built it
Status
Version 1 built and tested end to end on synthetic data. Sends to ad platforms stay in dry run until a client's real data and the go-live checklist are in.

PythonSQLpandasDuckDBFastAPIStreamlitMeta Conversions APIDocker

The Groundwork staff dashboard on demo data. A banner reads: demo data, made-up numbers, not real results. The heading says one thing needs a decision this week, with a stop flag on the first-to-repeat-job rate, then tiles for cost per booked job, new customers, repeat job rate and customers with a known source, and an Update numbers button.
The home screen staff see: one decision for the week, not a wall of charts. Captured from the built-in demo client, so every number is generated, and the software says so itself.

my own projects

Things I built because I wanted them to exist

flight 03 · 2026 · live at herodthegreater.github.io/pigeon

Pigeon

A website where you shrink a real image model with your own hands and watch what it costs. Underneath it is a method I came up with and call reverse training.

Pigeon is a small image model with one job: is there a bird in this photo, and where. On the site you quantize it, prune it and palettize it in your browser, and after every change it scores itself again on 500 real photos and reports its accuracy, how often its heatmap points at the actual bird, and its true size in bytes. The mascot is the scoreboard. Keep the model accurate and it slims from a rock pigeon to a dove, a swift, a hummingbird. Push too far and it starves, and if you break it before it got any lighter you get a dodo.

The pigeon flying around this page is that mascot. The demo beside this text uses the same birds, the same rule, on a toy network that trains in your browser, so you can feel the two findings the project is built on: pruning is a cliff you recover from by retraining, and quantizing is a slope that gets steep fast.

the method

Reverse training

Training grows a model up from noise until a skill appears. Reverse training runs it backwards: start from a model that already works, and take away everything the one job you want doesn't need.

  1. Cut. Drop precision, or remove whole channels.
  2. Measure the real accuracy of the one task you are keeping, never a proxy.
  3. Regrow. Fine-tune the wounded model so what survives re-specializes around the task.
  4. Repeat until the task is about to break.

The finding that shaped it: precision has slack, structure does not. Rounding weights to fewer bits degrades gracefully. Removing channels is a cliff, and regrowing is the other half of every cut.

The cliff
A one-shot cut of 5% of a YOLOv8n bird detector's channels, with no regrowth: bird mAP@50 falls from 0.4284 to 0.000.
Small cuts, regrown
Three cuts of about 7% each, 15 epochs of regrowth after every one: 0.2874, two thirds of native, with 31% fewer parameters. One 20% cut followed by 40 epochs: 0.0706.
Where the levels sit
At 4 bits, integer steps with one scale per channel keep 16% of native; FP4 levels, which crowd near zero where the weights are, keep 79% at the same bit count. Protect the three earliest stages at 8 bits and it is 92%.
Regrow with the quantizer in the loop
A 3.16-bit recipe that scored 0.003 after rounding came back to 70% of native in three CPU epochs of quantization-aware regrowth.

YOLOv8n, bird mAP@50. The prune rows are on a 125-image COCO bird set; the 4-bit rows are on a stand-in bird set and are relative. From the cockpit's notes in the Pigeon repo, which also say the regrown numbers lean optimistic because the eval set doubles as the fine-tuning validation split.

What's on the site

  • The Coop: the sandbox. Pick a precision, a pruning pattern or a color palette for the weights, stack them, and watch the bird and a chart of every setting you have tried. A second cage holds a YOLOv8n detector that draws a box around every bird it finds, with its own cuts: one precision for all its weights, and a channel cut per stage. Every bird you hatch goes on your life list.
  • The Field Guide: 43 compression methods, each with a write-up and the real code. 31 run in your browser on a toy network, 3 run in the reverse-training cockpit on your own machine, and 9 that need text, tokens or a KV cache are explained as reference.
  • Flight School: today a reading map of 12 chapters in order, plus 10 coding lessons where you write the piece of the algorithm yourself in plain numpy, from softmax to GPTQ's error-compensation loop, and check it against tests in your browser.
  • Results: 28 experiments on the lab's toy problem, each repeated with two or three seeds, in a miniature world where the best possible classifier is known exactly, so every method's cost is measured against a true ceiling.

Measured on the real Pigeon

Specializing
MobileNetV3-Small, 10.17 MB as a 1000-class model. Dropping the classifier it no longer needs removes 63% of its parameters; accuracy on birds rises 0.8 points. The size is the win.
Full precision
3.69 MB · 94.0% accuracy · 98.0% pointing
Best recipe on record
737 KB, 5× smaller · 94.4% accuracy. 8-bit with one scale per channel, and the squeeze-and-excitation layers (half the weights) at 4 bits.
The trap
8-bit with one scale per tensor collapses to 50%. One scale per channel keeps 94.8%.
Where it is fragile
4-bit on the squeeze-and-excitation layers, half the weights, costs nothing. 4-bit on the depthwise convolutions, 7% of the weights, drops it to 58%.
The ceiling so far
No recipe on record stays healthy at 7× smaller, where the swallow starts. That likely takes retraining, which the Coop's tools never do.

Scored on 500 Open Images photos on an M4; the numbers come from the project's findings notes.

How I built it

PyTorch trains it and exports it to ONNX with BatchNorm folded and every weight tensor as a graph input, so the page holds the weights as typed arrays, edits them with the method you picked, and re-runs the model in ONNX Runtime Web inside a worker, with no re-export per slider move. The size shown is computed from the real encoding: bits, scales, zero points, codebooks and sparsity metadata. The detector cage runs on TensorFlow.js; the lab's numpy runs in the browser through Pyodide. Astro builds the site and GitHub Actions deploys it on every push.

PyTorchONNX Runtime WebAstroNumPyPyodideYOLOv8n

Open the Coop Visit the site

Reverse-train a toy network

cut · measure · regrow · 648 weights, trained in your browser just now

Rock Pigeon

Columba livia

Full weight. Nothing has come off yet.

Accuracy
…
Weights kept
…
Size
…

Training the toy network…

A small network, trained here on 300 points of a toy problem and scored on 300 more. Prune removes the smallest weights and Bits rounds the rest (the cut); the readouts are the measure; Regrow retrains with the pruned weights held at zero. That loop is reverse training, the method the real Pigeon is built on. The bird follows the pigeon site's rule: size decides the species, accuracy kept decides its health.

flight 04 · 2026 · personal infrastructure

Self-hosted backup

Photos and files from my phone to a server in my house, with nothing open to the internet.

I wanted my photos backed up automatically without handing them to a cloud provider, so I built the thing I would have paid for.

How it works

  1. The phone reaches the server through a WireGuard tunnel. No port on the house is open to the internet, so there is nothing to find.
  2. A native Android agent, written in Kotlin, does the uploading in the background, which a web app can't do reliably.
  3. A web app you can install like an app is how you browse from any device, with no app store in between.
Role
Solo, design through build
Status
Architecture designed before implementation. In personal use.

FastAPISQLiteWireGuardKotlinPWA

A phone sends a photo through a locked WireGuard tunnel to a server at home; the internet around the tunnel sees nothing. the open internet phone wireguard tunnel · encrypted end to end server at home no open ports
Nothing listens on the internet. The phone and the server only see each other inside the tunnel.

flight 05 · in progress

autoalgo

A Python library that helps you pick the right machine-learning algorithm for your data, then train it in a few lines.

Algorithms are scattered across libraries with different interfaces, and newcomers can't tell which one to reach for. autoalgo starts with an interactive decision tree that asks about your data and walks you to an algorithm. Then it puts that algorithm behind one pandas-style API: if you can work with a DataFrame, you can train the model, and as it runs it explains what the algorithm is doing and when it's the right choice.

Role
Author and maintainer
Status
In progress. Not published yet.

Pythonpandasscikit-learn

short hops

Smaller experiments

  1. model · scikit-learn

    Spotify hit prediction

    An ensemble model that predicts hit songs from audio features across 100K+ tracks.

  2. scraping · claude api

    AI-native vs. traditional scraping

    A modular Wikipedia scraper that puts Scrapy and BeautifulSoup next to Claude turning pages into structured JSON, to see where each one wins.

the pilot

About

Before I wrote code for clients, I spent five years running floors and teams. Most of the job was listening.

I'm a Data Science senior at UCF, graduating in Spring 2027. My work runs from ML engineering to full-stack apps to data pipelines, and I'm at my best when it's in front of a real user with a real deadline. The idea I keep coming back to is reverse training: start from a model that already works, cut it down to the one job, and regrow what the job needs.

At DriveShack Orlando I led front-of-house, ran training programs, and translated between technical and non-technical staff on six-figure events, on a turnaround team that grew revenue 20%+. I'm also a two-time state impromptu debate champion, which helps when a client asks the question nobody prepared for.

  1. 2027B.S. Data Science, UCFExpected Spring 2027
  2. 2026Client engineeringBarn Manager · Marketing Tools
  3. PriorFront-of-House Team Lead, DriveShackTraining, events, turnaround team
  4. PriorA.A., Valencia CollegeOrlando, FL

home · the loft

Hiring for 2027? Let's talk.

jtferkin@gmail.com

© 2026 Jarod FerkinWinter Garden, FL