yousef@kamel:~/portfolio

Currently rebuilding Renellence's sales systems

Hi, I'm Yousef.
I build software for real teams.

I'm an Electrical Engineering student at the University of Waterloo. This term I'm a co-op at Renellence, where I designed the company's relational database and build the three apps the sales team runs on, plus a few AI tools of my own on the side.

01// renellence

What I've been working on

I joined Renellence as a Software & Automation Developer Co-op in August 2026. I'm rebuilding the company's sales systems around one relational database: three apps on top of it (Pulse for reps' phones, Edge for the desktop, Compass for managers' 1-on-1s), every outside service feeding into it, and HubSpot on its way out.

in production

Relational database · Supabase Postgres

One database for the whole company

Customers, clinics, orders, payments, calls, emails, signatures, forecasts and 1-on-1s used to be spread across HubSpot, Shopify, spreadsheets and app caches. I designed a single Postgres schema from what the business actually does, cleaned and migrated the real history into it, and moved every app onto it.

  • ~30tables
  • 71foreign keys
  • 37row-level security policies
  • 45triggers
  • 16numbered migrations
  • 0derived values stored

One table per noun

Variations share a table with a fixed kind: calls, meetings, notes, emails and texts are all interactions. Allowed values are enums in the schema, not editable dropdowns.

Nothing derived is stored

Totals, pipeline stage, "last contacted", "going cold" and ROI are worked out in views and queries, so they can never drift. The one exception is dated history in a snapshots table.

Real foreign keys

No polymorphic entity_type + entity_id links: one nullable foreign key per possible parent, with a check that exactly one is filled.

Access in the database

Row-level security means a rep can only read and write their own customers and everything hanging off them, whichever app or API asks. Tested rep against rep for every real rep.

History that doesn't move

An order keeps the rep credited at the time and the product name and price as sold, so reassigning a customer never rewrites past revenue. An append-only change log records who changed what.

Replayable intake

Every outside copy lands once in an ingest_events table keyed by source and external id, so any feed can be re-run or replayed without making duplicates.

The schema is documented in a written SOP (35 target tables, 477 fields, every rename and decision logged) and a live data dictionary site that reads the database's own catalog.

  • PostgreSQL
  • Supabase
  • Row-level security
  • SQL migrations
  • pg_cron
  • Data migration
in production

Integrations · leaving HubSpot

How data moves through the company

Every app reads the one database. Data comes in through a few doors, each written straight into it, and orders, texts, emails and envelopes go back out. HubSpot is read in one place only: a bridge that copies whatever still lands only there, until nothing does.

sources

  • Reps' apps
  • n8n
  • Stripe
  • Meta leads
  • Gmail
  • VoIP calls/texts
  • SignatureAPI
  • HubSpot (bridge)

doors

APIs, webhooks, a 5-min tick Signed webhooks, an n8n intake, and pg_cron pulling Meta, Gmail and signatures

database

Supabase Postgres Contacts, clinics, orders, payments, interactions, forecasts, 1-on-1s

apps

Pulse · Edge · Compass Plus an admin app and Claude jobs that summarise calls and leads

Write to both, read from one

All 74 HubSpot write steps in the n8n workflows also send the same data to the database, with retries, so the switch-over never needs a big-bang migration.

Orders exactly once

An order is saved the moment a rep taps, then sent to the approval workflow with an idempotency key. A resend never makes a second order, and a lost answer is retried on the next tick.

A 5-minute tick

Vercel only allows daily timers, so pg_cron in Postgres calls the app every 5 minutes, split into three jobs: leads and pushes, the HubSpot bridge, and signatures plus Gmail.

Bookmarks, not guesses

Each feed only moves its bookmark after a page is saved, so a failed pull resumes exactly where it stopped. One bad record is skipped and counted instead of blocking every later one.

Freshness alarms

Every 5 minutes the system checks for a quiet feed, failed copies, orders only the bridge caught, or a silent tick, and emails the tech inbox, at most once every 6 hours per alarm.

