Building autonomous AI that works while I sleep. Full-stack with Python, React and FastAPI — six agents, zero cloud bills, self-hosted on bare metal in Toronto.
A self-hosted multi-agent AI system running 24/7 on a Lenovo M720Q in Toronto.
Every retrieval pipeline in Groot ships with eval scores. Here are the real numbers.
// BUILD LOG
From a blank Ubuntu install to a fully autonomous 6-agent AI system. Every milestone is real.
Started as an idea and a deliberate learning exercise. Read up on LangGraph, Ollama and ChromaDB, gathered feedback on what an assistant would actually need to do day to day, and narrowed that down to the business problems worth solving. Settled on local-first with zero cloud dependency, then scoped the hardware to match: a Lenovo M720Q (i5-8500T, 16GB).
Ubuntu 22.04.5 LTS bare metal. LUKS full-disk encryption. WiFi driver (RTL8852BU). Tailscale VPN. First Ollama model running.
FastAPI agent service. Groot supervisor routing to qwen2.5:7b. ChromaDB setup with 6 collections. Basic RAG pipeline working end-to-end.
Custom asyncio priority queue with RAM headroom validation. Hybrid RAG: BM25(40%) plus Dense(60%). Real retrieval quality improvement measured.
Adzuna Canada API. ATS-optimized resume tailoring. PDF generation via reportlab. Telegram delivery in under 60 seconds.
guardrails-ai: PII detection, prompt injection blocking, toxic content filter. Ragas evaluation: Faithfulness 1.000. 20-test red-teaming framework.
6 agents live. 7 models, 36GB. n8n workflows. Notion nightly diary. React dashboard with 12 pages. Supervisor loop runs hourly. 4,190+ hours and counting.
If you only read one thing, read these three. Each one maps to a role I'm targeting.
6-agent LLM platform running 24/7 as 4 Docker services — FastAPI backend, ChromaDB, n8n and a React dashboard with streaming chat, auto-started by systemd.
Two-system design: fast typed judgments route and guard, an LLM answers with citations, and every dollar figure is computed in deterministic Python — never by a model.
Daily NYC taxi batch into a Snowflake star schema with dbt marts, a quality gate that quarantines bad rows without halting the load, and a parallel Glue/PySpark path to Redshift.
Every project above with the metrics, plus education, certifications and the IEEE paper.
Production-minded projects — tested, evaluated, and mostly still running.
A self-hosted AI platform running 24/7 on a Lenovo M720Q — no GPU, no cloud bill. A LangGraph supervisor routes every request to one of five specialists, each on a model picked to fit CPU-only inference and a 16GB memory budget. Retrieval is hybrid BM25 + dense across six access-controlled ChromaDB collections, guardrails validate every output before it leaves, and an asyncio scheduler checks free RAM before each inference so the box never OOMs.
Four Docker services under systemd · React dashboard · Slack, Telegram and n8n as front doors · full case study on the site
Daily NYC taxi pipeline into Snowflake behind a 12-check Great Expectations gate that blocks bad batches and quarantines bad rows, with idempotent loads, dbt marts, and a FastAPI + Streamlit health dashboard. A parallel Glue/PySpark job models 3.07M trips into a Redshift star schema.
Health-insurance assistant that answers coverage questions with citations to plan sections and flags claim-rule violations. Fast typed judgments route and guard every request; limits and dollar amounts are computed in plain Python, never by a model.
C++17 simulator built around one safety invariant: two trains never hold the same block. Dijkstra route planner, interlocking logic, PID speed control, and a traceable event log for every decision.
Stateful data-analysis assistant with conversation memory. 74 tests, full CI pipeline.
Structured-output resume screening with schema-validated LLM responses behind a FastAPI service.
Adversarial test harness for LLM pipelines — 20 attack tests plus Ragas scoring at 1.000 faithfulness.
Natural-language querying over relational data, powered by qwen2.5-coder:7b with schema-aware prompting.
Turns free text and PDFs into Pydantic v2-validated JSON across 3 document types. A keyword classifier types each doc in under 10ms and only calls the LLM below 60% confidence.
Loan-default model on the German credit dataset — logistic regression and decision trees tuned with GridSearchCV over WoE/IV-encoded features. SHAP beeswarm and waterfall plots explain every decision, served through a Dockerised Streamlit app for risk analysts.
Peg solitaire on the classic 33-hole board, with hints from a solver running in an inline Web Worker and a shared family leaderboard. One self-contained file, no build step, no dependencies.
Working on the AI job recommendation feature for Gaddr Jobs, a React and TypeScript product with Better Auth, Stripe and PostgreSQL behind it.
Translated data-ingestion requirements into AWS ETL workflows across S3, Glue and Lambda for semi-structured datasets, including the transformation and validation rules.
Designed and operate a 6-agent AI system with hybrid RAG and thermal-aware load scheduling. Enforcing output quality with guardrails-ai, measuring it with Ragas, and automating everything else with n8n.
Open to Full-Stack AI · Data Engineer · ML Engineer · LLMOps roles · Toronto 🍁