~/abhishek.sh
AVAILABLE FOR REMOTE ROLES

Abhishek Sharma

Senior Backend Engineer/Ruby on Rails & Elixir/Phoenix

I build and run the backend systems that keep US home-care agencies paid and Medicaid-compliant — multi-tenant healthcare SaaS processing ~270K visits/day across 27 agencies in 8 states. 10+ years backend, 5+ years fully remote on US time zones. Rails and Elixir/Phoenix daily, AI-augmented with Claude Code and Cursor.

270Kvisits/day processed across 27 agencies
10+years shipping backend systems
43K+downloads across 6 published Ruby gems
5years of annual HIPAA/PHI training

grep -i "incident" postmortems/

Three problems I'm glad existed

Diagnosis is the job. These are the three I'd tell you about in an interview.

postmortem_01.md

Every alternate Monday — payroll day — the platform crashed under biweekly visit-export load. Predictable, recurring, business-critical.

I led a layered investigation that resolved five stacked bottlenecks, each one exposing the next: staging and production sharing node pools; every tenant's export job firing at the same instant (staggered them — smoothed load and cut cost); pods too under-threaded to ever cross the HPA's 80% CPU threshold, so autoscaling silently never fired; DB connections exhausted (recalculated as max pods × workers × threads); and residual slowness from an upstream VM-hosted service with a too-narrow Passenger pool.

No recurrence since. Resource utilization healthy, exports fast, payroll Mondays boring.

postmortem_02.md

During our GitHub → GitHub Enterprise migration, I spotted a silent failure during a routine deploy: one shared access token, used by every microservice to fetch client configuration, had been invalidated.

The trap: running servers looked perfectly healthy — they were serving cached config. Any restart would re-fetch with the dead token and take the site down. Staging and production sites began failing one by one across tenants.

There was no shortcut — every microservice needed redeployment with the new token. I took ownership with my engineering manager, coordinated fixes across every team and server, and supported the rollout in real time. All tenants stable within one day. Early identification was the difference between a one-day fix and an outage nobody could have recovered quickly.

postmortem_03.md

Loading Dock's twice-weekly production batch was taking 14–16 hours to import a week of visit history — agencies waited nearly a full day on payroll day.

I traced it to redundant inter-service lookups — the same Employee and Consumer records re-fetched on every visit, dozens of times per pair per import. Fix: a job-scoped Redis cache keyed on the import file, cleared on completion.

The judgment call: I chose deduplication over throwing workers at it deliberately — parallel processing risked duplicate timesheets with downstream payroll impact. Correctness constrained the solution space.

before · per batch run 14–16 hrs
after · per batch run 2–3 hrs
≈ 80% reduction · direct client appreciation

tail -f career.log

Experience

ls -la services/

Projects

Production systems, sorted by lines of code added. All built and run for HHAeXchange-affiliated healthcare SaaS platforms.

Self Direction Portal

active

Timesheets module end-to-end (6,993+ lines), no local persistence — sourced live through upstream APIs. Driving API contract unification across three backend versions.

Rails 7GrapeHotwirePostgreSQLRedisAWS ECS
13,446 lines · 25 commitsAWS ECS

eTimesheets Plus

maintained

Multi-state EVV compliance platform: 27 agencies, ~10K visits/day per tenant, 8 states. Shifts API v2 with batch entry and exception codes — 4,500+ line mobile-integration feature.

RailsGrapePostGISRedisResque
9,400+ lines · 56 commitsKubernetes

Loading Dock

active

Healthcare EVV integration platform. Job-scoped Redis cache cut the twice-weekly ingestion batch from 14–16 hrs to 2–3 hrs. External API layer for third-party clients.

RailsGrapePostgreSQLRedisSentry
5,311 lines · 33 commitsAWS

Evvie

maintained

Cache V2 API powering offline mobile support — parallel async fetch across modules, stitched into one fast response. Multistate financial-entry compliance support.

