AI in the engineering loop
I pioneered the adoption of AI-assisted development across the organization. From writing specs that agents turn into code to AI in everyday review and delivery, the goal is a workflow where AI is built in, not bolted on.
Engineering Manager//Full-Stack Lead
Engineering leader with 10+ years of experience in full-stack development, managing 20+ engineers directly and indirectly, and driving the adoption of AI-assisted development.
~/philosophy
I'm Yehonatan, an engineering leader at XM Cyber. I run the Full Stack Infra team - the shared components, tooling, and standards behind the company's product applications - and manage the company-wide Full Stack Guild: hiring, onboarding, and engineering standards for 20+ engineers.
I pioneered the adoption of AI-assisted development across the organization. From writing specs that agents turn into code to AI in everyday review and delivery, the goal is a workflow where AI is built in, not bolted on.
I led the shift from a monolithic frontend to independently deployed micro-apps, so each team can release on its own schedule without waiting for anyone else.
Being the go-to person doesn't scale. I invest in hiring, onboarding, and mentoring so that knowledge lives in the team - shared standards and good documentation instead of one person's memory.
Frontends should specify their API contracts, not absorb whatever arrives. Normalized data models, lean payloads, and deliberate FE/BE contract design keep multiple teams shipping side by side.
~/career
From migrating Backbone to React at INFINIDAT to leading the frontend of XM Cyber's attack-path platform.
Split a monolithic release process into independently deployed micro-apps on shared infrastructure - from one coordinated version to routine per-team deploys.
Built the shared component ecosystem and company-wide design system adopted by all product applications - documented in Storybook, versioned as independent packages.
Led delivery of major product modules: data-heavy tables, filtering, and drill-down views built on the shared infrastructure.
Evaluated and rolled out agent tooling, ran workshops, and made spec-to-code part of everyday delivery.
Shaped the hiring and onboarding path for engineers across the guild - interview process, guides, and hands-on mentoring.
Per-app CI pipelines, visual regression testing, and error monitoring with actionable alerting - plus ownership in incident response.
~/git
Designed, built, and operated end to end - live products with real users, running in production.
Production dashboards for social-media monitoring: Excel/CSV files parsed into structured reports and charts, with role-based admin, public share links, and AI-generated summaries via Cloud Functions.
Mobile-first Hebrew vocabulary PWA: word cards with TTS, a customizable quiz engine, an AI Hebrew tutor, and offline caching via a generated service-worker manifest. A native iOS/Android version is underway via Capacitor.
Real-time multiplayer implementation of my favorite card game - Red7: rooms, synchronized game state over WebSockets, and the server as the single source of truth for the rules.
A pregnancy companion with an AI assistant grounded in curated week-by-week content and the user's own uploaded documents - Express API on Cloud Functions, conversation memory, and a fully offline dev mode.
~/skills
Systems and methods for displaying an attack vector available to an attacker of a networked system. Covers the attack-path visualization work I led at XM Cyber.
Tel Aviv University, 2013-2017.
A social-media monitoring team was rebuilding the same client reports by hand from raw Excel and CSV exports - thousands of mentions per file. The app turns an uploaded file into a structured, shareable report: parsed tables, charts, and a written summary of the findings.
Next.js 15 App Router on Firebase. Files are parsed into typed rows (platform, sentiment, and other Hebrew-language fields) and stored in Firestore, scoped per project. Auth is role-based with a separate admin check, and public share links, summaries, and rate limiting run as Cloud Functions.
Any report can produce a written brief of its own findings on demand: volume, platform split, and sentiment turned into something a client can read without opening a single table. Generation runs as a rate-limited Cloud Function, so the model key never reaches the browser and one busy project cannot spend everyone else's quota.
Vocabulary practice only sticks if it fits into spare minutes on a phone. MILIM is a mobile-first Hebrew vocabulary trainer - word cards with text-to-speech, a customizable quiz engine, and challenges - that has to load fast and keep working offline.
React and Vite with MUI, over a thin Firebase abstraction layer. TanStack Query owns server state and React context the rest; the build generates a cache manifest for the PWA service worker. The same codebase is now wrapped with Capacitor into native iOS and Android apps - building, signing in, and syncing on both.
Three AI features sit on top of the vocabulary core: a Hebrew tutor chatbot that answers grammar and vocabulary questions, generated word cards so a learner can add any word without writing the card by hand, and speech-to-text behind the speaking exercises. All of it is metered against a server-enforced credit balance, so cost per user is bounded by design rather than by trust.
In Red7 the winning condition itself changes mid-round, so every play must be validated against a moving rule set - across several connected players at once. The goal: a real-time online version where the game can never drift out of sync.
The Socket.IO server is the single source of truth: it owns the deck, validates every move, and broadcasts the resulting state. The React client mirrors that state into Recoil atoms, so components subscribe to exactly the slices they render - hands, piles, player status - with Framer Motion animating the cards. Rooms handle matchmaking; no accounts, just a name.
A shifting win condition makes the rules engine the one place where a bug is unrecoverable: a wrong call quietly ends someone's game. So its unit tests were written first, against the official rule edge cases, before the engine itself. That is what makes it safe to keep adding rule variants without breaking a live match.
Generic chatbots are a poor fit for pregnancy questions - answers should match the exact week and the user's own documents. BabyTracker pairs week-by-week tracking with an AI assistant that is grounded in that context instead of improvising.
A React 19 client talking to an Express API deployed as a Firebase Cloud Function, with Firestore for persistence and Google Drive behind document storage. An auth-bypass mode runs the whole stack offline, so the app can be developed and demoed without touching a real account.
The assistant never answers from the model's own knowledge alone. Every request is assembled server-side: curated week-by-week content, the user's uploaded documents, and conversation memory are injected as context before the model sees the question, which is what keeps answers tied to the user's actual week and files. Models are reached through OpenRouter, so changing the underlying model is a config change rather than a rewrite.