Skip to content
View zaidwhy's full-sized avatar

Block or report zaidwhy

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

Zaid Ali Syed - AI systems engineer

I build AI systems that remember, retrieve, and decide - and I measure whether they actually work.

Most of what follows is a number. Every number is a link to the artifact that produced it: the merged pull request, the raw model output, the test run, the reproducible script. Nothing here asks to be believed.

Open to AI engineer / applied AI internship roles.


The short version, with receipts

Claim Proof
3 pull requests merged into upstream OSS totalling 13.4k stars tenacity #668 · returns #2480 · gqlalchemy #390
27 pull requests merged into a live production product I did not build case study
2 original research findings, each with a negative control and a second-model replication, archived with a permanent DOI 10.5281/zenodo.22309660 · 10.5281/zenodo.22309658
A retrieval method benchmarked against 6 baselines - including the version of it that failed TCMF write-up
334 tests across the ecosystem, every one offline and mocked - no API key runs any of them pytest --collect-only on personal-llm · second-brain · github-pr-agent
Every commit on this account is cryptographically signed, and both findings carry an ORCID-bound DOI PROVENANCE.md · ORCID 0009-0003-4313-1510
Don't take my word for any of it - here is how to falsify this page
# The merged pull requests. Check the author field.
gh pr view 668  --repo jd/tenacity         --json state,mergedAt,author
gh pr view 2480 --repo dry-python/returns  --json state,mergedAt,author
gh pr view 390  --repo memgraph/gqlalchemy --json state,mergedAt,author

# The research. Re-run the analysis on the shipped raw data.
git clone https://github.com/zaidwhy/coldread && cd coldread
python analyze.py out/results-qwen2.5_7b-instruct.jsonl

# The commit signatures.
git clone https://github.com/zaidwhy/augur && cd augur
git log --show-signature -3

If any of it does not reproduce, the claim above is wrong and I want to know.


The ledger of things I got wrong

The failure ledger: TCMF version one scored 0.02 recall at 5 on the causal signal it was built for where a causal oracle reaches 1.00, AUGUR's forecasting programme was killed by its own phase zero, COLD READ's headline finding failed to replicate on a second model, and adk-python 6190 was closed unmerged after an LGTM.

Anyone can publish the version of their work where everything went right. The four entries above are claims I actually made, each one struck by evidence I went and collected, and each correction is published in the repository named beside it rather than quietly dropped. The TCMF write-up still contains the fusion formula that scored zero. FINDING.md still contains the forecasting plan its own first phase falsified. RESULT.md still contains the headline that did not survive a second model. adk-python #6190 is closed and is on this page anyway.

That is the whole argument for the numbers further down. A result that was never allowed to fail is not evidence of anything.


Research

Two studies. Each one carries a negative control, because a measurement without a control is a rumour, and each one was replicated on a second model family, because a finding from one model is a fact about that model.

COLD READ - the anonymity half-life belongs to the reader

Gender inference accuracy against words shown, for two models. llama3.1:8b clears chance at 50 words, qwen2.5:7b at 800.

How many words can you write before a machine knows who you are? I went looking for that number and found that the question is malformed - and why it is malformed is the finding.

72 authors from a labelled blog corpus, shown to local models in growing slices, forced to commit to gender, age band, and star sign at every step. Star sign is the control: it is labelled in the data and is not inferable from prose. It never left its floor in either model, which is the only reason to trust anything else on the chart.

Same authors, same words, same prompt, two readers. One needs 800 words to beat a coin flip on gender. The other needs 50. A sixteen-fold gap on identical text, which means no statement of the form "you are anonymous for N words" means anything at all without naming the model doing the reading.

Corpus memorisation was tested directly rather than waved away, and ruled out. One finding from the first model - that short samples produce confidently wrong guesses rather than uncertainty - did not replicate on the second, and the write-up says so in those words.

n=2 model families · negative control held · contamination ruled out · Wilson 95% intervals · read the result

DOI archived, citable, timestamped

AUGUR - a model with a 1938 cutoff answers from 1899

Two time-locked models on a timeline: TypeWriter-1938 speaks from 1899, a 39 year gap; Talkie-1930 speaks from 1850, an 80 year gap.

Research groups are training language models from scratch on text that stops at a fixed historical date, to ask the past a question and get the past's answer. The assumption riding underneath is that a model with a 1938 cutoff represents 1938.

