Sureshake Documentation

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:

  1. Sureshake account — Active user account with verified email
  2. Complete profile — Fill out your professional profile
  3. Skills listed — Add your skills to enable AI matching
  4. 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

ParameterTypeDefaultDescription
statusstringpublishedFilter by status (published only for public search)
visibilitystringpublicFilter by visibility
limitnumber20Results per page (1-100)
offsetnumber0Pagination offset
searchstring-Search in title and description
locationstring-Filter by location
remotePolicystring-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

ParameterTypeDefaultDescription
limitnumber20Maximum results (1-50)
minScorenumber0Minimum match score (0-1)
includePreferredbooleantrueInclude preferred skills in matching
includeNiceToHavebooleanfalseInclude 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:

FieldRequiredDescription
Cover LetterNoBrief introduction (up to 2000 characters)
Portfolio ItemsNoSelected proof packs to highlight
AnswersIf RequiredResponses 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
    │           │
    └───────────┴──────────────────→ WITHDRAWN

Status Descriptions

StatusDescription
submittedApplication received, awaiting review
reviewingRecruiter is actively reviewing your application
evaluatedTechnical evaluation completed
hiredCongratulations! You've been selected
rejectedApplication was not successful this time
withdrawnYou 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

ParameterTypeDefaultDescription
statusstringallFilter by status
limitnumber20Results per page
offsetnumber0Pagination 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:

  1. Status changes to withdrawn
  2. withdrawnAt timestamp is recorded
  3. You can reapply if the role is still open
  4. 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

  1. Tailor your cover letter — Reference specific aspects of the role
  2. Highlight relevant experience — Focus on skills that match requirements
  3. Provide concrete examples — Use your portfolio items effectively
  4. Answer problem specs thoroughly — Show your thought process
  5. Be concise — Respect the recruiter's time

Improving Your Match Score

  1. Complete your profile — Fill in all professional details
  2. Add skills — Include all relevant technical and soft skills
  3. Upload proof packs — Demonstrate your skills with real work
  4. Get attestations — Ask colleagues for skill endorsements
  5. Keep it current — Update as you gain new experience

Managing Applications

  1. Track status regularly — Check for updates
  2. Respond promptly — If the recruiter reaches out
  3. Be selective — Quality over quantity
  4. 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

On this page