Skip to content
View th3nolo's full-sized avatar

Block or report th3nolo

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
th3nolo/README.md

Manuel Parra

Forward deployed AI engineer · LLM fine-tuning · lead IC
I work with clients to put document AI and model inference into production, and I build the backend around it.
I also fine-tune and serve open-weight models on my own GPUs: synthetic data, LoRA SFT and GRPO, held-out evaluation.
Remote from UTC-4. English and Spanish. Open to senior and lead IC roles.

th3nolo.com · Engineering notes · Open-source log · CV · Hugging Face · LinkedIn


Most of my client work is private, so the results below link to case studies and write-ups. The public projects further down are code you can clone and run.

AI engineering: measured results

System Result Source
Financial document AI, Arabic and English audited statements 34% → 94% on an internal extraction and calculation evaluation. One 22-page filing in 97 s for USD 0.30 to 0.42 case study
semgate: permission gate for coding agents, TypeSafe Jev judge 0 of 47 harmful-allow base cases on a 355-case set (95% upper bound 6.2%). 83.0% of benign actions auto-allowed (95% CI 78.4% to 87.5%) evals
LangGraph RAG chat, JEV-first routing 0.981 vs 0.957 accuracy on 322 labeled messages note

ML and LLM fine-tuning

This is separate from the client work above. I generate training data, fine-tune open-weight models with LoRA (SFT and GRPO), evaluate them on held-out splits, and tune inference on my own GPUs. The weights, data and code are public.

Work Result Links
TabCrew: Qwen3.5-0.8B LoRA that groups browser tabs. SFT on 3,030 synthetic sessions, 1 epoch on one RTX 3080 Held-out test: 369/369 valid JSON, 332/369 (90.0%) exact grouping. p50 2.21 s per session model · code · note
SFT vs SFT + GRPO baseline on 705 sessions 55.6% vs 54.3% exact grouping on 81 validation sessions: the short GRPO stage gave no reliable gain. The later 3,030-session SFT run reached 95.1% on the same 81 sessions model
Training-data repair (continued LoRA SFT) Valid plans 1/81 → 75/81, strict pairwise F1 0.01 → 0.88 on 81 development cases note
Synthetic data pipeline: an author model writes each session, a blind regroup keeps only sessions where both groupings agree 4,471 sessions with per-teacher provenance. Local Qwen3-4B-AWQ on SGLang: 185 → 274 tok/s after raising the KV pool from 8K to 16K tokens dataset · recipes
GLM-5.2-504B on 8× RTX PRO 6000 (vLLM, SM120) 240K-token context after a sparse-attention layer fix note

All TabCrew models and data: Hugging Face collection.

Public projects

Project What it does
semgate Permission gate for coding agents. Deterministic rules decide the certain cases, a typed Jev judge handles the rest, and every doubt goes to the human. Hooks into Claude Code, Codex, OpenCode, Gemini CLI, Antigravity, Copilot CLI, and more. 2,958 tests and TLA+ models. Host hook behavior measured with hookconf. Python
quake-reunite Search API and map for people and aid centers after the June 2026 La Guaira earthquake. Mistral OCR and Gemma 4 on Cerebras read WhatsApp lists, hospital-list photos, and PDFs, then merge duplicate people across sources. Live Python
openrouter-mcp Stateless MCP 2026-07-28 server and CLI for OpenRouter. 13 tools, 1 resource, HTTP and stdio. TypeScript
sqlbench-harness Benchmark for LLM-generated SQL on BIRD, KaggleDBQA, Defog SQL-Eval, and Spider 2.0. Treats benchmark text as untrusted prompt input. Reports accuracy, errors, tokens, and cost. Python
verifiable-exchange-demo Limit-order engine. Anyone can replay its history from signed orders, Merkle proofs, and on-chain anchors. Live demo Rust
dep-age-gate Refuses dependency versions younger than 72 hours. Lockfile audit, pre-commit hook, and GitHub Action. Python

Upstream contributions

  • My PR #85 to the OpenClaw installer was merged (commit bfc0bd9). It rewrote the Windows install checks, and three of those functions still run in the live install.ps1.
  • In hiero-sdk-js, I showed that the published @hashgraph/sdk still pulled in protobufjs 8.0.0 (GHSA-xq3m-2v4x-88gg, a remote code execution bug) after the upstream fix. The issue was closed as completed.
  • In openai/codex#34801, I traced broken image thumbnails to the desktop app fetching signed URLs without the Bearer token.
  • I also reproduced 19 bugs in Codex, Claude Code, and OpenCode. The open-source log has the evidence for each one.

Latest engineering notes

Python · TypeScript · Rust · Go · Solidity. PyTorch, Transformers, PEFT, TRL, vLLM, SGLang, FastAPI, NestJS, PostgreSQL, Docker, GitHub Actions

Pinned Loading

  1. semgate semgate Public

    Catches your AI agent doing things you never asked it to do. Built for OpenCode, Pi, GitHub Copilot CLI, oh-my-pi and Antigravity CLI.

    Python 2 1

  2. quake-reunite quake-reunite Public

    Search API and map for people and aid centers after the June 2026 La Guaira earthquake in Venezuela. Mistral OCR and Gemma 4 on Cerebras merge duplicate records.

    Python

  3. openrouter-mcp openrouter-mcp Public

    Stateless MCP server and CLI for OpenRouter (MCP 2026-07-28): use any OpenRouter model from Claude Code and other MCP clients. 13 tools, 1 resource, HTTP and stdio.

    TypeScript 14 9

  4. sqlbench-harness sqlbench-harness Public

    Benchmark harness for LLM-generated SQL (BIRD, KaggleDBQA, Defog SQL-Eval, Spider 2.0). Runs the model's SQL and the benchmark's known-correct SQL on the same database, reports accuracy and cost.

    Python

  5. verifiable-exchange-demo verifiable-exchange-demo Public

    A replayable exchange demo with signed orders, independent validation, Merkle proofs, and on-chain anchors.

    Rust

  6. dep-age-gate dep-age-gate Public

    Refuse dependency versions younger than 72 hours: lockfile audit, install-time wrappers, pre-commit hook and GitHub Action for npm/pnpm/bun/yarn, pip/uv, cargo, Gradle/Maven

    Python 1