Cutting the last ties

93 HubSpot lookups across 9 workflows were mapped; the read-only ones are moving to a database lookup endpoint, checked against past runs before each switch (23 moved so far).

  • n8n
  • Webhooks
  • Idempotency
  • Stripe
  • Meta Graph API
  • Gmail API
  • Node.js
  • Vercel
in use

Product & UI

Pulse, Edge and Compass

Three apps that feel like one product: one dark design language, the same role avatars, and gold kept for wins only. I built each from a designed mockup and then iterated with the sales team.

Pulse

The reps' phone app, built screen by screen from a 29-screen dark mockup. Today shows one panel: the day's goal ring, streak, the next five people to reach and the month so far. Logging a visit or placing an order takes a few taps, with Undo.

Edge

The desktop sales platform for reps and managers: a forecast-first home, customers, orders, events and expenses, and a KPI scorecard whose pace skips weekends and holidays. Same dark theme, with a light switch.

Compass

Managers' weekly and monthly 1-on-1s: wins first, then numbers, visits, a roleplay, calls, and one typed focus that shows up on the rep's Edge home and phone.

Nell, the mascot

A blue owl with four moments (Nudge, Payday, Jackpot, Cheer), keyed from green-screen clips into video that sits on each screen's own colour.

Animated avatars

Vector role avatars (doctor, nurse, manager and more) with separate body, head, eyes and mouth layers so they can blink and react.

Built for phones

Installable as an app with push notifications for new leads, the morning summary and wins. Every screen is tested at 390 px wide.

  • JavaScript
  • React
  • Vite
  • PWA
  • Web Push
  • CSS animation
  • SVG

Behavioural design

The psychology in the UI

Pulse and Edge are meant to make reps want to open them. Each motivator is a known principle, used carefully:

Goal gradient

A daily ring of five calls or visits, where an order counts as two, so the ring speeds up as a win gets closer.

Loss aversion, forgiven

A weekday streak and a 3 pm nudge to keep it, but weekends, holidays and time off never break it.

Positive framing

Each rep's 50 clinics show as dots: Spoiled, Almost there, Going cold, Open spot. Going cold reads as "win them back", never as blame.

Less choice, more action

Today lists five people, in priority order, rather than the whole book.

Variable rewards

Nell's Jackpot is a surprise, at most once a day, and Payday shows the commission already on its way.

Isolation effect

Gold appears only on real wins, so it always stands out. No points or XP, and logging alone is never rewarded.

Recognition first

Compass opens every 1-on-1 on the rep's wins before any numbers. Leaderboards show the top three and your own row, not the bottom.

Testing

How it's tested

  • 240test files
  • 4,500+assertions
  • 90%line-coverage gate
Production is never a test bed

Tests run on a separate copy of the database; a network guard refuses every outside service, and connectors answer from stubs.

Access tests

Every real rep's login is tried against every other rep's book, read and write. Nothing crosses.

Real-data test runs

Whole apps driven at phone size over Chrome DevTools: scripted flows, random-tap runs on every screen, a 300-person book (Today loads in 1.5 s), Toronto midnight and the November clock change.

Findings, ranked and fixed

Each run ends in a report by severity: a missing idempotency key on order retries, one bad lead that blocked every later one, a custom price that could silently become free.

Careful releases

A dry run and a backup before each change to a live workflow, and end-to-end checks on production that roll themselves back.

in use

Order-to-cash

Order automation

n8n workflows that take an order from the rep's tap to delivery without anyone re-typing it.

  1. Order placed in Pulse or Edge
  2. Approval by a person
  3. E-signature when needed
  4. Stripe charge or pay link
  5. QuickBooks invoice
  6. Shipping tracked to delivery

Connects Stripe, QuickBooks, SignatureAPI, Gmail, the phone system, Meta, Google Sheets and HubSpot, with customer texts and emails at each step.

02// experience

Experience

