From 54e521f1579f401383dcb9f6a26c8ae6908c78f7 Mon Sep 17 00:00:00 2001 From: Yeganathan S <63534555+skwowet@users.noreply.github.com> Date: Tue, 20 Oct 2026 14:16:38 +0200 Subject: [PATCH] fix: retry when the llm returns work experiences as strings Signed-off-by: Yeganathan S <63534555+skwowet@users.noreply.github.com> --- .../apps/members_enrichment_worker/src/activities/llm.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/apps/members_enrichment_worker/src/activities/llm.ts b/services/apps/members_enrichment_worker/src/activities/llm.ts index de22fa76b0..a9d59f6c3d 100644 --- a/services/apps/members_enrichment_worker/src/activities/llm.ts +++ b/services/apps/members_enrichment_worker/src/activities/llm.ts @@ -285,7 +285,8 @@ export async function squashWorkExperiencesWithLLM( Maintain all relevant data fields in the final timeline and ensure no essential information is lost. Output Format: - Return a single array of IMemberEnrichmentDataNormalizedOrganization objects: + Return a single array of IMemberEnrichmentDataNormalizedOrganization objects. + Each element must be a JSON object, never a JSON-encoded string. Input Example: [ @@ -358,7 +359,10 @@ export async function squashWorkExperiencesWithLLM( IMemberEnrichmentDataNormalizedOrganization[] >(memberId, prompt) - if (!Array.isArray(res?.result)) { + if ( + !Array.isArray(res?.result) || + !res.result.every((we) => _.isPlainObject(we) && typeof we.name === 'string') + ) { const errorMessage = 'LLM returned invalid work experiences payload shape!' svc.log.warn({ memberId, result: res?.result }, errorMessage) throw new Error(errorMessage)