ActiveData's translation matrix looks like the inverse of pulsetranslator's translation matrix! ActiveData is quite agnostic about property values and may not require the cleanup that pulsetranslator provides. Furthermore, ActiveData's ETL pipeline records all raw pulse messages, enabling reprocessing in the event of errors and changes. Maybe ActiveData should feed off the raw buildbot messages? We could have a system that does a daily copy of pulsetranslator's messageparams.py to effectively steal the core intellegence, and stay up to date.