Aug 2026 — Dec 2026

North York, ON

current

Software & Automation Developer Co-op

Renellence Inc.

  • Designed the company's relational database in Supabase Postgres (~30 tables, row-level security, 16 migrations) and migrated the real HubSpot and Shopify history into it.
  • Built three apps on it: Pulse (reps' phone app), Edge (desktop sales platform) and Compass (managers' 1-on-1s), using behavioural design to drive daily use.
  • Wired n8n, Stripe, Meta, Gmail, the phone system and e-signatures into the database with idempotent, replayable intake, while moving off HubSpot.
  • Wrote 240 test files (4,500+ assertions) with a 90% coverage gate, access tests and real-data test runs.
more detail above

Jan 2026 — Apr 2026

Waterloo, ON

Software Developer Intern

Normative

  • Built NIMBUS, a full-stack profitability modeling tool with live COGS, margin and profit calculations.
  • Automated seniority-to-cost mapping from backend rate card data to remove manual mapping errors.
  • Built 15+ reusable React, TypeScript and MUI components.
  • Integrated type-safe tRPC APIs across 10+ endpoints.
  • Designed PostgreSQL schemas with Prisma, reducing redundant data by 25% and improving query times by 30%.
  • React
  • TypeScript
  • tRPC
  • Prisma
  • PostgreSQL
  • Material UI

03// projects

Other projects

Nightshift's office for a made-up dental practice: seven pixel-art bots at their desks, Mirela the front desk and Rosa from billing holding up signs saying they have drafts waiting, Theo and Molly working, the others idle with z's drifting up, and the owner's desk in the middle with 3 cards on it
The office, for a made-up dental practice: each bot's desk shows what it's doing, and the signs mean a draft is waiting for you.

Personal project · Oct 2026 · live

Nightshift

A night shift of AI bots for small businesses. While the owner is off, the bots read the inbox, flag what matters, draft replies, chase invoices, follow up on leads and do research, then leave a morning brief on the owner's desk. Nothing that sends an email or moves money happens until the owner approves it. It's a web app and a command-line tool, running on DeepSeek, Supabase and Vercel, with live Stripe billing at nightshiftai.ca.

## The office

The main screen is a pixel-art office. Every bot has a desk and a status you can read at a glance: typing while it works, a sign saying "2 drafts for you" when something is waiting, z's drifting up while it's idle until its next shift, a wobbling "I'm stuck." when a connection it needs is missing. The office lays itself out in balanced rows and scales to fit any window, so it never scrolls. Click a bot to see its last runs and what it's waiting on; click your desk for the morning brief and the numbered queue of cards.

The bot room is where the team works in the open: one bot hands a job to another ("@Rosa, Anika says she was charged twice"), @mentioning a bot gives it a job, and holds show who the team won't contact and why. Each bot also has its own chat, where its drafts appear inline with Approve and send, Edit, Ask for changes and Discard. On a phone it all becomes a list, an approvals screen and a tab bar.

The bots are cute on purpose. They hop with a little heart when you approve their work, the team waves when your desk is clear, the room's first day has three heads bobbing, and buying a plan ends with the whole team hopping under pixel confetti. Every animation is under a second, never blocks anything and turns off with the system's reduce-motion setting.

## Made for each kind of business

There are 424 bots to hire, most of them specialists for one of 101 kinds of business: recall and chair-filling for dentists, no-heat dispatch for HVAC, deposit chasing for caterers, intake for immigration lawyers. Each industry also gets its own cast for the five core jobs (inbox, research, billing, follow-ups, the brief), with their own names, job titles and words. A dental practice's inbox bot is "Mirela · Front desk", who answers patients, books appointments and treats tooth pain as urgent; an HVAC company's is "Dex · Dispatch", who treats no heat or a gas smell as urgent. The bots hand work to each other by those names, the brief has the industry's own sections ("Today's chairs", "Today's service calls"), the chat suggestions use its words, and the app's copy follows. Change the industry and the team takes the new names, except any the owner renamed.

