Akshay Gujjula

Jan 2026 – presentStarted at HackLondon 2026

StudyCanvas

A spatial AI study workspace. Highlight a passage, ask about it, and the answer becomes a node you can branch, quiz yourself on or turn into flashcards.

students using it weekly
10
tools on one canvas
23
lines of source
228k
commits since February
2,138
A StudyCanvas workspace: a binary search handout as a PDF node in the middle, with highlighted lines explained in linked answer nodes, each carrying a confidence slider set to Solid or Mid, plus a page summary, a flashcard, a marked AI quiz and a minimap coloured by confidence.
The live product: one handout, the questions it raised, and how well each answer has stuck.
Exam Room: a timed mock paper in StudyCanvas with a question navigator, the countdown in the status bar, and questions tagged as targeting the student's gaps.
Exam Room writes a timed mock paper from your past papers, aimed at your gaps.
Blurt: close the book, say what you remember, and it marks you against the lecture.

AI chat collapses learning into one scrolling column. A useful answer might come from one line of a PDF, lead to three follow-up questions, become a flashcard and later a mock-exam topic, and a transcript loses all of that structure. StudyCanvas keeps the source and the reasoning on the same infinite canvas.

A highlight sends Claude Haiku 5.5 the exact selection, its page context and the parent answer, and the response streams into a linked node. Gemini still handles voice, images, web search and scanned pages, and takes over for text if Claude is ever unavailable. Every in-flight request owns an AbortController, so closing a node cancels the work and settles what has arrived into something readable. Python runs in the browser through Pyodide, so the server never executes a student’s code. Workspaces are local-first: a real folder through the File System Access API, with IndexedDB where that isn’t available.

Every answer, quiz, flashcard and summary carries a confidence slider from Lost to Perfect, and the rating fades over time to decide what comes back first. Blurt tests recall with the book closed: you say what you remember, it maps your words onto the lecture’s key ideas, and it marks what you missed.

Ten students use it every week, including the students I tutor.

1st of 20 teams, Work in Fintech AI Summit (1,300+ applicants)Aug 2026 – present

Moneywell Town

A browser game that teaches UK teenagers how money works, from interest and tax to credit and scams. Built in a week by a team of 6, it placed 1st of 20 teams.

faster tile updates
2.5×
end-to-end frame rate
+53%
illustrated lesson pages
144
build-time checks
6,530
The town overworld with Northwell Bank, the fountain and the noticeboard
Play on moneywelltown.com

The town. Each topic is taught by someone who lives here.

Press A or the D-pad to look around. Play runs the real tutorial right here.The game plays with a keyboard, so open it on a computer.

You learn a topic from someone in town, then walk into the outskirts where creatures quiz you on it. The four answer buttons are the four move slots, so the quiz is the battle. Every question carries a required explanation, so the teaching moment appears whether you get it right or wrong.

Answers feed a five-box Leitner scheduler on 1, 3, 7, 14 and 30 day intervals. A wrong answer drops a question by one box, so a single slip never wipes out a month of progress. A correct answer only promotes a question that was actually due, so “mastered” has to be earned across weeks of reviews.

We were a team of 6, selected from 1,300+ applicants, and I owned the rendering pipeline. The town is a custom 2D tile renderer. Moving ambient updates across the 792-tile world out of React’s render cycle and into CSS made tile updates 2.5 times faster, and end-to-end frame rate rose 53% once camera, movement and input scheduling were rebalanced.

We are taking it to Web Summit Lisbon in November as an ALPHA startup.

Sept 2026 – present

RayNeo Spatial

A head-tracked Windows desktop for RayNeo GT glasses. An optional magnetic heading lock reduces drift in its floating monitors.

yaw drift removed over a 22-minute worn session
~20°
less on-screen text jitter
6×
synthetic test scenarios, plus recorded on-head sessions
19
screens in any layout
1–8

Scroll or move the pointer to turn your head

Three Windows displays held still in space, as the glasses see them. The code on the left is the project's own quaternion maths.

