Welcome to the Workforce Visas technical interview! This is a comprehensive assessment designed to evaluate your technical skills, problem-solving abilities, and system design thinking.
This interview consists of two parts and we are paying for two hours of your time to complete both components:
- System Design Challenge
- Coding Challenge
You'll be working on an open-ended system design problem where you need to sketch a complete, end-to-end solution that turns incoming user data (structured fields and uploaded files) into a generated PDF that blends that data with AI-generated prose.
- Design a complete system architecture
- Consider AI integration and retrieval strategies
- Plan PDF generation approaches
- Think about scaling, security, and compliance
- Document your design decisions and trade-offs
- A single Markdown document in the
/system-designfolder - Optional diagrams or code snippets
- Focus on depth over length
You'll build a tiny Next.js feature that takes user-submitted data + an uploaded file and turns it into a single PDF.
- Entry point – User visits
/apply - Form – They fill out basic personal details and specify their current job description
- Upload – They attach one supporting document (PDF file type)
- Submit – After form submission:
- Persist everything in the repo (FS, JSON - your choice)
- Generate a PDF containing:
- User's personal details (nicely formatted header)
- Job description paragraph
- Content from the uploaded file (or a note that it's stored)
- Return a download link or modal for the PDF
- Database: SQLite with Prisma (self-contained, no hosted DB needed)
- File Storage: Local file system (
./uploadsfolder) - PDF Generation: Your choice of library (
pdf-lib,@react-pdf/renderer, etc.) - Styling: Minimal UI - focus on backend logic and code
- Running code committed to your repo
/coding-challengefolder with:- Data model explanation (ER diagram, schema file, or bullet list)
- Request flow documentation
| Area | What to Demonstrate |
|---|---|
| Data Modeling | Clear representation of how data model relate |
| Code Structure | Separation of concerns, clear naming, testability |
| PDF Generation | Smart library choice and working implementation |
| System Design | Thoughtful architecture decisions and trade-off analysis |
| Edge Cases | Basic validation, error handling, graceful failure handling |
| Documentation | Clear README and design documentation |
- File Storage: Use local file system (
./uploadsfolder) - Styling: Keep UI minimal - focus on backend logic
- Libraries: Use any publicly available npm packages
- Secrets: Don't commit API keys - add needed env var constants to
.env.example
- Fork this repo to your GitHub account
- Complete both parts of the interview
- Open a Pull Request to this repo's
mainbranch - In the PR description, include your name and any additional context
- Read through both challenge documents thoroughly
- Set up your development environment
- Start with whichever part feels most comfortable to you
- Document your decisions and reasoning as you go
Good luck! We're excited to see your approach and solutions.