ElixirPhoenixEctoAbsinthe
~3,300 lines · 25 commitsKubernetes

FMS Gateway

maintained

GraphQL API for ShiftField queries with full VCR test coverage. Diagnosed and fixed a production HTTP bottleneck by tuning Finch connection pooling.

ElixirPhoenixAbsintheObanFinch
2,588 lines · 45 commitsKubernetes / GCR

KubeStat Umbrella

maintained

In-house Elixir deployment tool bridging DevOps and engineering. Live Phoenix LiveView monitoring; removed ~1,400 lines of redundant node-affinity config.

ElixirLiveViewKazanGKEEKS
1,242 lines · 28 commitsKubernetes

Paperworkr

maintained

HR onboarding platform. I-9 form end-to-end with multi-preparer support and a scalable, configurable per-client e-signature template system.

RailsMySQLHelloSignPundit
~940 lines · 17 commitsGCP

Ivrie

active

Multi-tenant IVR visit-collection platform ingesting via Amazon SQS. Entire UI runs on real-time Phoenix LiveView, with tenant-level configuration isolation.

ElixirLiveViewEctoSQS
actively maintainedKubernetes

Personal · Open source · AI

6 Ruby gems · 43K+ downloads

on RubyGems

Google Maps/Places/Search API wrappers, a static map image generator, and cross-environment DB cloning rake tasks. Deprecated gems maintained with proper migration notices — open source, responsibly.

RubyGoogle APIsRails
43,102 downloads (Jul 2026)rubygems ↗

Obsidian RAG

local-only

Fully local retrieval-augmented pipeline over a personal Obsidian vault — no cloud APIs, no data leaving the machine. Three-tier chunking, ChromaDB retrieval, Typer CLI.

Python 3.12OllamaChromaDBTyper
11 tests · CI on every pushgithub ↗

ChatGPT-CLI

on PyPI

Keyboard-driven terminal chat client for OpenAI models. Streaming token output, mid-stream cancellation, per-conversation system prompts, model switching.

Python 3.11TextualOpenAI API
pip install chatgpt-cligithub ↗

notes-nvim

open source

A project-scoped note-taking system for Neovim — fuzzy search, daily notes, and Telescope integration. Written to fix my own workflow, published for anyone's.

LuaNeovimTelescope
Neovim pluginopen source

Auto time tracker

daily use

Shell-based automatic time tracking on TimeWarrior — starts and stops based on tmux session, git branch, and directory, with ticket caching and per-terminal isolation.

ShellTimeWarriortmux
personal toolingruns locally

cat workflow.md

How I work

AI-augmented, not AI-dependent

Claude Code and Cursor are in my daily loop, with agent autonomy boundaries explicitly configured — no auto-commit, no auto-push. The agent proposes; I review and own what ships.

Terminal-first

Neovim, tmux, Lazygit, and tooling I've written for myself — a published Neovim plugin, an automatic time tracker, a local RAG pipeline over my own notes. If a workflow annoys me twice, I build something.

ls posts/ --sort=relevance

Writing

cat stack.yml

Stack

stack.yml
languages:RubyElixirJavaScriptPython 3.11+
frameworks:RailsPhoenix / LiveViewHotwire (Turbo + Stimulus)
data:PostgreSQLMySQLRedis
apis_jobs:GraphQL (Absinthe)REST / GrapeSidekiqObanResqueKafka (producer/consumer)SQS
cloud_devops:AWS (ECS, Lambda, S3)GCPKubernetesDocker
observability:DatadogSentryScout
compliance:HIPAA & PHI training, 5 consecutive yearsEVV / Medicaid domainPHI-aware engineering daily
ai_augmented:Claude CodeCursorRAG / embeddingsChromaDBOllama

cat contact.txt

Contact

contact.txt

$status --current

Open to remote roles · US-timezone overlap

$contact --email

email4abhisheksharma@gmail.com

$contact --links

linkedin.com/in/abhisheksharma91 · github.com/abhsss96

$