diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 4a64cf5c0d..f3c32d3d68 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -632,7 +632,14 @@ GLOBAL_LIST_EMPTY(PDAs)
L = get(src, /mob/living/silicon)
if(L && L.stat != UNCONSCIOUS)
- to_chat(L, "\icon[src] Message from [source.owner] ([source.ownjob]), \"[msg.message]\"[msg.get_photo_ref()] (Reply)")
+
+ var/hrefstart
+ var/hrefend
+ if (isAI(L))
+ hrefstart = ""
+ hrefend = ""
+
+ to_chat(L, "\icon[src.icon] Message from [hrefstart][source.owner] ([source.ownjob])[hrefend], \"[msg.message]\"[msg.get_photo_ref()] (Reply)")
update_icon()
add_overlay(icon_alert)
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index d3fe5eb6d2..f4cfb363fd 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -833,8 +833,20 @@
/mob/living/silicon/ai/proc/relay_speech(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode)
raw_message = lang_treat(speaker, message_language, raw_message, spans, message_mode)
- var/name_used = speaker.GetVoice()
- var/rendered = "Relayed Speech: [name_used] [raw_message]"
+ var/start = "Relayed Speech: "
+ var/namepart = "[speaker.GetVoice()][speaker.get_alt_name()]"
+ var/hrefpart = ""
+ var/jobpart
+
+ if (iscarbon(speaker))
+ var/mob/living/carbon/S = speaker
+ if(S.job)
+ jobpart = "[S.job]"
+ else
+ jobpart = "Unknown"
+
+ var/rendered = "[start][hrefpart][namepart] ([jobpart]) [raw_message]"
+
show_message(rendered, 2)
/mob/living/silicon/ai/fully_replace_character_name(oldname,newname)