## Nothing goes out without your OK

Every tool has a risk class. Quiet tools (reading, flagging, labelling, drafting) just run. Message tools (sending an email) turn into a card the owner approves, unless they've told that bot it may send on its own. Money tools (invoices, credit notes) always wait, whatever the setting. Approving starts an 8-second undo, then the card goes out.

  • Every approval step is a guarded move: it only happens if the card is still where it was, so undo can't race the send and nothing goes out twice.
  • Money is checked three times (when the bot drafts it, when the owner edits the card, before it runs). A credit note can't exceed its invoice, and approving money needs the authenticator step on every path, including "Approve all" and the CLI.
  • Before anything outward, a guard checks the do-not-contact list, any holds (a client disputing a bill pauses their reminders) and a weekly cap on follow-ups. It also refuses recipients that could smuggle in a hidden Bcc.

## How the bots work

Every bot runs on DeepSeek with native tool calling: Flash for the everyday work and Pro for the big write-ups. Each one gets a system prompt built from its job, the business, the owner's settings, a shared team memory and who its teammates are, plus only the tools for what's connected (35 in all). A tick runs every 5 minutes from Supabase's pg_cron. It sends cards whose undo has passed, runs queued hand-offs, retries failed runs and starts every bot whose shift is due. It's built to survive a bad run or a slow model, and it clears anything a crashed tick left behind. Each workspace has a daily spending cap on model and search costs, and Dawn's brief arrives at the owner's chosen time by email, push and in the app.

## Connections

Gmail and Google Calendar, Outlook and Microsoft 365, QuickBooks, Xero, FreshBooks and Stripe for the books, Shopify for orders, HubSpot, Google Sheets or a CSV for leads. The OAuth apps are all set up and verified. Tokens and keys are encrypted with AES-GCM before they're stored, and refreshes are safe when two happen at once, even with providers that hand out a new refresh token every time.

## The business around it

Billing is live on Stripe: Solo, Studio and Team, monthly or yearly, with extra seats. Switching plans is prorated, cancelling happens at the end of the period, and the owner can take a cancellation back, all from inside the app. A purchase shows up even if a webhook is late, because the billing page reads the subscription straight from Stripe. Nightshift's own email goes through Resend from nightshiftai.ca: sign-in codes, the morning brief and alerts to me about payments, failed payments, plan changes and new sign-ups, all in the same design. An admin view shows every workspace, user, failed run, spend and revenue, read-only and behind the authenticator step.

The CLI signs in with a device code (the approval page shows which device and network is asking), then lists the queue, approves cards by number, follows the bot room live and gives bots jobs from the terminal.

It's covered by 479 tests. Two agent audits went through the backend and the UI, and their findings were fixed with tests to match. The screenshots here come from a showcase mode built for them: on the local dev server, the real screens fill with a made-up practice generated by the app's own server code.

  • 424bots to hire
  • 101industry casts
  • 35tools
  • 479tests passing
  • 56API routes
  • 8 sundo on every send
  • Next.js 16
  • React 19
  • TypeScript
  • Supabase
  • Postgres + RLS
  • pg_cron
  • DeepSeek API
  • Tool calling
  • Stripe Billing
  • Resend
  • Web Push
  • OAuth 2.0
  • Gmail API
  • Microsoft Graph
  • QuickBooks
  • Xero
  • FreshBooks
  • Shopify
  • HubSpot
  • Server-sent events
  • Vitest
  • Vercel
  • CLI

The practice, the patients and the people in these screenshots are made up.

Nightshift · email

Every email, in the same look

Each email has a dark nightshift bar and a white card. The bot logo is drawn with table cells, not an image, so it still shows when a mail app blocks pictures. The morning brief leads with its headline and turns the bot's notes into labelled sections and real lists. Sign-in emails carry a code that works in any browser. Business alerts lay out the details in a small table.

