Right now the code works but it's fairly badly designed. This is in large part to me learning Go writing this project. Knowing what I know now, I'd redo a lot of the internal design.
I think I should create interface layers for various pieces to make this more useful for future cases.