ETABuddy - ETABS Diagnostic Toolkit
ETABS is the industry-standard software for structural analysis of buildings, but its warning system is notoriously cryptic. A single model run can produce hundreds of warnings scattered across log files, each requiring cross-referencing PDFs, forum posts, and tribal knowledge to diagnose. I built ETABuddy to collapse that entire workflow into a single command.
My Role
Sole developer. Self-initiated project - identified the problem from daily frustration with ETABS warning diagnosis and built the complete solution end-to-end.
What I Built
5 CLI tools orchestrated by a diagnostic skill:
manual-search- searches local ETABS manuals using hybrid BM25 + Ollama embedding similarity with Reciprocal Rank Fusionwrn-scan- parses and normalizes ETABS warning output, collapsing hundreds of near-identical warnings into grouped patterns with counts, value ranges, and sample element IDskb- searches a curated knowledge base of known ETABS issues and solutionsweb-cache- searches cached web results using SQLite FTS5 for offline access to forum solutionsbuild-toc- generates a table of contents from PDF-converted manuals using adaptive markdown chunking
Hybrid search engine:
- Fuses BM25 keyword scores with Ollama embedding cosine similarity (nomic-embed-text model)
- Reciprocal Rank Fusion with saturating normalization makes the two score distributions comparable
- Returns sourced, ranked results with breadcrumbs tracing back to the exact manual section
Warning normalization:
- Groups near-identical warnings by pattern - for example, 200 warnings about “area object X lost area” become a single entry with count, affected element ID ranges, and value ranges
--summarymode collapses ~2,000 tokens of raw warning output to ~200 tokens for efficient AI consumption
Budget-capped AI orchestration:
- Multi-tier search strategy: local manuals first, then knowledge base, then web cache
- Budget cap prevents runaway token consumption during diagnostic sessions
- Produces a structured diagnostic report with root cause identification and targeted fix recommendations
Impact
- Reduces warning diagnosis from 10–30 minutes per warning to seconds
- Used daily on every ETABS model run - accidental modeling issues no longer slip through unnoticed
- Caught the exact root cause and targeted fix for an “area lost” error in a large model that would have required hours of manual investigation
- Plans to share with the structural engineering team for company-wide adoption
Technical Stack
Python 3.12, BM25 (rank-bm25), Ollama embeddings (nomic-embed-text), SQLite FTS5, Reciprocal Rank Fusion, adaptive markdown chunking, CLI (Click/Typer).