A tour of the yAI website, recorded on a test copy with made-up examples.
A tour of yAI Code's redesigned terminal, recorded in a real session on a made-up project.
/team building a whole desktop OS from one prompt: a replay of the real run, then the result.
yAI on a phone, recorded on a test copy with made-up examples.

Personal project · Oct 2026

yAI

A ChatGPT-style app and coding agent built on models I wire together myself: four hosted models that answer right away, a coding model on a cloud GPU that only exists while someone is using it, and a small model on my laptop's GPU.

## Models

The site is on Vercel. The default, yAI Lite (GLM-4.7-Flash on Z.ai), is fast and free, with DeepSeek V4.1 Flash behind it if Z.ai is busy. yAI Ultra Flash (DeepSeek V4.1 Flash) costs a fraction of a cent per reply, and yAI Ultra (DeepSeek V4 Pro) handles the hardest questions. Both run on DeepSeek's own API, where the repeated start of a prompt is cached and billed at a thirtieth to a fiftieth of the normal price, and everything is half price outside DeepSeek's peak hours; Kimi K3 on Modal takes over for yAI Ultra if DeepSeek is unavailable. yAI Q3.8 Max (Qwen3.8 Max, 2.4 trillion parameters) is a strong all-rounder on Modal. Anything with an image goes to free vision models instead: Gemini 3.5 Flash-Lite first, then Qwen 3.8 27B on Groq, then Gemini 3.8 Flash, each one handing over the moment its free quota runs out. Every reply's cost, at the price of whichever host answered, is added to a daily allowance per person in Upstash, so the bill can't run away, and admins can raise or lower each person's allowance.

A small model, yAI Q3.5, runs on my laptop's 6 GB GPU at up to 200 tokens per second: each question travels through a Cloudflare tunnel to a token-protected bridge in front of LM Studio, and it appears in the model menu whenever my PC is on.

It also makes images and videos on RunPod's serverless ComfyUI GPUs. Qwen-Image 2.1 creates pictures from a description or edits a photo you upload, and MiniMax H3 turns a prompt into a short video with sound. Everything goes through a safety filter and daily limits. Accounts, saved chats, images and videos are stored in Upstash Redis, so everything works even when my PC is off.

## The web app

The site has its own design with matching light and dark modes: warm neutrals, Geist type and one purple accent, and a sidebar that folds into a rail. On a phone it becomes an app that opens on the logo, with Chats, Projects and You tabs, bottom sheets for the model and the tools, and swipe-back navigation. A Search button looks the question up on the web, reads the top pages, and answers with numbered citations that link to each source. Projects keep files, PDFs and instructions together, so every chat started in one already has them. HTML, SVG and JavaScript in an answer open in a live preview that runs in a sandboxed frame. When a picture explains it better, answers include diagrams (flows, sequences, timelines) and charts drawn from the numbers, each with a table view and a download button. A usage page shows each person their messages, images, videos, searches and spend on the hosted models against the daily limits.

Deep research plans several searches, reads up to about fifteen sources over two rounds and has yAI Ultra write a cited report. Data analysis loads a CSV, Excel or JSON file into Python (Pyodide) right in the browser, so the file never leaves the device; the model writes pandas code, it runs there, and the charts appear under the answer. Memory keeps lasting facts you mention and lets you edit them. Voice mode takes dictation, reads any answer aloud, and holds a hands-free conversation. The canvas opens long writing and code in an editor beside the chat, with versions, "select a part and ask yAI to change it", and live HTML, JavaScript and Python runs. Ctrl K searches every saved chat and jumps to the exact message.

Answers can also call connected services for live, exact data: the weather, maps and directions, stock and crypto prices, sports scores, Wolfram Alpha, arXiv and Semantic Scholar papers, YouTube transcripts, your GitHub repositories and issues, UWaterloo LEARN due dates and course info, and webhooks to Discord, Slack or n8n. Live results show as cards, and watchers send a notification when a price drops or a page changes.

