Skip to main content

Upload a Resume

Resumes are uploaded directly to the RAISE S3 bucket. Once an object lands in the bucket, S3 notifies the ingestion queue and the pipeline starts automatically.

Supported formats: PDF, DOCX, DOC.

The bucket name is printed as a CDK stack output (BucketName) after deployment.

Secure uploads from browsers

For web and mobile applications, use AWS Cognito Identity Pools to issue short-lived, scoped credentials to the client. This avoids exposing long-lived AWS keys in your frontend code. See Authentication & Authorization for the setup guide.

Backend Uploads

Use these examples when uploading from a server-side application or script.

import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
import { readFileSync } from "fs";

const client = new S3Client({ region: "us-east-1" });

await client.send(new PutObjectCommand({
Bucket: "YOUR_BUCKET_NAME",
Key: "resumes/candidate.pdf",
Body: readFileSync("./candidate.pdf"),
ContentType: "application/pdf",
}));

console.log("Resume uploaded successfully.");

Frontend Uploads

Use these examples when uploading from a web application using temporary AWS credentials from a Cognito Identity Pool.

import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";

async function uploadResume(file: File, bucketName: string, credentials: any) {
const client = new S3Client({ region: "us-east-1", credentials });

await client.send(new PutObjectCommand({
Bucket: bucketName,
Key: `resumes/${Date.now()}-${file.name}`,
Body: file,
ContentType: file.type,
}));
}

// Usage in a component
export function ResumeUploader({ bucketName, credentials }: Props) {
const handleChange = async (e: React.ChangeEvent<HTMLInputElement>) => {
const file = e.target.files?.[0];
if (!file) return;
await uploadResume(file, bucketName, credentials);
alert("Resume uploaded successfully.");
};

return (
<input
type="file"
accept=".pdf,.docx,.doc"
onChange={handleChange}
/>
);
}