Projects

Selected engineering work. More at github.com/PieroJF.

01Core robotics

MSc Thesis · Individual project · University of Birmingham

Non-contact optical inspection machine measuring OD, ID, roundness and wall thickness of machined steel cylinders (bores from 127 mm, OD to 203 mm, length 610 mm) with automated pass/fail QC reporting.

  • GUM/NIST uncertainty budget targeting expanded uncertainty U(k=2) ≤ 25 µm against a 254 µm tolerance (U/T ≤ 10%), validated with Gage R&R
  • 160-item engineering BOM and 43-part CAD assembly with collision resolution; direct vendor engagement for laser profilers, encoders and linear drives
  • Architecture aligned to a ~US$25,000 BOM for affordable deployment in machine shops

PythonSolidWorksLaser profilersGUM/NISTGage R&RFull design withheld pending IP review — public foundations & uncertainty demos in the repo.

3D plot of the QArm end-effector trajectory during a sorting cycle, showing pick-and-place paths to three color-coded fruit baskets.

Applied Robotics · Team of 4 · University of Birmingham — my role: camera-arm calibration, fruit-detector tuning, voice control, GUI concurrency (70/185 commits)

End-to-end pick-and-place on a 4-DOF QArm with an RGB-D camera, sorting 14 fruits into 3 baskets in autonomous and teleoperated modes.

  • Analytical inverse kinematics with Newton-Raphson refinement: 0.0002 mm max round-trip error across four solution branches
  • 13-state finite-state-machine controller with cubic rest-to-rest spline trajectories and Z-height collision safeguards
  • Hand-eye calibration via closed-form Umeyama SVD; HSV + circularity classifier with pixel-to-world back-projection

Python 3.13NumPyOpenCVQuanser SDK (HIL)MATLAB/Simulink

System architecture map of the Moose navigation stack: four color-coded workstreams (robot setup, EKF fusion, 3D mapping, slope-aware navigation) with labeled data handoffs between subtasks.

Team of 4 · University of Birmingham — my role: 3D mapping & EKF sensor fusion (13/18 commits)

Mapping and perception for a Clearpath Moose 8-wheel grass-cutting robot on hilly terrain with slope hazard avoidance (>20°).

  • Wrote the Extended Kalman Filter — 6-state [x, y, z, roll, pitch, yaw] fusing GPS, IMU and compass — for drift-free localization on slopes (RMSE 4 mm)
  • OctoMap probabilistic occupancy (depth 12) with dynamic recentring, plus a 200×200 elevation grid (86.6% coverage) with slope/roughness traversability costs
  • LiDAR pipeline: range filtering (0.3–50 m), voxel downsampling (0.1 m), ICP scan matching over 4,735+ frames (800K+ points); integrated with the team's A* planner

C (2,600 lines)WebotsEKFOctoMapICP

FrED Factory Station 1: a white UFACTORY xArm 6 cobot with a Datalogic vision gripper over a conveyor, HMI panel and PLC-driven fixtures on a lab bench.

Team of 4 · Tecnológico de Monterrey in partnership with MIT

Semi-autonomous assembly station for MIT’s FrED device: cobot pick-and-place, PLC coordination, machine vision QC and a digital twin.

  • Siemens PLC (7 Ladder Logic networks): conveyor control, photoelectric sensors, robot–PLC bidirectional signaling, HMI status
  • Datalogic machine vision over a TCP/IP vision link for real-time coordinate transfer and camera-to-gripper offset compensation
  • 125.9 s measured phase cycle on real hardware (target ≤2 min)
  • Digital twin in Siemens Plant Simulation: 245 units, 41 TPH, 81.45% value-added; meets the ≤2 min/station target

PythonxArm SDKSiemens TIA PortalDatalogic visionPlant Simulation

02More work

2D environment map with start and goal poses and four rectangular obstacles, used for the state-lattice path planning comparison.

Individual project

State-lattice A* vs RRT vs PRM path planning with time-optimal trapezoidal trajectory generation for a TurtleBot3-class diff-drive robot.

PythonROS 2A*RRTPRM

CAD isometric render of the RoboDK Factory-in-a-Box XY stage assembly.

Individual project

4× ABB GoFa cobot cell assembling a custom XY stage — simulation-as-code with the RoboDK Python API.

  • Custom binary parser recovered 146 station items and 131 bit-exact poses (max element error 0.0) from the graded .rdk binary, cross-checked against the RoboDK API
  • 66 taught targets organized by task frame across the four arms

PythonRoboDK APIABB GoFa

Hotel PMS/CRM in Production

2025–present

Sole engineer · Bora Hotel Iquitos, Peru