For school there's a study mode that tutors with hints and questions instead of answers, and a Study page that turns notes, a PDF or a chat into flashcards with spaced repetition and practice quizzes, with short answers graded by the model. A calendar and email tool reads a connected Google account and suggests Gmail drafts and calendar events as cards that are only saved when you press the button. Made images get an Edit button, one-tap edit ideas and a before/after slider, and the whole site installs as an app on a phone or laptop. Scheduled tasks run a prompt on their own every day, on weekdays, weekly or once (a morning news briefing, say), save the answer as a chat and send a notification to the phone.

Around it I built the parts a real service needs: an OpenAI-compatible public API with personal keys, counted against each person's limits; an admin People page with everyone's usage, per-person limits, account pausing and automatic flags for unusual use (bursts of requests, the same message over and over); and a What's new page where every release is numbered by its build.

## yAI Code

yAI Code brings the same models to the terminal: a coding agent like Claude Code that signs in with your yAI account and works inside your project folder. It reads and searches the files, edits them in place, and runs shell commands to build, test and lint the code. By default it asks before every file change and command, so nothing happens until you approve it. On DeepSeek it calls its tools natively, and it never reads the same lines of a file twice when they're still in front of it.

It also gets a model of its own: yAI 3 Coder (Qwen3 Coder 30B), a coding model with a 64K-token context and the one model still on a dedicated GPU. It runs on a 48 GB L40S on Modal with vLLM, keeps its weights on a Modal volume so a cold start loads them instead of downloading them again, and shuts down to zero when idle. It's a mixture-of-experts model that uses only 3 billion of its 30 billion parameters for each token, so it's quick for its size.

I benchmarked it inside yAI Code on six small Node.js tasks: fixing bugs, writing an LRU cache and an async retry helper from empty stubs, rewriting a CSV parser, and adding features across two files. Every task starts with failing tests, and the score is how many pass afterwards. yAI 3 Coder passed all 44 without touching a test file, and the simpler tasks took about 20 seconds each.

  • 44/44tests passed
  • 6/6tasks solved
  • 0test files changed

It has three permission modes: ask prompts before any edit or command, auto-edit applies file changes automatically but still asks before running commands, and plan is read-only, so it explores the codebase and proposes a step-by-step plan without touching anything. You can @-mention specific files to point it at the right place, and each project folder keeps its own saved conversations, so picking up a project later resumes right where you left off.

It also handles the rest of the coding loop. /fix runs the tests and keeps fixing the code until they pass, and /fix watch reruns them on every save. /review has a second model review the uncommitted changes, and /commit writes the message and commits. It can see, too: /look screenshots the page on desktop and phone for a design review by a vision model, an @-mentioned mockup image becomes something the coder can build from, and /showcase records a demo video of the page. In /duo mode two models work together, one planning and reviewing while the other writes the code; /tutor gives hints instead of finished solutions, /share publishes a session at an unlisted link, and /undo reverts its last edit.

It runs as a full-window app so you always know what it's doing, what it needs and what you can press: a header on top, the conversation in the middle with the plan in a panel beside it, and the input box and keys at the bottom. A status pill says Ready, Working, Finished or Needs attention, approvals say what a command does and how risky it is and take a single key, and a finished task ends with a summary of tests, files and cost. It searches the web when it needs documentation, runs dev servers as background tasks, connects to MCP servers, and comes as a VS Code extension that opens every proposed edit as a diff. yai remote sends a task from my phone to my PC, and /clone rebuilds a page from a screenshot or a URL, then compares its result with the original and fixes the differences.

## /team and /crew

/team runs a whole team of agents. A lead model splits the task, a researcher looks up what a great version needs, an architect writes a contract of every shared name and a skeleton of every file, and up to eight builders work at the same time, each owning a feature. After them come a merger, yAI's own browser checks (it opens the page, gets past its menus, measures the frame rate, checks phone sizes and plays games for 30 seconds), a single QA agent, a fixer working from one merged to-do list, and a spec checker that scores the result against the request. A judge plays it, and the next round improves on what it saw, with a pause between rounds to try it yourself and say what to change. A watcher reads every agent's steps every 20 seconds, keeps their to-do lists accurate and redirects one that's going round in circles. A live board shows each agent's step, time and cost, and every run ends with a report page: a replay of the board, the score, screenshots, and a table of where the time and tokens went.

