I'm building a hiring platform for hardware engineers, contrary to hiring software engineers where there are too many options, hiring hardware engineers through provisioned testing environments lacked some good software, a good remote-assessment tool.

A MVP is live at this https://ai-eval-lab.janardan.xyz/

Github: https://github.com/janardannn/ai-eval-lab

For now, for every session, inside the docker container, i create a virtual frame buffer using xvfb and render KiCad in it. Thereafter using x11vnc to pickup the xvfb display and serve it using VNC. Since browsers cant use raw TCP connections, i am using websockify to bridge WS <--> TCP. To render the app in browser, I am using noVNC to render an iframe inside my app. noVNC opens a websocket to websockify and the frames from the container start flowing.

Inside, KiCad itself, a have added a python plugin which auto loads when KiCad is started as a background thread. After a set interval of time, it tracks all the board objects like footprints, tracks, zones etc and serialize them as a JSON and makes a POST request to the backend server for the specific session id.

For the grading and evaluation, as of now, I am using an LLM to cross check the entire sequential board activity that was sent over the duration of the assessment and grade it against a predefined rubric/score it against per-checkpoint criteria. This is entirely based on how the admin have set the assessment grading rubrics.

I am not building it as a business rather exploring the space and the technology. It was an excuse for me to learn about VNC, streaming, docker orchestration and also somewhat of AWS through its deployment.

I'm hosting it on the free AWS tier so only one session at a time. If you queued then please give it some time.

Happy to chat about anything regarding the project!