The glasses stream gyroscope, accelerometer and magnetometer readings at 476 Hz over raw HID. I decode them, calibrate the sensor-to-head orientation and estimate pose with a Madgwick fusion filter, written from scratch, that adjusts gyro bias only while the head is at rest. A separate magnetometer calibration enables a slow heading lock: it corrects yaw drift against the local magnetic field and rejects sudden disturbances. Pitch and roll still come from inertial fusion. Together they remove about 20° of yaw drift over a 22-minute worn session and cut on-screen text jitter 6×. Every change to the filter is checked against recorded on-head sessions and 19 synthetic scenarios. A Direct3D 11 renderer places each screen at its own yaw, pitch, roll and distance. The default is a three-screen arc at −45°, 0° and +45°.

The screens are real Windows desktops. Virtual monitors from the Parsec display driver are captured with DXGI Desktop Duplication, with a GDI fallback, so any app you drag onto them works. A native dashboard edits layouts, recentres the view, controls a soft reading hold, per-screen dimming and night tint, and shows device and engine diagnostics.

Dec 2025 – presentStarted at the AI Ventures Hackathon, Imperial

UnDiffused

A privacy-first Chrome extension that estimates whether an image is AI-generated, entirely on your device, and shows its working.

AUROC on 400 unseen pairs
0.954
INT8 model, 3.55× smaller
24.9 MB
per image, on-device
0.7–0.9 s
forensic tools
10
The UnDiffused panel open over a generated photo of a coastal golf course. It reads Likely AI generated, with 99% confidence, above buttons for a reverse image search, a deep scan and forensic tools.

Measured AUROC on 400 unseen, content-matched pairs

AUROC 0.954 on clean images, and between 0.948 and 0.958 under JPEG compression, resizing, WebP conversion and screenshot recapture, on an axis from 0.90 to 1.00 0.9540.900.951.00

Clean imagesAfter JPEG, resizing, WebP or a screenshot

On your device

A 24.9 MB INT8 model runs in WebAssembly inside the extension. The image never leaves your browser, and when the model is unsure it says so instead of guessing.

The shipped extension, run on a generated image from its own evaluation set.

The first model the extension shipped performed at chance. Its replacement looked better until I caught it learning a dataset shortcut. So I rebuilt the evaluation around content-matched pairs, where each real image has a generated twin of the same subject, before trusting any number.

The shipped detector is a fine-tuned DINOv2-S/14, quantised to INT8 and run through ONNX Runtime Web with WebAssembly. It scores 0.954 AUROC across four diffusion models, holds between 0.948 and 0.958 under JPEG compression, resizing, WebP conversion and screenshot recapture, and abstains when it is unsure. Ten interactive forensic tools sit behind every verdict so you can check it yourself.

Optimising

Making agents do less.

Most evenings go on making AI tools use fewer tokens, fewer steps and less time, and measuring whether it actually worked.

Coding harness · Pi, with DeepSeek V4.1 Flash · Not public yet

tasks passed, both versions
96/96
fewer tool calls
23%
slower at the median, so far
0.6 s

Stock Pi

3
4
5
6
7+

My profile

3
4
5
6
7+
Tool calls per task over 96 matched tasks each. One dot is one task.

A leaner coding harness

Pi is an open-source coding agent. I built a DeepSeek profile for it that pins the model and stops it re-checking code that already passes its tests. Both versions solved every task; mine took fewer steps. The median task is still slightly slower, and that is what I'm working on now.

Browser agent · Jev-BUA · Public on GitHub

model calls, first run → replay
55→0
model cost, first run → replay
$0.0119→$0
tests passed, both runs
5/5
First run55 calls · $0.0119 · 5/5
Recorded replayno model calls0 calls · $0 · 5/5
StudyCanvas · recorded 30–31 Oct 2026 · 5 tests · model cost only. Recorded results.

A browser agent that checks its work.

Jev-BUA · Plain-English browser testing, built on TypeSafe's Jev.

I built Jev-BUA to turn plain-English goals into browser actions. It picks from the controls on the page, checks the result in code, and records verified steps for replay. When a recorded step stops matching, Jev takes over that step.

On StudyCanvas, five tests passed with 55 model calls on the first run and none on replay.

Jev-BUA on GitHub

I also keep jev-knowledge, a reference any coding agent can load to build with Jev without redoing the research.

Hackathons

Weekends with a deadline.

