Несколько вещей. Вы пытаетесь сопоставить RequiredInfo (данные записи по умолчанию) с RequiredInfo (данные заполненной записи, отправленные в виде сообщения). Поэтому вы ожидаете получить только те данные, которые у вас уже есть, которые, как я полагаю, могут не соответствовать вашим ожиданиям. У вас также есть некоторая орфографическая ошибка на receie_info.
Если бы я хотел заполнить список записей по умолчанию полученными заполненными записями и все записи должны быть получены, или все не удалось, я, вероятно, сделал бы что-то подобное.
fill_records(List) -> fill_records(List,length(List)).
fill_records(List,0) -> List;
fill_records(List,N) ->
receive Rec -> fill_records(lists:keyreplace(element(1,Rec),1,List,Rec),N-1)
after 5000 -> {error,timeout} end.
Вы должны обеспечить это, защищая от получения нескольких экземпляров одного и того же типа записи или нежелательных типов записи, в зависимости от окружающей системы.
Конечно, вы также можете просто создать цикл приема, в котором вы только определяете количество ожидаемых сообщений, или, возможно, посмотрите на gen_fsm или gen_server и их внутренние состояния и обработку сообщений.