recommendation interface definition