Hi, I'm Ian.
Senior AI Engineer @ Salesforce. I build AI systems and agentic AI systems that make AI feel simple, fast and trustworthy.
ResearchThree Functional Roles of the Per-Layer Embedding Gate in Gemma-4 E2B
I ran polysemy tests, magnitude decompositions, and a full causal ablation battery across all 35 layers of Gemma 4 E2B's Per-Layer Embedding gate. The gate contains at least three independent mechanisms with different causal signatures: Layer 6 carries word-sense information correlationally but its causal contribution is syntactic and lexical; Layers 13-14 inject a massive token-identity signal that is net-harmful on English and German but net-helpful on Chinese; Layer 33 is a late-stage output prior whose removal is catastrophic (+1.59 NLL). The primary evidence for the L13/14 finding is mean-ablation (−0.159 nats, P=1.000 on 500k tokens), not zero-ablation. The Chinese sign flip means domain-conditioned analysis, not uniform pruning. Treating PLE as a single mechanism is the wrong unit of analysis.
ResearchCracking Open Gemma 3 4B Part 2: Transcoders And Generation-Time Behavioral Circuits
Transcoders decompose MLP computation rather than residual stream state. The headline generation-time overconfidence result (Cohen's d=3.22) was confounded by topic differences between prompt pools: with topic-matched pairs, the L17 signal drops from 3.22 to 1.25, while Layer 29 Feature 216 increases to 2.87 — the only feature that actually survived topic correction. Over-refusal's transcoder encoding feature (d=4.41) is the cleanest result. Transcoder zero-ablation causes coherence collapse at even 30% strength, confirming these are polysemantic MLP features, not dedicated behavioral circuits.
ResearchLarge Audio Deepfake detection models perform well on academic benchmarks but fail in the real world compared to smaller models
A 2M parameter model with no pretrained backbone beat my 350M parameter WavLM pipeline by 24 percentage points on out-of-distribution data. I ran 50 experiments across four architectures, multiple datasets, and different audio codecs. The results inverted every assumption I had.
ResearchCracking Open Gemma 3 4B Part 1: Finding Behavioral Circuits With Sparse Autoencoders
I ran contrastive feature discovery across six model behaviors, four layers, and hundreds of prompts to find SAE features that reliably detect sycophancy resistance, over-refusal, hallucination, and more. What I initially called 'sycophancy features' turned out to be the opposite: the circuit the model uses to resist agreeable pressure. Hallucination at encoding time produced almost nothing, but shifting the monitor to generation time found real candidates. The difference comes down to where in the forward pass each behavior lives.
ProjectAI-SPY Text Detection: AI Writing Detection That Shows Its Work
A multi-level AI text detection system built on DeBERTa and a custom dual-path architecture — sentence, paragraph, and document analysis with attention-based attribution so you can see exactly which parts triggered the verdict.
BlogBuilding AI text detection that explains itself
Most AI detectors give you a percentage and call it a day. We built one that shows you which sentences triggered the verdict, how much each one mattered, and why. It uses attention-based attribution on a sliding window transformer.