WilliamLabs

I am William. I founded StudyHub and built it myself. Most of my work sits between models and the systems they need to reach: MCP servers, retrieval, real time data pipelines, and native apps for macOS and Android. Eleven projects are listed below, four of them live.

Studying
MSc, Machine Learning and Statistics
Focus
AI infrastructure and tooling
Founded
StudyHub, live
Ships to
Web, macOS, Android

StudyHub

studyhub.se
The StudyHub landing page: a course code search box under the headline, pass with minimal effort.
  • 01Every course is backtested against a real exam it has never seen. If the plan does not clear the pass mark, the course is not published.
  • 02When enough students have sat the exam, how the forecasts actually landed is published, including the times they were wrong.
  • 03Results are shown as intervals, never as a single number, and nothing in the product is described as guaranteed.

StudyHub. My own product, still running. live

Type a course code and StudyHub already knows the exam. Past exams are analysed task by task, a diagnostic skips what you have already proven, and what comes back is a plan counted in hours to a pass rather than chapters to read. If you fall behind, the plan reschedules itself.

Every topic is taught in the same eight steps, in the same order: guess first, then the core, the picture, a worked example, your turn, your own problem, how the exam actually asks it, and a checkpoint. Around that sit a repetition queue, mock exams, a Panic Mode for the last days, and an assistant that answers from your own course material and points every answer back to its source. It maps to a university course from the course code alone.

One rule governs publishing: every course is backtested against a real exam it has never seen, and if the plan does not clear the pass mark, the course is not published. That has already blocked courses. I wrote the product, the backend, the billing and the support replies.

  • TypeScript
  • Python
  • Retrieval
  • Billing
  • Postgres

Selected work

10 projects
A dark map of Stockholm covered in coloured vehicle markers, a delay heatmap and a live service events panel.

01

National Transit Tracker live

Swedish public transport, trains through ferries, moving on one live map.

One map that ingests public transport feeds from across the country and keeps them moving in real time. Rendering the map is the straightforward part. The harder part is that feeds arrive late, out of order, and sometimes not at all, and vehicles disappear and reappear mid journey.

  • TypeScript
  • Real-time feeds
  • Time-series
  • Map rendering
Several overlapping case windows on a simulated investigator desktop, above an aerial photograph of a small town.

02

PolisOS live

A fictional criminal investigation, played entirely inside a simulated workstation.

The whole game is an operating system. Seven window programs open at once, dragged around a shared desktop, tables of nine thousand rows to filter and mark up, and two documents side by side while you work out which one is wrong. There is no mobile build, because a version that fits a phone would be a different game.

  • TypeScript
  • Desktop simulation
  • Large data tables
  • Postgres
A portrait rendered as dense pen hatching, beside the plotter that drew it.

03

PenPlot Studio

Turns a photograph into a pen drawing, then makes a 3D printer draw it.

Clamp a pen into the tool holder of a cheap 3D printer, connect over USB, and this turns photographs, drawings and PDFs into plotted line art. Swap the pen for a blade and it cuts stencils instead. Drop an image in and it is ready to go, because the tonal range is read straight off the histogram. An optional 232 KB face detector, YuNet from the OpenCV Zoo, spots portraits and switches to hatching that follows the form of the face.

  • Python
  • Computer vision
  • G-code
  • Marlin
  • Klipper
  • GRBL
The Awake window, showing status, the lid and display assertions, and whether the assistant is running.

04

Awake

A 403 KB Mac utility that keeps long jobs alive when you shut the lid.

Closing a laptop lid is a hardware sleep request that no application is allowed to veto, so Awake uses the one setting macOS does expose. It asks for the admin password once, through the system authorisation dialog, and sets the flag that keeps the machine running with the lid shut.

  • Swift
  • AppKit
  • SwiftUI
  • IOKit

Also built

6
05

MCP Servers

Servers that define what a model can read and which operations it can call.

MCP / TypeScript / Python
06

Avanza MCP

A brokerage account as model callable tools, with the dangerous ones gated.

MCP / Python / Docker
07

Studium AI

A study assistant that reads your actual course material, not the public internet.

Python / RAG / Browser extension
08

GPS Studio

A mock location tool for Android with routes, speed control and a floating joystick.

Kotlin / Android / OpenStreetMap
10

Rad-O-Meter

A Geiger counter that measures nothing, in 32 kB.

Kotlin / Android / Audio

Expertise

9 areas

Tooling for AI

Designing the tool surface a model calls: schema design, auth boundaries, rate limits, and deciding which operations to expose at all. Servers over brokerage data, market data and course material, plus a converter that turns an existing REST API into a working MCP server.

  • MCP
  • JSON Schema
  • TypeScript
  • Python

Retrieval

Retrieval over private course material behind a login, so answers cite the source rather than the model's own knowledge. The timetable is indexed alongside it, so an answer can reference an upcoming deadline.

  • RAG
  • embeddings
  • Python

Real time data

Handling feeds that arrive late, out of order, or not at all. Continuous per line delay across a national transit network, plus free text incident reports matched onto a fixed topology. The same problems appear in network telemetry.

  • streams
  • time series
  • TypeScript

Products, end to end

Founded StudyHub and built all of it: the product, the backend, billing with one time passes and a subscription, and the support replies. Scoped and built working MVPs for local companies through ArosAI.

  • Next.js
  • Postgres
  • billing

Native platforms

A 403 KB macOS utility in Swift and AppKit that never polls and ships no image assets, and Android tools in Kotlin, from a mock GPS with a floating joystick to a 32 kB toy built around getting its click timing right.

  • Swift
  • AppKit
  • Kotlin
  • Android

Vision and machines

Photographs turned into plotted line art: twenty two drawing techniques, stencil bridging, and G-code for nineteen machine profiles across four firmware families, tested in simulation before anything is sent to the machine.

  • computer vision
  • G-code
  • firmware

Knowledge graphs

Designing an RDF and SPARQL entity model that links separate data sources into one queryable graph, and taking that model through engineering review before it went in.

  • RDF
  • SPARQL
  • graph modelling

Integration

Building a processing and retrieval layer over several REST APIs so an inference service can answer across sources that have no shared key. Most of that work is schema design, authentication and rate limits.

  • Python
  • TypeScript
  • REST
  • RAG

Teaching

Taught programming, information systems and databases as a teaching assistant, supervised student project work, and revised parts of the course material. I have tutored maths, physics and programming for years.

  • teaching
  • supervision

Education

  • NowMSc, Machine Learning and Statistics, Uppsala University.

    Expected 2027.

  • BeforeBSc, Information Systems, Uppsala University.

    Systems, data, and how organisations use them.

  • FirstEngineering studies, KTH Royal Institute of Technology.

    Design and product realisation, then media technology, before moving into systems and data.

Writes
TypeScript, Python, Swift, Kotlin
Queries
SQL and SPARQL
Ships to
Web, macOS, Android
Spoken
Swedish and English

What I want to work on.

I want to work on the infrastructure around models in production: schema design, retrieval, and pipelines that keep running when the data is late or malformed. That is the part I keep coming back to.

I like being close to a product that people pay for. StudyHub is where I learned to backtest before publishing and to show an interval rather than a promise, including when that means not shipping at all.

Near term: finish the machine learning degree, keep StudyHub running, and take on work where AI tooling meets messy production data.

hi@williamlabs.dev

Happy to talk about AI infrastructure, MCP tooling, or anything else on this page.