Skip to content
BackNov 7
Michael W.
Upwork badge

Michael W.

Ruby on Rails Machine Learning Engineer | Offline, Voice, LLM

Most AI consultants want to rewrite your app in Python. I don't, because I have specialized in both. I've spent a decade shipping production Rails and the last two years building ML systems. The hard part of adding AI to a real product usually isn't the model - it's retrieval, background jobs, evaluation, and the fact that your data already lives in Postgres. Rails stays the system of record. Torch-enabled inference runs as its own service behind a clean adapter, so you can swap or scale it without touching your domain logic. Knowing where that boundary belongs in a robust, existing system is most of the job. Two things worth knowing before you hire me. The first is my track record here: 3,200+ hours, 100% job success, Top Rated Plus, and a decade of production web applications behind it. That's the evidence that I finish what I start. The second is in my portfolio. I built a real-time conversational voice agent that runs entirely offline on hardware at home, reachable from a phone app - no cloud, no API keys, no data leaving the house. Solo: architecture, ML, and evaluation. Every headline number in that write-up has a measurement under it, because that's the only way to know whether a system like this actually works. That's the evidence of what I can build. What that looks like on a Rails project - Embeddings and vector search in the database you already have: pgvector, hybrid retrieval, no second datastore unless you actually need one - Ingestion and consolidation pipelines as real background jobs: Sidekiq/ActiveJob, idempotent, observable, restartable - LLM features behind service objects and well-defined interfaces, so they're testable and swappable instead of a vendor SDK sprayed through your controllers - Python inference services with clean adapter boundaries: PyTorch and llama.cpp workloads that your Rails app talks to over a defined contract, not a tangle - Evaluation harnesses that live in your test suite, so "did the AI feature get worse" is a CI question and not a vibe, as well as knowledge of how to reliably test a non-deterministic model - Self-hosted and offline inference when data can't leave your infrastructure Depth behind it - Long-term memory subsystem for the offline voice agent: graph memory substrate, nightly consolidation pipeline, adversarial entity deduplication, retrieval head - Local LLM deployment on constrained hardware: quantized 35B MoE inference (fits under 16GB VRAM), RWKV, Whisper STT, containerized services over a message bus - Production systems in Ruby on Rails, Python, React, Docker, and Postgres - Custom data pipelines and integrations across messy, undocumented APIs (including Shopify) - Meritorious Winner, COMAP ICM — stochastic simulation of kidney donor networks I'm especially strong at taking loosely defined ideas and turning them into clear, reliable systems with visible progress early in the project. I work best with clients who value clear scope, early deliverables, and honest communication. Bonus points if your project description includes the phrase "we thought this would be simpler." Stack Ruby on Rails, Ruby, Python, SQL, JavaScript ML / LLM: llama.cpp, Qwen, RWKV, Whisper, embeddings, vector search, RAG, knowledge graphs, PyTorch, OpenAI APIs Infrastructure: Postgres, pgvector, Sidekiq, Docker, NATS, FastAPI, SQLite, CUDA Also: React, C/C++, Java, PHP, Matlab, R, embedded systems, legacy platforms

🇺🇸Pittsfield, United States$125/hr100% JSS4.97 (26)Since Jun 2017

Earnings and projects

MRR
$1.8k

Last 6 months ÷ 6

World#25,778 / 412k
🇺🇸Country#5,385 / 62.1k
Revenue, last 30 days
$200

Last 6 months: $11k

World#81,881 / 412k
🇺🇸Country#10,372 / 62.1k
Total earnings
$209k

Billed in all: $213k

World#14,275 / 412k
🇺🇸Country#3,517 / 62.1k
Per project
$5.2k

$5.4k in the last 6 months

World#33,225 / 412k
🇺🇸Country#5,498 / 62.1k
Projects, last 6 months
2
50% fixed50% hourly
World#88,918 / 412k
🇺🇸Country#11,762 / 62.1k
Projects in all
40

Across 44 contracts

30% fixed70% hourly
World#75,668 / 412k
🇺🇸Country#11,445 / 62.1k

Earnings, last 30 days

$213k+$200 earned in the last 30 daysBilled in all, before Upwork's fee · drag across the chart to see what was earned in any stretch
$212.6k$212.7k$212.8k$212.9kOct 8Oct 23Nov 7

Skill rankings: Top 4% in Data Scraping

Ranked by MRR among everyone on Upwork with the skill.

  1. #4Applied Mathematics56 freelancers · 🇺🇸 #1Top 7%
  2. #8Ruby on Rails Stack93 freelancers · 🇺🇸 #2Top 9%
  3. #14Mathematical Modeling224 freelancers · 🇺🇸 #3Top 6%
  4. #14Distributed Computing107 freelancers · 🇺🇸 #2Top 13%
  5. #20Scripts & Utilities236 freelancers · 🇺🇸 #5Top 8%
  6. #29Systems Engineering226 freelancers · 🇺🇸 #11Top 13%
  7. #39AI Speech-to-Text336 freelancers · 🇺🇸 #2Top 12%
  8. #41Robotics547 freelancers · 🇺🇸 #14Top 7%