Most of my projects started at a hackathon. These are the ones worth showing, and how they placed.

  1. NightWatch{Tech: Europe} Agentic AI Hack × Google DeepMindBuilt and demoed

    A shop looks healthy but has started charging customers twice. NightWatch holds checkouts, races three candidate fixes in isolated Modal sandboxes, and switches on only the one the payment ledger proves correct. Built in a team of two; I owned the browser and sandbox side.

    Python, FastAPI, Pydantic, Modal, Gemini API, JevSource

  2. Moneywell TownWork in Fintech AI Summit1st of 20 teams, 1,300+ applicants

    A financial-literacy game for UK teenagers, built in a week by a team of 6. I owned the rendering pipeline. It is now a startup heading to Web Summit Lisbon.

    React, TypeScript, VitePlay it

  3. PeerReview.aiGoogle Generative UI/A2A Hackathon1 of 6 projects from 50+ chosen to present on stage

    A marking cockpit for programming assignments. Deterministic tests decide what passed, the agent renders a review interface for each submission, and a teaching assistant edits and approves every mark before feedback is final.

    Next.js, FastAPI, LangGraph, A2UI, Gemini APISource

  4. Medi-ScribeImperial × Anthropic Claude Hackathon5th of 100+ teams

    An AI pre-appointment interview that turns a patient’s symptoms into a structured timeline for their GP. Independent Claude calls run in parallel to keep the interview responsive, and acute symptoms are flagged for escalation.

    Python, Flask, Claude APISource

  5. Congress vs the marketUCL Data Science Society Hackathon1st place, Finance Track

    I led a team of three through 11,879 congressional stock trades from 172 members over five years. They beat the S&P 500 only 46.9% of the time and underperformed significantly (p < 0.001). Our Random Forest was close to random (AUC 0.571), and we reported that result as the finding.

    Python, pandas, scikit-learn, SciPySource and findings

  6. AI Tutor WhiteboardUCL × Google HackathonBuilt and demoed

    A voice-led lesson on a shared whiteboard. The AI teacher speaks, draws diagrams and asks questions, then marks the answer the student draws on the canvas.

    Next.js, Fabric.js, Gemini API, Web Speech APISource

Also built

Smaller things.

Off the keyboard

About me.

I'm a second-year Computer Science student at UCL, graduating in 2028. Alongside my degree I tutor seven A-level students in Maths, Computer Science and Python, mostly by debugging live with them until the idea clicks.

Away from the keyboard I'm usually watching Formula 1 or cricket. Both come down to small margins, and so does my favourite kind of programming: getting something to use fewer tokens, fewer steps and less time than it did yesterday.

This page, timed for youMeasured in your browser just now, rated against Core Web Vitals
  1. Server responseTiming…
  2. First paintTiming…
  3. Largest paintTiming…
  4. DownloadedTiming…
Education
BSc Computer Science, University College LondonSept 2025 – June 2028
A-levels, Southend High School for BoysSept 2023 – June 2025
Teaching
Private Tutor, A-level Mathematics, A-level Computer Science (OCR), PythonSept 2024 – present
Languages
Python, C++, TypeScript, JavaScript, Java, C, Haskell, SQL
Frameworks and libraries
React, Next.js, FastAPI, Flask, PyTorch, LangGraph, pandas, scikit-learn, ONNX Runtime Web
Tools, infrastructure and APIs
Git and GitHub, CMake, GitHub Actions, Docker, Direct3D 11, SQLite, Vercel, WebAssembly (WASM SIMD), Web Workers, Claude API, Gemini API, REST APIs, A2A, A2UI and AG-UI, Chrome Extensions API

Contact

Say hello.

Internships, collaborations, or a question about something here. Email is quickest.

Or open it in your mail app

Your message

HomeGo to
Optimising AI agentsGo to
HackathonsGo to
About meGo to
CVGo to
ContactGo to
StudyCanvasProjects
Moneywell TownProjects
RayNeo SpatialProjects
UnDiffusedProjects
OpenCode Remote ControlProjects
NightWatchHackathons
Moneywell TownHackathons
PeerReview.aiHackathons
Medi-ScribeHackathons
Congress vs the marketHackathons
AI Tutor WhiteboardHackathons
How we made "mastered" actually mean something in Moneywell TownWriting
Keeping a window still while your head movesWriting
Why StudyCanvas puts answers on a canvasWriting
The time my AI image detector scored 0.990 and I didn't believe itWriting
GitHubElsewhere
LinkedInElsewhere
Copy email addressActions

Type a question, like “has he built anything with computer vision?”

24 results. Type a question to search.