Candidate Guide
How to search for jobs, apply to roles, track applications, and manage your hiring journey on Sureshake.
Candidate Guide
This guide explains how to search for jobs, apply to roles, track your applications, and manage your hiring journey on Sureshake.
Overview
As a candidate on Sureshake, you can:
- Search and browse published hiring roles
- View role details including required skills and problem specifications
- Apply with your profile and portfolio
- Track application status and receive feedback
- Bookmark roles for later
- Withdraw applications if needed
- Get AI-powered role recommendations based on your skills
Prerequisites
Before applying to roles, ensure you have:
- Sureshake account — Active user account with verified email
- Complete profile — Fill out your professional profile
- Skills listed — Add your skills to enable AI matching
- Portfolio (recommended) — Upload proof packs demonstrating your work
Finding Roles
Searching Published Roles
Browse all public roles using the API:
curl -X GET "https://api.sureshake.com/api/v1/hiring/roles?status=published&visibility=public&limit=20" \
-H "Authorization: Bearer $TOKEN"Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
status | string | published | Filter by status (published only for public search) |
visibility | string | public | Filter by visibility |
limit | number | 20 | Results per page (1-100) |
offset | number | 0 | Pagination offset |
search | string | - | Search in title and description |
location | string | - | Filter by location |
remotePolicy | string | - | remote, hybrid, or onsite |
Example Response
{
"roles": [
{
"id": "role-uuid",
"title": "Senior Backend Engineer",
"entityId": "entity-uuid",
"entityName": "Acme Corp",
"location": "San Francisco, CA",
"remotePolicy": "hybrid",
"salaryRange": {
"min": 150000,
"max": 200000,
"currency": "USD",
"period": "yearly"
},
"status": "published",
"publishedAt": "2025-01-05T12:00:00Z"
}
],
"total": 42,
"hasMore": true
}AI-Powered Recommendations
Get personalized role recommendations based on your skills profile:
curl -X GET "https://api.sureshake.com/api/v1/hiring/roles/recommended?limit=20&minScore=0.5" \
-H "Authorization: Bearer $TOKEN"Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | number | 20 | Maximum results (1-50) |
minScore | number | 0 | Minimum match score (0-1) |
includePreferred | boolean | true | Include preferred skills in matching |
includeNiceToHave | boolean | false | Include nice-to-have skills |
Response
{
"matches": [
{
"roleId": "role-uuid",
"roleTitle": "Senior Backend Engineer",
"entityId": "entity-uuid",
"entityName": "Acme Corp",
"matchScore": 0.85,
"skillMatches": [
{
"skillId": "skill-1",
"skillName": "TypeScript",
"level": "required",
"matched": true,
"candidateYears": 5,
"requiredYears": 3
}
],
"matchedSkillCount": 8,
"totalRequiredSkills": 10,
"explanation": "Strong match with 8 of 10 required skills..."
}
],
"totalCount": 15
}Viewing Role Details
Get complete role information before applying:
curl -X GET "https://api.sureshake.com/api/v1/hiring/roles/{roleId}" \
-H "Authorization: Bearer $TOKEN"The response includes:
- Full job description
- Required, preferred, and nice-to-have skills
- Problem specifications (what you'll demonstrate)
- Salary range and benefits
- Location and remote policy
- Company information
Checking Your Match
Before applying, see how well you match the role:
curl -X GET "https://api.sureshake.com/api/v1/hiring/roles/{roleId}/match" \
-H "Authorization: Bearer $TOKEN"Response
{
"candidateId": "your-user-id",
"roleId": "role-uuid",
"matchScore": 0.78,
"skillMatches": [
{
"skillId": "skill-1",
"skillName": "React",
"level": "required",
"matched": true,
"evidencePaths": [
{
"pathType": "PROOF_PACK",
"detail": "Demonstrated in E-commerce Platform project"
}
]
},
{
"skillId": "skill-2",
"skillName": "GraphQL",
"level": "required",
"matched": false
}
],
"explanation": {
"summary": "Good match with room for growth",
"strengths": ["Strong React experience", "Proven TypeScript skills"],
"gaps": ["No GraphQL experience shown"],
"recommendations": ["Consider adding a GraphQL project to your portfolio"]
},
"hasApplied": false
}Applying to a Role
Prepare Your Application
Gather the following before applying:
| Field | Required | Description |
|---|---|---|
| Cover Letter | No | Brief introduction (up to 2000 characters) |
| Portfolio Items | No | Selected proof packs to highlight |
| Answers | If Required | Responses to problem specifications |
Submit Application
curl -X POST "https://api.sureshake.com/api/v1/hiring/roles/{roleId}/apply" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"coverLetter": "I am excited to apply for this position...",
"portfolioItemIds": ["proof-pack-1", "proof-pack-2"],
"answers": [
{
"problemSpecId": "ps-1",
"content": "My approach to distributed systems..."
}
]
}'Track Your Application
Your application status will progress through the workflow. Check it anytime:
curl -X GET "https://api.sureshake.com/api/v1/hiring/applications/{applicationId}" \
-H "Authorization: Bearer $TOKEN"You can only apply once per role. Applications cannot be edited after submission, but you can withdraw and reapply if the role is still open.
Application Status Flow
SUBMITTED → REVIEWING → EVALUATED → HIRED
│ │ │
│ │ └──────→ REJECTED
│ │
└───────────┴──────────────────→ WITHDRAWNStatus Descriptions
| Status | Description |
|---|---|
submitted | Application received, awaiting review |
reviewing | Recruiter is actively reviewing your application |
evaluated | Technical evaluation completed |
hired | Congratulations! You've been selected |
rejected | Application was not successful this time |
withdrawn | You withdrew your application |
Tracking Your Applications
List All Applications
curl -X GET "https://api.sureshake.com/api/v1/hiring/applications/mine?limit=20" \
-H "Authorization: Bearer $TOKEN"Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
status | string | all | Filter by status |
limit | number | 20 | Results per page |
offset | number | 0 | Pagination offset |
Withdrawing an Application
If you need to withdraw your application:
curl -X POST "https://api.sureshake.com/api/v1/hiring/applications/{applicationId}/withdraw" \
-H "Authorization: Bearer $TOKEN"What happens:
- Status changes to
withdrawn withdrawnAttimestamp is recorded- You can reapply if the role is still open
- Recruiter is notified of withdrawal
You cannot withdraw applications that are already hired, rejected, or withdrawn.
Bookmarking Roles
Save interesting roles for later:
Add Bookmark
curl -X POST "https://api.sureshake.com/api/v1/hiring/roles/{roleId}/bookmark" \
-H "Authorization: Bearer $TOKEN"Remove Bookmark
curl -X DELETE "https://api.sureshake.com/api/v1/hiring/roles/{roleId}/bookmark" \
-H "Authorization: Bearer $TOKEN"List Bookmarks
curl -X GET "https://api.sureshake.com/api/v1/hiring/roles/bookmarks?limit=20" \
-H "Authorization: Bearer $TOKEN"Viewing Your Skills
Check what skills are in your profile:
curl -X GET "https://api.sureshake.com/api/v1/hiring/my-skills" \
-H "Authorization: Bearer $TOKEN"Add more skills to your profile to improve match scores and get better recommendations.
Receiving Feedback
After your application is evaluated, you may receive feedback from the hiring team.
Feedback Structure
{
"feedbackId": "feedback-uuid",
"applicationId": "application-uuid",
"overallScore": 4,
"dimensionScores": [
{
"dimensionId": "dim-1",
"dimensionName": "Technical Skills",
"score": 4,
"comments": "Strong TypeScript and React skills demonstrated"
},
{
"dimensionId": "dim-2",
"dimensionName": "Communication",
"score": 5,
"comments": "Excellent written communication"
}
],
"strengths": ["TypeScript", "React", "Problem Solving"],
"gaps": ["GraphQL", "System Design"],
"recommendation": "consider",
"publishedAt": "2025-01-15T10:00:00Z"
}Feedback visibility depends on the organization's settings. Some feedback may only be visible after a hiring decision is made.
Best Practices
Writing a Strong Application
- Tailor your cover letter — Reference specific aspects of the role
- Highlight relevant experience — Focus on skills that match requirements
- Provide concrete examples — Use your portfolio items effectively
- Answer problem specs thoroughly — Show your thought process
- Be concise — Respect the recruiter's time
Improving Your Match Score
- Complete your profile — Fill in all professional details
- Add skills — Include all relevant technical and soft skills
- Upload proof packs — Demonstrate your skills with real work
- Get attestations — Ask colleagues for skill endorsements
- Keep it current — Update as you gain new experience
Managing Applications
- Track status regularly — Check for updates
- Respond promptly — If the recruiter reaches out
- Be selective — Quality over quantity
- Withdraw thoughtfully — Free up the slot if you're no longer interested
Troubleshooting
"BAD_REQUEST: You have already applied to this role"
Cause: Duplicate application attempt Solution: View your existing application or withdraw and reapply
"NOT_FOUND: Role not found"
Cause: Role may be closed, deleted, or you don't have access Solution: Check if the role is still published and visible
"FORBIDDEN: Role is not accepting applications"
Cause: Role is not in published status
Solution: The role may have been closed; look for other opportunities
"BAD_REQUEST: Missing required fields"
Cause: Problem specification answers are required but not provided Solution: Include answers for all required problem specifications