Akshay Krishna Sirigana

Open to software, robotics & NLP co-op

Build the whole thing. Then make it respect its user.

I'm Akshay — a Computer Science co-op student at McMaster, building AI products end-to-end.

01 · Peppa, a local voice assistant

Jarvis, with nothing leaving the room.

sub-2s
voice to voice
5
on-device models
242
tests

02 · Argus, built at Mac-a-thon 2026

Know what governments need before the RFP drops.

>85%
match accuracy
<3s
responses
4
people, 3 universities

Live demo

03 · MentorMatch, product engineering · Jun–Jul 2026

Mentor matches that give reasons, not scores.

644
lines of SQL
92
files refactored
Live
mentorship platform

Marketing site

And seven more.

Off the keyboard · FIDE-rated

Your move.

You play White against a small engine that thinks right in your browser. Full rules, three levels.

Setting up the board…

FIDE CFC

Standard rules — castling, en passant, the lot. Pawns promote to a queen.

Open to co-op & internships

If your team ships, let's talk.

sirigana@mcmaster.ca

Resume LinkedIn GitHub

The 30-second version

Akshay Krishna Sirigana

Now
BASc Computer Science (Co-op), McMaster University, 2025–2029 · Hamilton, Ontario
Looking for
Co-op and internship roles in software engineering, robotics, or NLP
Experience
Product engineering at MentorMatch, Jun–Jul 2026 (two-person team, live platform) · Robotics research intern, SysIdea Lab, IIT Gandhinagar, May 2022 · House Captain, Student Council, JNS, 2024
Built
10 projects, including Peppa (16,400+ lines, 242 tests) and Argus (Mac-a-thon 2026, over 85% match accuracy)
Works in
Python, JavaScript, TypeScript, SQL, C#, Kotlin · React / Next.js, FastAPI, Node.js, Unity · LLM orchestration, semantic embeddings

01 · 2026 · Python / MLX / Ollama

Peppa

A Jarvis-style voice assistant that runs entirely on a laptop — no cloud, no API keys, no audio leaving the room.

The problem
Voice assistants ship your voice, questions, and files to someone else's servers. I wanted Jarvis-grade help with nothing leaving the machine.
What I built
Five on-device models (14B chat, 32B reasoning, coder, vision, embeddings) behind a router with five thinking modes — the deepest one plans, investigates with tools, then has a second model red-team the draft before it's spoken. Speech streams sentence-by-sentence while the answer is still generating, with barge-in interruption. For arithmetic it refuses to guess in-weights and instead writes and runs Python in a sandbox.
Outcome
Sub-2-second voice-to-voice latency, 46 tool skills, and a deterministic reflex layer that keeps it answering even with the LLM runtime fully offline.

16,400+ lines242 tests46 skills5 local models

Python 3.12 · Ollama (Qwen2.5) · MLX-Whisper · on-device TTS voice cloning · PySide6 · local RAG · sandboxed code execution

02 · Feb 2026 · Mac-a-thon · Next.js / FastAPI / Gemini

Argus

Know what governments need before they post the RFP.

The problem
Startups discover government procurement opportunities after the RFP drops — too late to prepare or shape the bid.
What we built
Monitor procurement signals in real time, match them to startup capability profiles using Gemini 2.5 Flash plus semantic embeddings, and generate personalized outreach — all visualized on an interactive Three.js globe of live global signals.
Outcome
85%+ match accuracy with sub-3-second responses. Built at Mac-a-thon 2026 with a cross-university team of four (McMaster, TMU, UofT).

>85% accuracy<3 s responseLive signalsTeam of 4

Next.js · React · Three.js · Tailwind · Framer Motion · FastAPI · Python · Gemini 2.5 Flash · semantic embeddings

03 · Jun–Jul 2026 · React / Supabase / SQL

MentorMatch

A mentor-recommendation engine that lives inside Postgres and gives students reasons, never raw scores.

The problem
Students on a mentorship platform picked mentors from a flat directory; naive match scores are either opaque or uncomfortable to show.
What I built
A weighted compatibility engine as a security-definer plpgsql RPC — normalized 0–100 scoring across admin-tunable dimensions with cached score rows. Privacy by design: no student can read the scores table; the API returns only ranked mentors with plain-language reasons. Then a zero-behavior-change modular refactor of the production portal, verified against the pre-refactor codebase, and a WCAG-AA design-token redesign.
Outcome
644 lines of SQL across 4 migrations; a 92-file refactor (+6,599 / −3,029 lines) with byte-level behavior parity. My end of a two-person product team.

644 lines SQL92-file refactorWCAG AATeam of 2

React 18 · Vite · Supabase (Postgres, RLS, plpgsql) · Deno Edge Functions · Cloudflare R2 · Vercel

04 · 2026 · Chrome MV3 / vanilla JS

ProposalPilot

A Chrome side-panel extension that turns any job post into a tailored freelance proposal — on your own API key.

