Am I using Golang concurrency correctly to increase reliability?
It seems reasonable to start a goroutine for each input, but I'm not sure you need separate goroutines for parsing and sending.  After all, one is just waiting for the other to finish.  They might as well be the same goroutine.  Then you don't need either of the channels because they were just to let these two goroutines communicate.