Skip to content
View SaifShafi's full-sized avatar

Block or report SaifShafi

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
SaifShafi/README.md

Saif Shafi

Software engineer in Manchester, UK. I build production web and mobile systems, and retrieval systems over messy real-world data.

Most recently I worked on safety-of-the-line software used by UK rail infrastructure contractors: a Next.js/TypeScript platform and its React Native companion app, where a rendering bug in a signature flow is a compliance incident rather than a cosmetic one. Before that, a loyalty and gift-card platform serving over a million users.

The habit that runs through most of what I build: don't ship the first approach that works; build the competing one and measure which wins. Two expert-discovery pipelines evaluated head to head. A dependency-path SVM held to the same scoring function as a transformer. A guard test that fails the build if a secret is ever hardcoded again.

Currently looking for my next role: full-stack, backend or AI engineering. Available immediately, no notice period. Remote UK, or hybrid and on-site anywhere I can reach from Manchester. saifhshafi@gmail.com


elixir-expert-discovery: MSc dissertation. Two ways of finding the UK researchers who belong in ELIXIR Europe communities: one content-based, one network-based. Both work. Both return ~27,000 high-confidence experts. Only 5.6% overlap. BioBERT + FAISS over 370,282 publications; a PubMed harvester parallelised from ~100 hours to under 20.

relation-extraction-webnlg: A dependency-path SVM and a marker-based BERT, built to be compared honestly: same records, same split, same scoring function. Reports macro and weighted F1, because on an imbalanced label set only one of those tells you the truth.

Efhamni: Saudi Sign Language recognition. CNN + BiLSTM, 94.46% accuracy across 80 signs, ~6s end-to-end. Second author on the paper: Sensors 2024, 24(10), 3112 (10.3390/s24103112).

prism-portfolio-optimiser: Parses free-text investor briefs and builds a constraint-satisfying portfolio, live against a scoring server. StudentHack25, top 5.


Open source

elevenlabs/packages#994: Async LiveKit room handlers in the ElevenLabs Agents SDK discarded their rejections, so a failure to attach the agent's audio surfaced as silence rather than as an error. Routed those rejections to onError. Three of the four tests I added fail against the previous behaviour, one of them asserting no unhandled rejection is emitted.

elevenlabs/skills#121: Their agent-skill eval harness was coupled to a single assistant CLI, so skills documented as assistant-neutral could only be verified on one assistant. Proposed and built a runner interface, with the behaviour-preservation checked by capturing the harness's argv, staging layout and trigger truth table before and after.


TypeScript · React · Next.js · React Native · Python · PyTorch · transformers · FAISS · FastAPI · MongoDB · Playwright · GitHub Actions · Docker

Pinned Loading

  1. agent-eval-harness agent-eval-harness Public

    Evaluation harness for tool-using agents: one shared scorer, verifiable tasks, and the agreement analysis a pass rate hides

    Python

  2. elixir-expert-discovery elixir-expert-discovery Public

    Mapping UK biomedical researchers to ELIXIR Europe communities: PubMed pipeline, ROR affiliation resolution, and two RAG systems evaluated head-to-head. MSc dissertation, University of Manchester.

    Jupyter Notebook

  3. holiday-search-rebuild holiday-search-rebuild Public

    A holiday search widget rebuilt from scratch in React and TypeScript, then measured: Lighthouse 100x4, axe-clean in both themes, keyboard-only journey under test.

    TypeScript

  4. relation-extraction-webnlg relation-extraction-webnlg Public

    Relation extraction on WebNLG: a dependency-path SVM and a marker-based BERT, compared on equal terms.

    Python

  5. shopify-complete-the-look shopify-complete-the-look Public

    Liquid

  6. elevenlabs/skills elevenlabs/skills Public

    Collections of skills for building with ElevenLabs

    Python 464 75