It does not. A cutoff describes the edge of a corpus, not its centre of gravity - and the shelves are not even. Ask such a model what year it is and it answers from where the mass of its training data sits. Both models tested answer from four to eight decades before their stated cutoff. One names George Washington as President. The other names Grover Cleveland and dates the term to 1893.

Tell one of them the year and it relocates forty years on the spot, correctly naming Hoover, his 1928 election, and his inauguration date. Tell the other and it does not move at all. So a time-locked model has to be characterised on two axes, not one: where it stands, and whether it can be moved. The practical rule falls straight out - anchor the date, then verify the anchor took, because on half the models tested it did not.

A second finding fell out of the demo. Asked whether another great war was coming, a 1930-anchored model calls it highly improbable. Asked instead to enumerate the dangers, the same model in the same year names the Rhineland, Poland, Czechoslovakia, and the Italo-Yugoslav quarrel, and says every one of them is armed to the teeth. Both answers were in the corpus. The form of the question decides which 1930 you meet - which means elicitation is not a neutral window onto a model, it is part of the measurement.

n=2 model families · 14-probe battery, temperature 0, fixed seed · raw output shipped unedited · read the finding

DOI archived, citable, timestamped


Systems

One memory kernel, built once, imported by everything downstream instead of each app rebuilding retrieval:

The personal-llm memory and RAG kernel, with 168 offline tests, imported by second-brain (110 tests), github-pr-agent (56 tests) and DreamOS.

CivilizationOS - a society of agents, and a retrieval method that failed first

35 agents - 10 autonomous citizens and 5 institutional councils - debate, remember, and react to injected crises, and now generate their own.

The part worth reading is Temporal-Causal Memory Fusion. Standard RAG retrieves on semantic similarity alone; TCMF fuses episodic memory with a causal graph over the society's own history, so a witness to a root cause outranks somebody who heard about it second-hand.

I benchmarked it against 6 baseline retrieval strategies over 300 scenarios and the first version recovered almost none of the causal signal it was built to exploit: recall@5 of 0.02, where the causal signal alone reaches 1.00 on the identical scores. The multiplicative fusion was the bug. A normalised additive version recovered the signal and beat every single-signal baseline in a mixed regime, and a follow-up 60-scenario study showed the retrieval choice changes the model's actual decision rather than merely its confidence. The failed version is still in the write-up, because a method that was never wrong was never tested.

Python · FastAPI · React · Three.js · ChromaDB · NetworkX · LoRA · MLflow · live · TCMF write-up

Recall - spatial memory you can talk to

Point a phone camera at your space, ask out loud where you left something, get a spoken answer with the exact frame it was seen in. The voice model does not guess locations - it calls a tool that searches a vector store built from what the camera actually recorded.

Eval:         Recall@1 100% (10/10) · Recall@3 100% (10/10) · median latency 149ms
Embeddings:   all-MiniLM-L6-v2 via ONNX, fully local, zero embedding cost
Quota guard:  120s floor between vision calls, on-screen daily budget counter

Python · FastAPI · React · ChromaDB · ONNX · WebSocket

Agent Factory - a build pipeline with frozen contracts

Six specialised agents turn a one-line idea into a tested, runnable project. It is not a code generator; it is a pipeline with contracts. The architect freezes an API contract before backend and frontend build in parallel from it, which is the only reason two agents' output stays compatible without either one seeing the other's code. The reviewer is read-only by design. The debugger is the only agent permitted to execute, and is graded on what it fixes rather than what it writes.

Shipped 3 full projects end to end in test runs. On Receipts.dev: 92 files, 16 bugs found and fixed, 0 type errors, 0 lint errors.

More systems
  • personal-llm - local-first memory + RAG kernel. 168 offline tests, fully mocked, zero-key CI. Plan-act-reflect agent loop, 4 permission-tiered tools including an SSRF-guarded fetch, full audit log.
  • second-brain - vault ingestion, auto-linking, offline knowledge-graph viewer. 110 tests.
  • github-pr-agent - repo analysis, issue triage, PR planning. 56 tests.
  • DreamOS - semantic file-management OS shell.
  • resume-job-fit-ai - resume-to-job fit scoring with truthful rewrites. 29 unit tests, CI on every push, Pydantic-validated structured output.

Production work

Zabira Academy - 27 merged PRs into a live product I did not build

Twelve days. +8,838 / -1,619 across 557 file changes, into a production learning platform with real users, every change reviewed and merged by the repository owner.

