{id :: integer(), version:: integer(), live :: boolean()}
is not valid type specification. You can use record definition or you have to specify only type information which is {integer(), integer(), boolean()}
.
So using record would look like.
-record(spot_key, {
id :: integer(),
version:: integer(),
live :: boolean()
}).
-record(spot, {
key :: #spot_key{},
name :: binary(),
short_description :: binary(),
address1 :: binary(),
address2 :: binary(),
address3 :: binary(),
postalcode :: binary(),
city :: binary(),
phone :: binary(),
website_url :: binary(),
menu_url :: binary(),
last_modified_at :: erlang:timestamp()
}).