Custom PMS/CRM running the hotel’s daily operation: reservations, multi-currency billing, finance, payroll and guest messaging. ~160k lines of code, 75 domain models, 60+ versioned migrations with zero data loss.

  • Integrations: WhatsApp Cloud API two-way inbox, OpenPay payments with automatic reconciliation, receipt OCR, regulatory reports
  • 28 scheduled automations; TOTP 2FA, Cloudflare Zero Trust, full audit logging, role-based access control

PHP 8.3MySQLJavaScriptWhatsApp Cloud APICloudflareLinuxPrivate production system.

Recepcion.app — Multi-Tenant Hotel PMS SaaS

2026–present

Sole engineer · SaaS product

Multi-tenant Laravel PMS deployed on production infrastructure: database-per-tenant isolation, per-tenant encrypted guest PII with blind-index search, electronic invoicing and regulatory reporting for small hotels.

  • 1,927 commits in 119 days — 48% of the PHP codebase is test code
  • 1,472 tests green on the last documented full run; 205 versioned migrations

PHP 8.3Laravel 12Livewire 3PostgreSQL 16RedisDockerPrivate production system.

AI Hotel Operations Chatbot

2026–present

Sole engineer · Internal operations copilot

AI copilot microservice for hotel staff in production: answers over internal documentation via hybrid RAG and acts on the live PMS through signed, schema-validated tools.

  • Hybrid RAG retrieval: pgvector (HNSW) + Spanish full-text search, fused with Reciprocal Rank Fusion
  • 16 PMS tools with human-in-the-loop confirmation for writes; hand-written Anthropic and Voyage API clients — 0 AI SDKs in composer.json
  • Prompt-injection defenses (fenced retrieved context, schema-validated tool inputs) and per-tenant daily cost budgets against denial-of-wallet

PHP 8.3Laravel 11PostgreSQL 16 + pgvectorRedisAnthropic APIVoyageAIPrivate production system.

Atenas — Cloud ERP/POS

2026

Sole engineer · Retail client project

Cloud ERP/POS for a retail SME client, built phase-by-phase: barcode inventory, tiered retail/wholesale pricing, point of sale and queued electronic invoicing.

  • Test-to-application code ratio of 1.7:1 with an 80% coverage gate enforced in CI
  • Scripted operations: one-command deploy with rollback and encrypted backups with verified restores

PHPLaravelPostgreSQLRedisPlaywrightDockerPrivate client project.

03Open source & tooling

Claude Code skill · MIT

A rigorous academic evaluator skill for Claude Code: grades coursework against a real rubric with calibrated marks and actionable feedback instead of default LLM praise.

  • 11 evaluation protocols covering 11 academic document types, with 3 worked examples spanning the grade range (71/100 First to 38/100 Marginal Fail)
  • 7 LLM anti-patterns explicitly blocked — prompt engineering shipped as a product, 0 lines of source code

Claude Code skillMarkdownPrompt engineering

Claude Code skill

A veteran thesis-examiner skill for Claude Code that assesses dissertations, papers and thesis chapters against a user-supplied marking rubric.

  • Entire product in 107 lines of Markdown (<10 KB): a 5-section report contract with a claims register and an anti-rationalization rubric gate

Claude Code skillMarkdown

Claude Code skill

A pre-planning router skill that decides whether an idea needs open exploration, decision grilling, or reuse of an existing spec — before any implementation plan is written.

  • Built test-first on prompts: 5 adversarial scenarios, 3/4 passing at baseline → 4/4 with the skill, with the TDD evidence log published in the repo

Claude Code skillMarkdownTDD

Claude Code skill · MIT

Session closure and relay for multi-workstream AI-agent projects: append-only handoff records that parallel sessions can consume without destroying each other’s state.

  • Close → resume → purge formalized as a one-way state machine over append-only artifacts
  • 11 hard rules and 7 banned rationalizations captured from adversarial baseline testing

Claude Code skillMarkdown

Single-file web app · MIT

Minimalist gym routine tracker shipped as one self-contained HTML file — offline-first, no build step, no dependencies.

  • 945 lines of hand-written HTML/CSS/JS in a single ~33 KB file — 0 dependencies, 0 build tools
  • 78 trackable exercises across a 7-day routine; 27 CSS custom properties as the design-token system

HTMLCSSJavaScript

Coursework as submitted · MIT

The as-submitted coursework behind the FIAB cell: full mechanical design, the graded RoboDK station, and control logic recovered from the station binary.

  • 41 CAD files (SolidWorks/STEP/STL), the graded station and 656 lines of recovered Python, published with 784 lines of forensic recovery documentation

PythonRoboDKSolidWorks