/crew came out of what /team taught me: on a game, one agent that holds the whole picture beat a team of builders working apart. So in /crew a single main builder builds the whole project itself, checking the page as it goes, and commissions helpers for the separate jobs (level data, sprites, sounds, tests, research) on yAI Lite or Ultra Flash; they work at the same time and report back to it. The same checks, fixes and rounds run after it. In the video, /team's fourteen agents built a Windows 95 style desktop with six apps from one prompt.

  • JavaScript
  • Node.js
  • CLI agent
  • Multi-agent
  • Vercel
  • Modal
  • DeepSeek API
  • Z.ai GLM
  • Gemini API
  • Groq
  • Qwen3.8
  • Kimi K3
  • RunPod
  • vLLM
  • ComfyUI
  • Upstash Redis
  • MCP
  • VS Code extension
  • Headless Chrome
  • Pyodide
  • OpenAI-compatible API
  • PWA
  • Cloudflare Tunnel
  • LM Studio

yAI is invite-only. The hosted models answer right away; yAI 3 Coder, images and videos can take a minute or two to start after a quiet stretch while their GPU wakes up.

yAI /crew · demo

Blockcraft

$ /crew "make a minecraft replica"

A Minecraft-style voxel game in plain JavaScript and WebGL2, with no libraries: procedural terrain with water, beaches and trees, block breaking and placing, a hotbar, a day and night cycle, sounds made in code, and a world that saves. yAI's /crew built it from that one prompt.

  • 17m 37sprompt to playable
  • $0.28total model cost
  • 3,192lines of game code
  • 11JavaScript files
  • 5agents building
  • 60 fpsin the browser

## How /crew built it

  1. Research. A researcher agent searched the web for what a great Minecraft replica needs and wrote the checklist the run was judged against.
  2. One main builder. A single agent on yAI Ultra Flash owned the whole game: the world, the mesher that turns blocks into triangles, the WebGL renderer, the player and the main loop.
  3. Helpers on the side. While it built the core, it commissioned four helpers that worked at the same time: block textures drawn in code, sound effects, terrain generation, and the block registry (on the free yAI Lite).
  4. Checks. yAI opened the game in a real browser, played it for 30 seconds, measured its frame rate, and a QA agent reviewed it like a player.
  5. Fixes. A fixer worked through what QA found, and yAI re-ran the checks after it.
  6. A watcher read every agent's steps every 20 seconds and stepped in when one went round in circles.
  • yAI /crew
  • Multi-agent
  • WebGL2
  • JavaScript
  • Procedural generation
  • Web Audio
  • DeepSeek V4.1 Flash
  • GLM-4.7-Flash

Personal project · Oct 2026

Picked

More people now ask ChatGPT or Gemini "who's the best dentist near me" instead of searching. Picked shows a local business whether the AI assistants recommend it, why or why not, and what to fix.

