is there a better solution?
org-anniversary directly supports the desired behaviour:
*** Some One
%%(org-anniversary nil 10 27) Some One's birthday
Its docstring does not mention this explicitly:
org-anniversary is a compiled Lisp function in ‘org-agenda.el’.
(org-anniversary YEAR MONTH DAY &optional MARK)
Like ‘diary-anniversary’, but with fixed (ISO) order of arguments.
But the signature of the linked
diary-anniversary function alludes to the possibility for a
diary-anniversary is a compiled Lisp function in ‘diary-lib.el’.
(diary-anniversary MONTH DAY &optional YEAR MARK)
Anniversary diary entry.
Entry applies if date is the anniversary of MONTH, DAY, YEAR.
The order of the input parameters changes according to
‘calendar-date-style’ (e.g. to DAY MONTH YEAR in the European style).
The diary entry can contain ‘%d’ or ‘%d%s’; the %d will be replaced
by the number of years since the MONTH, DAY, YEAR, and the %s will
be replaced by the ordinal ending of that number (that is, ‘st’,
‘nd’, ‘rd’ or ‘th’, as appropriate). The anniversary of February 29
is considered to be March 1 in non-leap years.
An optional parameter MARK specifies a face or single-character
string to use when highlighting the day in the calendar.