Private prosjekter
Personlige prosjekter bygget på fritiden
Norsk AI-jobbtracker
aivarsel.netlify.app ↗En fullstack webapplikasjon som automatisk sporer og analyserer AI-relaterte stillingsutlysninger i det norske arbeidsmarkedet.
Hva det gjør
- Hver morgen kl. 06:00 UTC henter en planlagt serverless-funksjon alle nye stillingsutlysninger publisert den dagen fra NAV via deres autentiserte feed-API.
- Hver stilling sendes til en LLM for klassifisering — modellen leser stillingstittel, full beskrivelse og yrkeskategori, og avgjør om rollen er AI-relatert og tildeler en type (ingeniør, analytiker, forsker, leder, konsulent).
- Resultatene lagres i en Postgres-database og aggregeres til daglige snapshots med antall, topp-arbeidsgivere og lokasjoner.
- Det offentlige dashbordet viser trendgrafer over nye AI-stillinger per dag, fordeling per rolletype, topp-arbeidsgivere, topp-kommuner og en live-feed av de nyeste aktive utlysningene.
Viktige implementasjonsdetaljer
- Feed-paginering bruker en persistent markør lagret i databasen, slik at den daglige synkroniseringen kan fortsette nøyaktig der den slapp på tvers av kjøringer.
- Stillingsdetaljer hentes parallelt fra NAVs detaljendepunkt for å hente fulle beskrivelser før klassifisering.
- HTML strippes fra stillingsbeskrivelsene før de sendes til LLM-en.
- Inaktive utlysninger flagges raskt i databasen i henhold til NAVs bruksvilkår.
- En separat pipeline-overvåkingsside gir sanntidsinnsikt i synkroniseringsstatus, klassifiseringsantall og en live-tabell over behandlede stillinger med AI-vurderinger og begrunnelser.
Teknologistabel
React
Vite
Recharts
Tailwind CSS
Netlify
Serverless Functions
TypeScript / ESM
Supabase (PostgreSQL)
Ollama Cloud API
NAV Stilling Feed API
DIY Robotarm — YOLOv8 + Hailo-8
github ↗En sanntids datasynspipeline som lar en desktop-robotarm autonomt oppdage og spore kuber ved hjelp av et egentrent nevralt nettverk akselerert av en dedikert NPU.
Hva det gjør
- Et kamerabilde behandles av en YOLOv8s-modell som kjører på en Hailo-8 M.2 NPU koblet til en Raspberry Pi 5, og oppnår 15–30 FPS sammenlignet med 1–2 FPS på Pi-prosessoren alene.
- Oppdagede kubeposisjoner mappes fra pikselkoordinater til robotens arbeidsrom-XYZ via homografi og RBF-interpolasjon, og sendes deretter som G-kode-bevegelseskommandoer til en Arduino-styrt 4-DOF-arm.
- En tretrådsarkitektur separerer bildeopptak, NPU-inferens og kommandoutsending for å opprettholde sanntidsgjennomstrømming.
Viktige implementasjonsdetaljer
- Modellen ble trent på 119 annoterte bilder (80/20-fordeling) og oppnådde 91,7 % mAP50 etter 100 epoker; konvertert fra PyTorch → ONNX → HAR → HEF for Hailo-runtimen.
- INT8-kvantisering nullet opprinnelig ut klasseskåre-hodene på grunn av mettede nullpunkter — løst ved å kalibrere med tilfeldig uniform støy i stedet for ekte bilder.
- Etterbehandling (DFL-dekoding, sigmoid, NMS) kjører på Pi-prosessoren, mens Hailo-8 håndterer det nevrale nettverkets backbone og deteksjonshoder.
- Kommandoer videresendes fra Pi til en Windows-vert over TCP, og relées deretter til Arduino via seriell kommunikasjon på 115200 baud.
Teknologistabel
Raspberry Pi 5
Hailo-8 NPU
YOLOv8
OpenCV
picamera2
SciPy RBFInterpolator
Arduino / G-kode
Python