feat: expand outreach targeting and messaging

This commit is contained in:
jjbrunton committed 2026-08-10 17:31:05 +01:00
1 parent 7defff422d
commit d0a8bd0e2f
40 files changed
+890 -82

No files matched your search

+34
View File
@@ -20,6 +20,23 @@ interface OutreachCandidateView {
availableAt: number;
attemptCount: number;
hasPreparedMessage: boolean;
physiqueScore: number | null;
preparation: {
message: string;
imageAnalysis: string;
detectedGender: 'male' | 'female' | 'other' | 'unknown';
attractivenessScore: number | null;
physiqueScore: number | null;
physiqueTargeting: { enabled: boolean; minScore: number; maxScore: number } | null;
sourceImageUrl: string | null;
strategyId: string | null;
experimentId: string | null;
promptVersion: string | null;
selectionReason: 'explore' | 'exploit' | null;
modelId: string;
toneId: string;
scripted: boolean;
} | null;
note: string | null;
owner: { accountId: string; redditUsername: string } | null;
}
@@ -61,6 +78,23 @@ export function createOutreachRouter(ctx: WebContext): Router {
availableAt: candidate.availableAt,
attemptCount: candidate.attemptCount,
hasPreparedMessage: candidate.prepared !== null,
physiqueScore: candidate.prepared?.physiqueScore ?? null,
preparation: candidate.prepared ? {
message: candidate.prepared.generatedMessage,
imageAnalysis: candidate.prepared.imageAnalysis,
detectedGender: candidate.prepared.detectedGender,
attractivenessScore: candidate.prepared.attractivenessScore ?? null,
physiqueScore: candidate.prepared.physiqueScore ?? null,
physiqueTargeting: candidate.prepared.physiqueTargeting ?? null,
sourceImageUrl: candidate.prepared.sourceImageUrl ?? null,
strategyId: candidate.prepared.strategyId,
experimentId: candidate.prepared.experimentId,
promptVersion: candidate.prepared.promptVersion,
selectionReason: candidate.prepared.selectionReason,
modelId: candidate.prepared.modelId,
toneId: candidate.prepared.toneId,
scripted: candidate.prepared.scripted,
} : null,
note: candidate.lastError,
owner: candidate.assignedAccountId
? {