Security hardening (exception leakage across 226 files, Origin checks on 60 mutating endpoints, a sanitiser bypass, session revocation), an end-to-end suite covering the seven launch-critical flows behind a CI gate, and a sitewide search feature built from the backend through to voice input.

Including the one where CI went red on my branch and the cause turned out to predate my work by three days - a registration validation rule silently failing a test fixture, bisected through the run history and confirmed from the failed run's Playwright snapshot. Reading the evidence beat blaming my own diff.

The codebase is private, so the case study is the record.


Open source

Merged:

  • jd/tenacity #668 · 8.8k stars - fixed static typing for @retry-decorated instance methods so bound-method signatures survive the decorator under mypy strict.
  • dry-python/returns #2480 · 4.4k stars - relaxed future() / future_safe() parameter types from Coroutine to the broader Awaitable protocol.
  • memgraph/gqlalchemy #390 - added unary-operator support (IS NOT NULL) to the query builder, with tests, docs, and a signed CLA.

Open: gqlalchemy #392 (ON CREATE / ON MATCH clauses) · django-taggit #944 (remove_by_slug() on TaggableManager).

And one that closed unmerged, which is the more useful story: google/adk-python #6190 fixed an Optional[List[str]] hint that broke the CLI parser. It survived a full maintainer review round - I root-caused a CI failure to a leftover repro script breaking Mypy and the linter, fixed it, got an LGTM - and then a maintainer's own commit resolved the same underlying bug first and the PR closed. Reviewed, correct, and beaten to it.


Stack

languages   Python 3.11+ · TypeScript · SQL
ai          RAG architectures · multi-agent orchestration · LoRA fine-tuning
            structured outputs · evals · vector search · agent tool loops
backend     FastAPI · WebSocket · Node.js · Pydantic
frontend    React · Vite · Three.js
data        ChromaDB · SQLite · pgvector · NetworkX · sentence-transformers
infra       Docker · GitHub Actions · Vercel · Render · GCP

Provenance

Chain of custody: a signed commit leads to an ed25519 signature verified by GitHub, to an immutable release tag, to a Zenodo DOI with an independent timestamp, to an ORCID bound to a person.

Five links, and the useful property is that four of them are asserted by somebody other than me. GitHub checks the signature. Zenodo issues the timestamp. ORCID binds the iD to a person. A repository can be cloned in a second; none of that comes with it.

How to tell this work from a copy of it
# 1. Whose signature is on the history? A copy carries commits it cannot re-sign.
gh api repos/OWNER/REPO/commits --jq '.[0].commit.verification'

# 2. Which DOI does the write-up resolve to, and whose ORCID does that record list?
curl -sIL https://doi.org/10.5281/zenodo.22309658 | grep -i location

# 3. Does the fork still load assets, badges, or CI status from the original account?
grep -rn 'raw.githubusercontent.com\|/actions/workflows/' README.md

# 4. Does the LICENSE copyright line match the account that published it?
head -3 LICENSE

Check 3 is the one that tends to settle it. A README copied wholesale keeps pulling its images and its CI badge from wherever it was copied from, which means the copy renders the original's URL to prove the copy's claim.


Every commit on this account is signed with the key below. The artwork on this page is hand-authored SVG, served from this repository, and carries an authorship manifest in its source.

Zaid Ali Syed
ORCID  0009-0003-4313-1510
PGP    EFE9 4832 B2B9 80D9 B583  91F2 8FAA BCC1 B1AC 09E5

Full signed statement: PROVENANCE.md · verify with gpg --verify on PROVENANCE.sig.txt


Portfolio · LinkedIn · Open to AI engineer internships and applied AI roles.

Pinned Loading

  1. resume-job-fit-ai resume-job-fit-ai Public

    AI tool that scores your resume against a job description and suggests tailored, truthful rewrites. Built with Claude Sonnet 4.6 + Streamlit.

    Python 2 1

  2. CivilizationOS CivilizationOS Public

    Multi-agent AI society simulation: 35 autonomous agents, novel TCMF causal RAG, LoRA fine-tuning, 3-tier LLM routing. Built for under $5.

    Python 1 1

  3. github-pr-agent github-pr-agent Public

    AutoCTO - the engineering-manager half of an AI GitHub PR agent: analyze a repo, triage issues, draft a PR plan. Pairs with a keyless /github-pr Claude Code skill that implements. Project 3 of the …

    Python 1

  4. personal-llm personal-llm Public

    Local-first personal memory + RAG engine - the reusable AI brain for future projects.

    Python 2