162 lines
3.4 KiB
TypeScript
162 lines
3.4 KiB
TypeScript
export interface Company {
|
|
id: number;
|
|
name: string;
|
|
location?: string;
|
|
source?: string;
|
|
recruiterName?: string;
|
|
recruiterEmail?: string;
|
|
recruiterLinkedIn?: string;
|
|
lastContactedAt?: string;
|
|
nextContactAt?: string;
|
|
pipelineStage?: string;
|
|
}
|
|
|
|
export interface JobApplication {
|
|
id: number;
|
|
jobTitle: string;
|
|
company: Company;
|
|
companyId?: number;
|
|
status: string;
|
|
dateApplied: string;
|
|
location?: string;
|
|
salary?: string;
|
|
nextAction?: string;
|
|
followUpAt?: string;
|
|
feedbackRequestedAt?: string;
|
|
responseReceived: boolean;
|
|
responseDate?: string;
|
|
description?: string;
|
|
translatedDescription?: string;
|
|
descriptionLanguage?: string;
|
|
tags?: string; // JSON array string
|
|
deadline?: string;
|
|
notes?: string;
|
|
coverLetterText?: string;
|
|
recruiterMessageDraft?: string | null;
|
|
jobUrl?: string;
|
|
shortSummary?: string;
|
|
fullSummary?: string | null;
|
|
tailoredCvText?: string | null;
|
|
tailoredCvUpdatedAt?: string | null;
|
|
|
|
hasResume?: boolean;
|
|
hasCoverLetter?: boolean;
|
|
hasPortfolio?: boolean;
|
|
hasOtherAttachment?: boolean;
|
|
|
|
daysSince: number;
|
|
isDeleted?: boolean;
|
|
deletedAt?: string;
|
|
needsFollowUp?: boolean;
|
|
followUpReason?: string;
|
|
}
|
|
|
|
export interface CandidateFitChannelGuidance {
|
|
cv: string[];
|
|
coverLetter: string[];
|
|
interview: string[];
|
|
recruiterMessage: string[];
|
|
}
|
|
|
|
export interface CandidateFit {
|
|
matchSummary: string;
|
|
fitLevel: string;
|
|
matchScore: number;
|
|
strengths: string[];
|
|
gaps: string[];
|
|
mention: string[];
|
|
avoid: string[];
|
|
cvImprovements: string[];
|
|
missingKeywords: string[];
|
|
interviewPrep: string[];
|
|
tailoredPitch: string;
|
|
guidance: CandidateFitChannelGuidance;
|
|
coverLetterDraft?: string | null;
|
|
recruiterMessageDraft?: string | null;
|
|
}
|
|
|
|
export interface FocusPlanResponse {
|
|
immediatePriorities: string[];
|
|
cvBulletIdeas: string[];
|
|
proofPointsToLeadWith: string[];
|
|
coverLetterAngles: string[];
|
|
followUpApproach: string[];
|
|
strategicSummary: string;
|
|
}
|
|
|
|
export interface InterviewPrepResponse {
|
|
summary: string;
|
|
talkingPoints: string[];
|
|
likelyQuestions: string[];
|
|
weakSpots: string[];
|
|
}
|
|
|
|
export interface ReadinessResponse {
|
|
score: number;
|
|
level: string;
|
|
completed: string[];
|
|
missing: string[];
|
|
reminders: string[];
|
|
}
|
|
|
|
export interface ApplicationPackageResponse {
|
|
tailoredCvText: string;
|
|
coverLetterDraft?: string | null;
|
|
applicationAnswerDraft?: string | null;
|
|
recruiterMessageDraft?: string | null;
|
|
keyPoints: string[];
|
|
attachmentSignals: string[];
|
|
attachmentFilesUsed: string[];
|
|
coverLetterVariants: string[];
|
|
recruiterMessageVariants: string[];
|
|
}
|
|
|
|
export interface SaveApplicationDraftsRequest {
|
|
coverLetterText?: string | null;
|
|
notes?: string | null;
|
|
recruiterMessageDraft?: string | null;
|
|
}
|
|
|
|
export interface CorrespondenceMessage {
|
|
id: number;
|
|
jobApplicationId: number;
|
|
from: string;
|
|
content: string;
|
|
subject?: string;
|
|
channel?: string;
|
|
date: string;
|
|
}
|
|
|
|
|
|
export interface GmailStatus {
|
|
connected: boolean;
|
|
gmailAddress?: string;
|
|
connectedAt?: string;
|
|
lastSyncedAt?: string;
|
|
}
|
|
|
|
export interface GmailMessageSummary {
|
|
id: string;
|
|
threadId: string;
|
|
subject: string;
|
|
from: string;
|
|
to: string;
|
|
date?: string;
|
|
snippet: string;
|
|
}
|
|
|
|
export interface JobImportResult {
|
|
title?: string;
|
|
company?: string;
|
|
location?: string;
|
|
description?: string;
|
|
translatedDescription?: string;
|
|
language?: string;
|
|
tags: string[];
|
|
sourceUrl: string;
|
|
deadline?: string;
|
|
success: boolean;
|
|
parser?: string;
|
|
error?: string;
|
|
}
|