Skip to content
View Kayvan-Zahiri's full-sized avatar

Highlights

  • Pro

Block or report Kayvan-Zahiri

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
Kayvan-Zahiri/README.md

Hi, I'm Kayvan 👋

Speech and ML engineer in San Francisco. M.S. Data Science & AI, University of San Francisco, 2026. Open to full-time roles in speech, ML, or infrastructure.

Most of my recent work lives in other people's repositories: 33 pull requests merged into third-party production projects, 67 more in review.

🌐 Portfolio · 💼 LinkedIn · 📫 kzahiri@dons.usfca.edu


Open source

Merged

  • OpenAI Whisper #2836 — the English text normalizer rewrote the 1 inside 3.1 and 1%, silently deleting the percent sign. It ran on both sides of every WER comparison, so the scores never moved and nothing flagged it. Merged by a Whisper paper author.
  • Meta FAISSindex_factory round-trips dropped the storage index for HNSW, so rebuilding from the returned string gave you a different index.
  • uv #21144 and #21146 — both merged by Astral's co-founder.
  • Hugging Face Transformers #47888 — the ASR pipeline destroyed stereo audio in channels-last layout.
  • librosa #2087 — merged by the library's creator.
  • Python SDKs: Deepgram #767, ElevenLabs #858, AssemblyAI #234.

In review: ONNX Runtime, NVIDIA NeMo, PyTorch Audio, SciPy, scikit-learn, and the Anthropic Python SDK.


Projects

asr-age-gap — who voice systems leave out Whisper transcribes older speakers more accurately, not less. The failure is elsewhere: at a fixed 700ms endpoint threshold, speakers in their sixties are read as finished mid-sentence 19.7% of the time against 8.0% in their twenties, because they take about twice as many internal pauses. Word error rate cannot see it. A semantic turn model halves the gap. Whisper · Common Voice · speaker-bootstrapped CIs

state-of-ats-2026 — which ATS each large employer uses Open dataset covering 738 large employers, 704 verified against the live careers-portal apply host, 551 with a recorded evidence host you can check yourself. MIT licensed, free keyless API.

ResumeAI — ATS resume optimizer Full-stack AI product I founded and built solo: compatibility scoring, bullet rewriting, cover letters, PDF/DOCX export, Chrome extension. Active users across 7+ countries. Next.js · TypeScript · Supabase · Claude API · Stripe

ParkCast SF — end-to-end MLOps Parking-occupancy API serving 12.7K SF blocks at 8.98 MAE / 0.73 R². Automated retraining with a champion-challenger gate that blocks silent regressions before deploy. FastAPI · LightGBM · Docker · Cloud Run · MLflow

→ More on my portfolio site.


Tech

Languages: Python · TypeScript · Java · C · SQL AI/ML: PyTorch · Whisper · LiveKit · scikit-learn · LLM fine-tuning · RAG · model evaluation Data: PySpark · Pandas · NumPy · Dagster · dlt/dbt · Airflow Infra: AWS · GCP · Docker · MLflow · GitHub Actions


Experience

AI Engineer, Asurion (through June 2026) — real-time voice AI: Whisper fine-tuning and low-latency LiveKit pipelines in production. Previously Spotly Jobs (dlt/dbt + Dagster ETL) and Outlier AI (RLHF training and LLM evaluation).

🏅 AWS Certified Cloud Practitioner · Google Cloud Digital Leader

Pinned Loading

  1. state-of-ats-2026 state-of-ats-2026 Public

    Open dataset of which ATS each of 738 large employers uses — 704 verified against the live careers-portal apply host, 551 with a recorded evidence host you can check yourself. MIT, free keyless API.

    TypeScript 6 1

  2. Portfolio Portfolio Public

    Personal portfolio site.

    HTML

  3. asr-age-gap asr-age-gap Public

    Speech recognition does not degrade with speaker age. Voice-agent turn-taking does, by 2-5x.

    Python 3

  4. speko-voicebench speko-voicebench Public

    Voice benchmark harness: word error rate on LibriSpeech with documented normalization, reported next to nearest-rank p50/p95 latency over warm runs.

    Python 1