AddressHate
Contract software engineer · June 2026 – present
AddressHate is a research organization studying antisemitism and online hate, with an annotation team that classifies content against a published taxonomy. My engagement covers most of the software the research runs on: I'm the engineer on the analyst dashboard, the browser extension, and the pipeline tooling, working alongside an ML engineer who owns the models.
Analyst dashboard
A Next.js and React application over PostgreSQL that turns the annotation pipeline's output into something analysts and partners can use: model performance, platform and AI-safety scorecards, narrative tracking, geographic distribution, and a team section. Google sign-in through NextAuth with per-section access control and tenant scoping, charts with Recharts, and a live-data development mode that proxies both Cloud SQL data planes so local work runs against real data safely.
Browser extension
A Chrome extension that lets the annotation team classify posts in place on 16 platforms: X, YouTube, Rumble, TikTok, Reddit, Instagram, Facebook, LinkedIn, Bluesky, 4chan, and the ChatGPT, Claude, Grok, Gemini, DeepSeek, and Qwen chat interfaces. Each platform has its own adapter; the annotation panel is a Shadow-DOM drawer so it survives whatever the host page's styles do. Submissions queue locally with an undo window and retries, then sync to an ingest service that archives every envelope and only projects to the database after a lead approves. I took it from version 0.2 through 0.5: new platforms, quotas, tenant routing, a review tier, security fixes, Playwright end-to-end tests, and packaging for the Chrome Web Store.
Pipeline control panel
A FastAPI and Next.js control panel for the annotation platform: what the extension has captured, who is annotating it, and the Brandwatch feed the work comes from. Query-to-batch-to-import workbench, a Brandwatch query language for archive searches, labels and archive surfaces, and production monitoring for the website and the extension service.
Infrastructure and the rest
- Label Studio on Google Cloud Run with Cloud SQL and Cloud Storage behind it, plus the deploy scripts and sandbox checks around it
- Security review and hardening across the apps, including access-control rework and a documented audit trail
- Contributions to the organization's classification API and a narrative-intelligence service
- Internal developer tooling: a task dashboard and CLI, a Markdown viewer, and a launcher panel the team uses across projects