## How a scan works

  1. Look it up. Google Places finds the business (or Claude with web search when there's no Places key): address, hours, reviews, website.
  2. Ask like a customer. Claude Haiku writes ten questions a local customer would really ask.
  3. Ask every engine. Each question goes to ChatGPT and Gemini with live web search, the way customers see them.
  4. Read the answers. Haiku marks whether each answer picked the business and who it picked instead; code double-checks every match.
  5. Score in code. The score, the competitors and their review counts are tallied by code, not by a model.
  6. Explain. Claude Sonnet writes the summary, three reasons and three fixes from those facts only.

Progress streams to the browser line by line as each answer comes in. A Fixes page turns the advice into a checklist, and reports, email review requests and Stripe checkout are wired in.

  • Next.js
  • TypeScript
  • Claude API
  • OpenAI Responses API
  • Gemini grounding
  • Google Places
  • Streaming NDJSON
  • Stripe
  • Resend

Personal project · Oct 2026

UnitPilot

Connect a GitHub repository and get back a pull request full of real unit tests, with a report: coverage before and after, and the bugs the tests turned up.

## How it works

You sign in with email and password, connect GitHub, pick a repository and a testing preset (full, bug hunt, critical paths, safety net, security or quick). The server starts a Vercel Sandbox, an isolated microVM, clones the repo there and runs Claude Code headless with a prompt that writes tests, runs them and keeps going until they pass. When it finishes, the tests are committed to a new branch and a pull request opens with the agent's report as its description.

Before every run it shows a price estimate, so nobody is surprised by the bill. People can bring their own Anthropic key (kept only in an encrypted cookie), and a run keeps going and shows its live output even if the page is reloaded.

  • Next.js
  • TypeScript
  • Claude Code
  • Vercel Sandbox
  • GitHub OAuth
  • GitHub API
  • Supabase Auth
The DeepSeek Worker desktop app: every delegated run, tokens, spend and the estimated savings against Claude

Personal tool · Oct 2026

DeepSeek Worker

A local MCP server that lets Claude Code hand coding work to DeepSeek. Claude plans the change and checks the result; DeepSeek reads and edits the files and sends back only a summary and the list of changed files, so the expensive model spends far fewer tokens.

## What Claude gets

  • deepseek_task: DeepSeek works through a brief with file tools (read, list, search, write, edit, and commands only when allowed), confined to the project folder.
  • deepseek_ask: a one-shot question with files attached, no file access.
  • deepseek_usage: calls, tokens and spend from a local usage log.

Safety comes first: every path must stay inside the project, and .git, .env files, keys and credentials can never be read or written, so they're never sent out. A Claude Code skill, /deepseek-delegate, holds the plan-then-delegate routine.

It comes with a small Windows desktop app written in C# and compiled with the compiler built into Windows: enter the key and prices, test the connection, see the balance, every run, the spend and the estimated savings, and estimate a run before starting it.

  • Node.js
  • MCP
  • DeepSeek API
  • Claude Code
  • Tool calling
  • C#
  • WinForms
NIMBUS editor showing staffing rows and a live project summary with billing, COGS and margin

Normative · 2026

NIMBUS

A profitability modeling tool. You enter a project's staffing, and billing, costs, margin and profit update as you type. Rates come from backend rate cards.

  • React
  • TypeScript
  • tRPC
  • Prisma
  • PostgreSQL
Wearable ESP32 motion detection device in a 3D-printed enclosure with battery pack on an elastic strap

Project · Sep 2025 — Jan 2026

Patient Motion Detection System

A wearable ESP32 device that classifies patient movement from accelerometer and gyroscope data, to help flag fall risk and movement patterns associated with delirium.

  • C++
  • ESP32
  • Python
  • Bluetooth
  • Signal processing
download firmware

04// skills

Technical skills

languages:

  • TypeScript
  • JavaScript
  • SQL
  • Python
  • C++
  • Java
  • Kotlin
  • Verilog
  • HTML/CSS

frameworks:

  • Node.js
  • React
  • Next.js
  • tRPC
  • Prisma
  • Material UI
  • Tailwind CSS
  • LangChain
  • LangGraph

infrastructure:

  • PostgreSQL
  • Supabase
  • Redis
  • Vercel
  • n8n
  • REST
  • GraphQL
  • Webhooks
  • Git
  • GitHub Actions
  • Docker

// education

University of Waterloo

Bachelor of Applied Science, Electrical Engineering · Expected 2030

4.00GPA

05// contact

Get in touch

I'm looking for co-op and internship roles in software, automation and embedded systems. Email is the best way to reach me.

$ mail yousefkkamel@gmail.com