It appears this is a simplistic filter that people that don't know how to properly post-process a picture, which is all Instagram users to first approximation, can throw crap at them and still get somewhat good results.
Except for unusual situations, the first thing you should do in your post-processing workflow is to make the blacks black and the whites white. At the very least, stretch the range to cover 0-1. Since your original picture was poorly processed, or not at all, this actually helps.
Here is the original:
Here it is with the ends of the range stretched to the full 0-1 range:
The black level in the original was (.031, .041, .038) and the white level (.896, .900, .904). Stretching those to (0,0,0) and (1,1,1) respectively fixed the blacks looking muddy and made the bright parts look brighter.
Most pictures will have areas where detail in dark areas appear to be lost once the black level is moved to full black. Instagram may be betting that this is the case, or maybe the algorithm even looks over the picture to see if there are large area that are quite dark, or that the picture is dark overall.
Here I applied what my program calls a "brighten" of .4:
This leaves the ends of the range alone, but brings up the dark values quickly while modifying the bright values less. This gives you better shadow detail and a overall brighter look.
There are various ways to do non-linear brightening. I can go into the math of this particular one if you want, but I am really just trying to show the concept. This is not exactly what the filter you show did. I could probably fiddle with the controls of several non-linear brightening filters to replicate that, but at this point I think the general method is clear enough.