Things I'm building
and thinking about.
Applied data science, machine learning, AI evaluation, and software by Ubayd Hattas, a first-year BSc student at UCT. Real projects with evidence, not placeholders.
This section will grow over the coming months. I'm actively building. Watch my GitHub for the latest.

Cross-City Building Age Classification
Predict the majority construction-age class of buildings inside 30 m Landsat pixels from decades of spectral reflectance, trained on Madrid and transferred to Amsterdam. Class-conditional CORAL lifts zero-shot macro-F1 from 0.36 to 0.65 with no Amsterdam labels.
Hack4Dev Data Science Hackathon. Domain adaptation under a real city shift: feature engineering from satellite time series, class-balanced Random Forests, CORAL alignment, few-shot transfer, and a spatial adjacency audit that stress-tested whether our own evaluation was inflating few-shot gains.

Does AI Actually Know Itself?
A capability-controlled test of whether LLM self-prediction reflects privileged self-access, or is just stylometry in disguise. Asked which of two replies it would produce, Hermes-3 discriminated its own output above chance. A one-feature 'pick the longer reply' rule beat it anyway.
Built over 48 hours with Apart Research's Digital Minds Research Sprint (Track 3: Introspection & Self-Report Reliability). Model-welfare work runs on self-report, so the real question isn't whether a model can predict its own behaviour. It's whether that prediction beats a cheap outside observer reading the same text. Across 9,269 trials, ours mostly didn't.

AfriGuard
A multilingual AI safety benchmark evaluating how well frontier LLMs maintain safety guardrails across South African languages. We red-teamed four models in seven languages, measuring Attack Success Rate across regionally relevant harms. Safety alignment catastrophically degrades outside of English.
Built over a single weekend at the Global South AI Safety Hackathon in Cape Town. AfriGuard tests whether the safety mechanisms that work in English actually hold up when harmful prompts are expressed in isiZulu, isiXhosa, Afrikaans, Sesotho, Sepedi, or Tsonga. The short answer: they don't.

SA Data Hub
A public platform making South African data accessible to students, journalists, and citizens. Explore population, employment, and economic data from Statistics South Africa, SARB, and other public institutions, with interactive visualisations, province comparisons, and transparent methodologies.
SA Data Hub combines official datasets from Statistics South Africa, the SARB, and other public institutions with interactive charts, province comparisons, historical timelines, and educational insights. The goal is not only to display data, but to help users understand what the data means.
See everything on GitHub
Experiments, coursework, and works-in-progress.