Full stack engineer — AI integration & industrial automation
Gurpreet Singh
Panesar
I build production systems that remove expensive manual work from engineering and construction firms — CAD processing, document intelligence, and on-premise LLM pipelines. Nine years across full-stack development, AI integration, and embedded systems.
9
Years across full-stack, AI integration & embedded systems
3
Production systems currently running for Metro Vancouver clients
60%
Debugging time cut by a tool built at Samsung R&D
01 — Systems in production
Three things currently running for clients
Client source code is under NDA, so these describe the problem, the constraints, and the architecture rather than implementation detail. Happy to walk through any of them in depth.
The problem
An engineering firm receives project documents through three channels — physical scans, email attachments, and direct uploads. Every document had to be opened, identified, and manually filed to the correct project folder on their server. Staff time went to filing rather than engineering, and misfiled documents surfaced weeks later during project reviews.
The constraint that shaped the design
The documents are confidential architectural drawings. Sending them to a cloud AI API was not acceptable to the client, which ruled out the obvious approach. Everything had to run on the client's own infrastructure.
What I built
A Go service that ingests documents from all three channels, reads them with a locally hosted vision-language model, extracts the project number and civic address, and files them automatically to the correct location on the firm's SMB server.
- Local inference layer. Ollama running Qwen2.5-VL on-premise. I specified and deployed the supporting GPU hardware for continuous 24/7 operation.
- Extraction reliability. Local vision models hallucinate on handwritten markups and bleed context across pages in multi-page sets. Resolving this — rather than accepting first-pass output — was the majority of the engineering effort and the difference between a demo and a production system.
- Email ingestion. Gmail pipeline with cross-mailbox deduplication using RFC 5322 message IDs and SHA-256 content hashing, so a document sent to three people in the firm files once, not three times.
- Input surfaces. A PySide6 desktop scanning application and a web upload portal, so office staff feed the pipeline without touching the backend.
- Filing logic. Built around Canadian and BC-specific civic addressing conventions, which are inconsistent enough that naive string matching fails.
Scans / email / uploads
→
Local VLM extraction (Qwen2.5-VL)
→
Dedup + filing engine
→
Firm's SMB server
Result
Documents now file themselves on arrival. Confidential drawings never leave the client's network.
The problem
A client running legacy analog phone lines had no record of customer calls beyond whatever people wrote down afterwards. Commercial call-recording products assume VoIP infrastructure they did not have, and off-the-shelf transcription handled only English — their calls are multilingual.
What I built
An end-to-end recording and summarization pipeline on commodity hardware.
- Telephony layer. Asterisk on a Raspberry Pi, bridging analog lines into a software-controllable system. A custom Python application drives call handling through the Asterisk REST Interface rather than dialplan scripting.
- Multi-device routing. Asterisk PJSIP configured for simultaneous ringing across devices, with WebRTC support.
- Transcription. Gemini API for speech-to-text across multiple languages — the capability that off-the-shelf tools could not provide.
- Summarization. Ollama running Gemma 3 locally, condensing long call transcripts into structured summaries. Kept local so conversation content stays on the client's premises.
Analog line
→
Asterisk (Raspberry Pi)
→
Transcription (Gemini)
→
Local summarization (Gemma 3)
→
Searchable record
Result
Legacy analog lines now produce searchable, summarized call records without replacing the phone system.
02 — Approach
How I work
AI-native delivery
Coding agents in the build loop, AI-generated test environments as a gate before every client release, and evaluation of model output for correctness rather than accepting it at face value. Architecture and code-quality decisions stay mine, corrected as I go.
Full ownership
For each of the systems above I handled requirements, architecture, implementation, infrastructure, deployment, and ongoing support. No handoffs.
Constraint-first design
The most interesting decisions in this work came from constraints, not features — confidentiality ruling out cloud APIs, legacy hardware ruling out VoIP products, drawing conventions ruling out naive parsing.
03 — Background
Technical background
Languages
GoPythonC/C++DartSQLJavaScript
AI / ML
Self-hosted LLM & vision-model deployment (Ollama)Gemini APIOCR & document extractionSpeech-to-textRAG pipelines
Backend
PostgreSQLREST APIsWebSocketsDockerLinuxsystemd
Frontend & mobile
FlutterReact / VitePySide6 (Qt)
Infra
CloudflareOracle CloudGPU inference hardwareSelf-hosted deployment
Domain
CAD / DXF automation (ezdxf, AutoCAD)Asterisk VoIPPCB designFirmwareIoT
Previously Lead Engineer at Samsung R&D (Tizen OS / Galaxy Watch, C++), where I built a Python log-analysis tool that cut debugging time by 60% and received Samsung's internal award for Best Automation Innovation. Before that, six years designing PCBs and writing C/C++ firmware for industrial automation.