Skip to content
Back to projects
Completed

Pulso — Structural Health Monitoring (OFITECO)

Web platform that auscultates bridges and buildings via vibrations: automatic operational modal analysis (OMA), tracking and damage alerts. In production.

The problem

Structures age silently. Today they are checked mostly by visual inspection: expensive, slow, subjective and surface-only — by the time a crack is visible, the damage has been there for a while. Pulso flips the approach: instead of looking, it listens. A healthy structure vibrates in a specific way; when it is damaged, that “signature” changes. Pulso measures that change automatically, separates it from environmental noise (temperature, traffic) and warns before it becomes visible.

What I built

A web platform — designed and developed from architecture to production — that turns accelerometer signals into structural diagnosis in the browser, chaining 7 steps of operational modal analysis (OMA) into a single call:

  • SVD-FDD: from the time domain to the frequency domain; peaks are the natural tones.
  • Peak + MAC: selection of the real modes (MAC measures whether two shapes are the same mode).
  • EFDD + damping: damping of each mode.
  • AEFDD: automatic peak detection with quality metrics that discard false positives.
  • COV-SSI + AOMA: robust identification in the time domain, clustering stable poles with HDBSCAN.
  • SPR: separates environmental effects (temperature, traffic) from real damage to avoid false alarms.
  • Tracking: fixes a reference and compares campaign to campaign — warns of lost modes or frequency drift.

The output: natural frequencies, mode shapes animated over a 3D model, damping, damage control charts and a PDF report ready to deliver.

Technical metrics (verifiable)

  • 227 frontend tests (coverage ≥80%) + 253 backend tests, plus E2E (Playwright) and accessibility (axe, WCAG 2.1 AA).
  • httpOnly cookie + CSRF auth, RBAC and audit logging; rate limiting and security headers.
  • Clean Architecture (4 layers, DDD), mypy strict, Ruff, knip, madge.
  • Version v1.13.3, deployed on-premise in production (development and production environments).

Stack

Frontend: Svelte 5 · TypeScript · Tailwind 4 · Three.js/Threlte · pdfmake. Backend: FastAPI · uvicorn · Python 3.11+ · NumPy · SciPy · HDBSCAN · PyJWT.

Professional project at OFITECO (VINCI Group) · private repository. The demo uses real field data from an instrumented bridge (18 accelerometer channels at 100 Hz).