The problem
Freelancers rewrite near-identical proposals all day, and most AI helpers route their clients' job posts through a third-party server.
What I built
Bring-your-own-key architecture: the browser talks directly to OpenAI, Anthropic, or Gemini — no backend at all. Reads the job post from the page (selection first, then an article-heuristic DOM walk), drafts in the freelancer's voice, and inserts the result into the reply box using the native value setter with synthetic events so React-controlled textareas accept it.
Outcome
~950 lines including tests, zero runtime dependencies, and a pure-function AI layer unit-tested in Node across all three providers.

3 providers0 backend0 dependencies~950 lines

Chrome Extensions MV3 · Side Panel API · optional host permissions · vanilla ES modules · Node test harness

05 · 2026 · Vanilla JS / Node stdlib

Duet

A collaborative planner for two people in timezones 10.5 hours apart — built from scratch with zero packages.

The problem
Shared calendars assume the same timezone, need accounts in someone's cloud, and fall over offline.
What I built
A last-write-wins merge-by-id sync algorithm implemented identically on client and server, so devices can edit offline and reconcile deterministically on reconnect. Live sync over Server-Sent Events; per-user timezone math with the Intl API, including day-boundary handling; a mutual free-time finder that intersects both schedules; and an optional AI assistant served by a local LLM.
Outcome
~6,000 hand-written lines, zero npm packages, five calendar views, atomic write-then-rename persistence.

0 npm packages~6,000 lines5 views319-line backend

Vanilla JS · Node standard library only (319-line backend) · SSE · Service Workers · Intl API · Ollama

06 · 2026 · Vanilla JS / Web Audio

Dimension Dash

A spaced-repetition study game that teaches all 94 dimensional formulae from Class 11 physics.

The problem
Dimensional formulae are a classic exam trap — 94 near-identical expressions that students usually brute-force by rote.
What I built
A custom SM-2/Leitner spaced-repetition scheduler drives six exam-aligned game modes — including a Build Lab where formulae are assembled from exponent bricks. Confusion sets are computed at runtime by grouping quantities with identical dimensions, and anchor formulae are force-surfaced first so the rest can be derived, not memorized.
Outcome
~3,000 dependency-free lines with a 94-cell mastery heatmap, JSON export/import, pre-paint theming, and reduced-motion support.

94 formulae6 game modes0 dependencies~3,000 lines

Vanilla JS/HTML/CSS · Web Audio synthesis · versioned localStorage · zero dependencies

07 · Feb 2026 · Unity / C#

Tejimola — The Blossom from Clay

A 90-minute narrative adventure bringing an Assamese folktale to life.

The problem
Regional folktales rarely make it into games; I wanted to celebrate Assamese heritage with mechanics that serve the story.
What I built
Four acts with four distinct mechanics — exploration, stealth, rhythm, and a boss battle — across a 2.5D world. Event-driven systems throughout: adaptive audio, JSON-driven branching dialogue, and a dspTime-based rhythm engine.
Outcome
A complete, playable 90-minute experience across four acts.

90 minutes4 acts2.5D worldRhythm engine

Unity · C# · event-driven architecture · AI-assisted development workflow

08 · Jan 2026 · DeltaHacks · HTML5 Canvas / vanilla JS

NeonDrift

A high-octane browser arcade runner in pure Canvas — built at DeltaHacks.

The problem
Make a browser game feel arcade-tight using nothing but the platform.
What I built
Hand-rolled physics loop and renderer on HTML5 Canvas with dynamic difficulty scaling, combo-chain scoring, and powerups — shield, magnet, slow-motion. Keyboard, touch, and drag controls for desktop and mobile.
Outcome
A consistent 60 FPS render target, cross-platform controls, and offline play.

60 FPS0 dependenciesPWACross-platform

HTML5 Canvas · vanilla JavaScript · PWA architecture

09 · 2026 · Kotlin / Jetpack Compose

Petal

An Android-native period and cycle tracker built with modern app architecture.

The problem
Cycle tracking is deeply personal data — it deserves a native, local-first home rather than an ad-funded app.
What I built
Kotlin and Jetpack Compose UI over a repository architecture: Room database with DAOs for cycles and daily fertility logs, Health Connect integration, pattern-flag insights, and an education library — 144 Kotlin files in a clean data/domain/presentation split.
Outcome
A working native app with offline-first storage and Health Connect sync.

144 Kotlin filesRoom + DAOsHealth Connect

Kotlin · Jetpack Compose · Room · Health Connect · Retrofit

10 · 2026 · React Native / TypeScript

Music Player

A full-featured streaming music player with background audio and a persistent queue.

The problem
Build a real music app — not a demo: search, background playback, and state that doesn’t reset every launch.
What I built
Expo dev-client app with debounced infinite-scroll search, full playback via expo-av with background support, a mini-player synced with the full player across screens, shuffle and repeat modes, and queue persistence in MMKV for synchronous O(1) reads.
Outcome
A standalone Android build with background audio and a queue that survives app restarts.

Background audioMMKV persistenceTypeScript

React Native (Expo) · TypeScript · Zustand · expo-av · MMKV · React Navigation