Aside is a Chrome extension (Manifest V3, plain JavaScript, no build step) that opens an AI assistant from six providers in a sidebar next to any web page you're reading. Press Alt+A and the page's main text is already extracted as context; it goes out only with a message you send, and one toggle turns it off. Six providers sit behind one interface: Claude, Gemini, OpenAI, Grok, Groq and local Ollama, each with its own model list and a Custom option for new model IDs. Answers stream in (SSE, or NDJSON for Ollama), and compare mode sends one prompt to two models so you can keep the better answer. One-tap actions summarize the page, pull its data into a table, and explain, translate or rewrite a selection. API keys and chat history stay in chrome.storage.local and are never synced. Under the hood, a ProviderFactory picks the provider at runtime, each provider is a swappable strategy on a shared BaseProvider, and OpenAI, Grok and Groq share one OpenAI-compatible parent class. The sidebar talks to the page through a nonce-checked postMessage bridge and renders Markdown with its own parser. There's also a GitHub Pages landing site.
Built with: JavaScript · Chrome MV3 · OOP · i18n / RTL · Streaming / SSE · Service Worker · Factory Pattern · Strategy Pattern · Claude API · Gemini API · OpenAI API · Groq API · Ollama · GitHub Pages
Main quest
Site + AI chat · 2026
Nechita Raka-First-Year CS Hub
First-year CS hub at Bar-Ilan: 15 guides, a 515-course browser, the calendar and an AI chat. The same engine now runs a second faculty.
330 users and 1,000 visits a week on the CS site
Bit and Byte chat: Prompt Guard, Neon rate limits, Groq fallback
Built and run with 9 AI agents: QA, security, UX, simulated students
Nechita Raka (Hebrew for 'soft landing') is a student hub I built as a mentor for first-year Computer Science students at Bar-Ilan University, in plain HTML, CSS and JavaScript, with an AI chat on a Vercel Function. The questions of the first weeks are answered on one page: 15 step-by-step guides (course registration, exams and the second sitting, reserve duty, the campus shuttle), each with its own URL to share in a group; useful links and FAQ answers; and the academic calendar as a timeline that shows the current week, with an .ics download. A course browser covers all 515 courses in the department's catalog (groups, hours, lecturers, exam dates). The content lives in plain data files that any mentor can edit from a phone on GitHub, and the build prerenders it with a page per guide, a sitemap, JSON-LD and an llms.txt, so Google and AI crawlers read it without JavaScript. Bit and Byte, the two mascots, run a chat that only knows the site's data: a Vercel Function rate-limits by a salted hash of the visitor (no IP address stored, counters in Neon Postgres), screens each message with Prompt Guard 2, retrieves the relevant chunks, asks a Groq model with a fallback to a second one, and checks the answer before it goes out. Nothing from the conversation is stored. It also has an English version and a private admin dashboard with anonymous counters (no cookies, no visitor ID). The code is now a multi-faculty engine, and a second site for brain sciences students launched on it in October 2026. I run the project with 9 Claude Code agents with separate roles (content owners, engineer, designer, QA, security, UX, social, a simulated student): they keep memory in files, log decisions, and a /board command runs a management meeting from the weekly traffic report. QA grades simulated-student runs against the chat and flags any invented fact. The CS site draws about 330 users and 1,000 visits a week (the site's own anonymous counters, October 2026). An independent project, not an official university site.
Built with: JavaScript · Node.js · Groq API · Serverless Functions · Neon Postgres · Vercel · GitHub Actions · SEO / JSON-LD · Hebrew / RTL
Main quest
Telegram bot · 2026
Wine Sommelier Bot
A Telegram AI agent that runs my wine cellar in a Google Sheet: it reads label photos, updates the list and pairs bottles with dinner.
Label photos become sheet rows; edit or remove in chat
Retries with backoff, then falls back across 4 models
Plain Python on a Vercel webhook, no framework, tested in CI
Wine Sommelier Bot is a Telegram AI agent in plain Python, built on the Gemini API for my own wine cellar: it keeps the cellar in a Google Sheet, adds bottles from label photos and pairs them with dinner. The bot reads the sheet live and writes back through a Google Apps Script endpoint. Send photos of the front and back label and it pulls out the wine's details and adds the bottle; ask in Hebrew or English and it edits a bottle, marks it open or finished, or removes it. A router model sorts each message (add, edit, status, delete or chat) before anything touches the sheet, and every write re-checks the row first so it can't hit the wrong bottle. Pairing and buying advice come from what's actually in the cellar. When Gemini started returning 503s and 429s, I added retries with exponential backoff and a fallback chain across 4 models. Memory has two layers: the last 30 messages, and after an hour of quiet, an AI-written summary that carries over. Plain Python with no web framework, running as a Vercel webhook, with its tests running in GitHub Actions. It also takes voice notes.
Built with: Python · Gemini API · Telegram Bot API · Google Sheets · Vercel · Google Apps Script · Serverless Functions · unittest · GitHub Actions
Side quests
Side quest
Privacy-first web app · 2026
Groupie-WhatsApp Year in Review
A year-in-review for WhatsApp group chats: story cards, awards and a poster, all computed in your browser. No message leaves the device.
Groupie is a year-in-review for WhatsApp group chats, a solo web app in plain JavaScript and canvas, live on Vercel, Hebrew first with English. Drop in a chat export (a .txt, or the .zip an iPhone makes) and it builds story cards, awards and a festival line-up poster that you can share. The privacy promise is enforced, not just stated: everything is computed in the browser, nothing is uploaded or stored, scripts and fonts are self-hosted and pinned by hash, and a security gate plus a network check with a marker chat run in CI and fail the build if a rule breaks. The parser reads the iOS and Android export formats and is tested against a synthetic corpus with hand-counted expectations. I run it with 9 Claude Code agents with separate roles (CEO, security, QA, DevOps, growth, product engineer, designer, legal and privacy drafts, support) and a decision log. The repo is private; I can share it on request.
Built with: JavaScript · Canvas · Playwright · GitHub Actions · Vercel · Hebrew / RTL · SEO / JSON-LD
Side quest
Full-stack web app · 2026
Wolt Clone-Food-Delivery App
A Wolt-style food-delivery app, built in a team of 2 for a systems programming course. I owned the React web client.
React 19
Node.js
Express
MongoDB
+4and 4 more: React Native, Docker, JWT auth, C++
Private repo · code on request
Wolt Clone is a Wolt-style food-delivery platform, built in a team of 2 for the Advanced Systems Programming course, with a React web client, a React Native app, an Express and MongoDB API, and a C++ recommendation service. I owned the React 19 web client: restaurant browsing with category filters, menu search, a cart drawer and checkout, order history with status, and the admin pages. On the backend I built the Express skeleton and the MongoDB storage for restaurants, products and search, and co-wrote the Node client that talks to the C++ recommender over TCP; my teammate owned auth and orders. I also set up the web and frontend Docker containers and built several React Native screens. The repo is private; I can share it on request.
Built with: React 19 · Node.js · Express · MongoDB · React Native · Docker · JWT auth · C++
Side quest
Website + engine · 2026
Personal Portfolio
You're playing it. React and TypeScript, Roy Runner (an endless runner on a canvas engine I built for it), and Pixel Roy, an AI chat that answers as me.
Personal Portfolio is this site, my portfolio for recruiters, built from scratch (no template) with React 18, TypeScript, Vite, Tailwind CSS and Framer Motion and deployed on Vercel. Press start and the title screen turns into Roy Runner, an endless runner on a small canvas engine I built for it: a game-state machine, a 7-state animation machine for the player, AABB collision, and a speed that keeps climbing. It plays with a keyboard or touch controls, with a fullscreen mode on phones. Day and night themes follow your system setting. Pixel Roy, the little me in the corner, is an AI chat that answers questions about me, using only what this site, my public GitHub and my LinkedIn say. A Vercel Function screens each question with Prompt Guard, pulls the relevant facts with BM25 search, and asks a Groq model, falling back to a second one when the first is busy. Every answer then passes output checks: no personal details, no links outside my own, no rule-breaking wording. It runs on Groq's free tier with a daily cap per visitor, and conversations are not stored.
Built with: TypeScript · React 18 · Canvas · Vite · Tailwind CSS · Framer Motion · Groq API · Serverless Functions · Vitest · Vercel
Side quest
Full-stack web app · 2026
CareerPredict AI
A tongue-in-cheek career quiz: sign in with Google, answer 5 questions, get one of 45 made-up futures and an AI portrait of you in it.
React 19
Vite
Tailwind CSS
Node.js
+6and 6 more: Express, Passport.js, SQLite, Google OAuth, Pollinations.ai, Render
CareerPredict AI is a tongue-in-cheek career quiz, a solo full-stack app in React 19, Node, Express and SQLite: sign in with Google, answer 5 questions, and get one of 45 made-up futures with an AI portrait of you in it. It's deployed on Render. Google sign-in runs through Passport.js with server-side sessions. A 5-question quiz maps your answers to one of 45 hand-written outcomes (the 'AI analysis' loading screen is part of the joke), and an image model draws you in that future through a swappable provider chain, with Pollinations.ai as the fallback. React 19, Vite and Tailwind on the front; Node, Express and SQLite (via sql.js) on the back. I built it to learn the OAuth handshake, sessions, and what it takes to ship something past localhost.
Built with: React 19 · Vite · Tailwind CSS · Node.js · Express · Passport.js · SQLite · Google OAuth · Pollinations.ai · Render
Side quest
AI pipeline · 2026
CLR-Culinary Logic Repository
In development
Send a link, note, voice memo or photo to a Telegram bot, and an LLM files it as a recipe, a restaurant or kitchen gear in a web app.
CLR (Culinary Logic Repository) is a food knowledge base I feed from Telegram, where an LLM pipeline in Python files what I send as a recipe, a restaurant or kitchen gear in a React 19 + TypeScript web app. Send a link, a note, a voice memo or a photo; a Python (Flask) backend decides whether it's a restaurant, a recipe or kitchen gear, extracts structured JSON with an LLM (Groq by default, with Gemini and Anthropic swappable), checks restaurant details against Google Places, and shows a preview to save or discard. The React 19 + TypeScript web app has a gallery, a map, search and filters. Supabase holds the data and handles Google sign-in; the frontend runs on Vercel and the backend on Render. Still in development.
Built with: TypeScript · Python · Groq API · Telegram Bot API · React 19 · Supabase · Vercel · Render
Training logs
Team data project · 2026
Cognitive Background-Neuro-Data Analysis
Team of 4: does a child's socio-educational background predict math and reasoning scores? OpenNeuro data, 56 subjects, hierarchical OLS.
I'm a third-year student at Bar-Ilan University, doing a dual major in Computer Science and Neuroscience. Most of my building happens on the CS side. The neuroscience side is where I learned to work with messy real data, from voltage-imaging recordings to an OpenNeuro study of 56 children.
I build things I end up using. Aside puts six AI providers in a sidebar next to whatever I'm reading, and a Telegram bot keeps track of my wine cellar. I work with AI coding tools every day: I make the architecture calls, review what they write, and debug it myself.
Alongside the degree, I'm an IDF battalion medic and medical coordinator in the Gaza Division: regular service from 2021, and an active reservist since August 2024. During high-intensity operations I led a medical unit as it grew from 12 to 30+ people, ran coordination and logistics in the division's war room, and handled triage and evacuation in mass-casualty events. What I took from it: stay calm and make the call.- Roy