Если вы не возражаете против повторения условий:
select x.*,
position like ANY(['Real Estate Agent ','25']) as found_in_position,
name like ANY(['Real Estate Agent ','25']) as found_in_name,
age like ANY(['Real Estate Agent ','25']) as found_in_age
from (
select DISTINCT
t1.id,
t2.position,
t3.name,
t4.age
FROM table1 AS t1
LEFT JOIN table2 AS t2 on t1.id = t2.fk_id
LEFT JOIN table3 AS t3 on t3.fk_id = t2.fk_id
LEFT JOIN table4 AS t4 on t4.fk_id = t3.fk_id
WHERE
t2.position like ANY(['Real Estate Agent ','25'])
OR
t3.name like ANY(['Real Estate Agent ','25'])
OR
t4.age like ANY(['Real Estate Agent ','25'])
) x;
Производная таблица (также известная как sub-select) необходима, потому что DISTINCT работает со всеми выражениями списка SELECT, и добавление флагов можетизменить исход этого.