Skip to main content
The Reviewers router handles application review workflows, scoring, and status management.

Procedures

getApplications

Type: Query
Authentication: Protected (ADMIN or REVIEWER role required)
Get all applications with review statistics.
No input parameters
id
string
User ID
name
string
User name
email
string
User email
DH12ApplicationId
string
Application ID
reviewCount
number
Number of reviews for this application
avgScore
number
Average review score (0 if no reviews)
Example:
const applications = await trpc.reviewers.getApplications.useQuery();

getApplication

Type: Query
Authentication: Protected (ADMIN or REVIEWER role required)
Get detailed application information.
dh12ApplicationId
string
Application ID to retrieve
firstName
string
First name
lastName
string
Last name
birthday
string
Birthday (ISO date string)
phone
string
Phone number
country
string
Country
studyEnrolledPostSecondary
boolean
Whether enrolled in post-secondary
studyLocation
string
School/university
studyDegree
string
Degree program
studyMajor
string
Major
studyYearOfStudy
string
Year of study
studyExpectedGraduation
string
Expected graduation (ISO date string)
previousHackathonsCount
number
Number of previous hackathons
longAnswerSocratica
string
Answer to Socratica question
longAnswerHobby
string
Answer to hobby question
longAnswerWhy
string
Answer to “why” question
longAnswerTime
string
Answer to time question
longAnswerSkill
string
Answer to skill question
socialText
string[]
Social media links
interests
string
Interests
Resume link
tshirtSize
enum
T-shirt size (XS, S, M, L, XL)
hackerKind
string[]
Hacker types/interests
alreadyHaveTeam
boolean
Whether applicant has a team
workshopChoices
string[]
Workshop preferences
discoverdFrom
string[]
How they heard about DeltaHacks
considerCoffee
boolean
Coffee chat interest
dietaryRestrictions
string
Dietary restrictions
underrepresented
enum
Underrepresented status (YES, NO, UNSURE)
gender
string
Gender
race
string
Race/ethnicity
orientation
string
Sexual orientation
emergencyContactName
string
Emergency contact name
emergencyContactPhone
string
Emergency contact phone
emergencyContactRelation
string
Emergency contact relationship
hasReviewed
boolean
Whether current user has already reviewed this application
Example:
const app = await trpc.reviewers.getApplication.useQuery({
  dh12ApplicationId: "app123"
});

getStatus

Type: Query
Authentication: Protected (ADMIN or REVIEWER role required)
Get application status.
dh12ApplicationId
string
required
Application ID
status
enum
Application status (IN_REVIEW, ACCEPTED, REJECTED, WAITLISTED, RSVP, CHECKED_IN)
Example:
const { status } = await trpc.reviewers.getStatus.useQuery({
  dh12ApplicationId: "app123"
});

updateStatus

Type: Mutation
Authentication: Protected (ADMIN role required)
Update application status.
dh12ApplicationId
string
required
Application ID
status
enum
required
New status (IN_REVIEW, ACCEPTED, REJECTED, WAITLISTED, RSVP, CHECKED_IN)
Example:
await trpc.reviewers.updateStatus.mutate({
  dh12ApplicationId: "app123",
  status: "ACCEPTED"
});

submitScore

Type: Mutation
Authentication: Protected (ADMIN or REVIEWER role required)
Submit a review score for an application.
applicationId
string
required
Application ID
score
number
required
Score (0-17)
comment
string
required
Review comment/feedback
Example:
await trpc.reviewers.submitScore.mutate({
  applicationId: "app123",
  score: 15,
  comment: "Strong technical background, great project ideas."
});
Note: A reviewer can only score each application once. Attempting to score again will result in a CONFLICT error.

getReviewsForApplication

Type: Query
Authentication: Protected (ADMIN or REVIEWER role required)
Get all reviews for an application.
applicationId
string
required
Application ID
id
string
Review ID
score
number
Review score
comment
string
Review comment
reviewerId
string
Reviewer user ID
applicationId
string
Application ID
reviewer
object
Reviewer information
reviewer.id
string
Reviewer ID
reviewer.name
string
Reviewer name
reviewer.email
string
Reviewer email
Example:
const reviews = await trpc.reviewers.getReviewsForApplication.useQuery({
  applicationId: "app123"
});

updateApplicationStatusByScoreRange

Type: Mutation
Authentication: Protected (ADMIN role required)
Bulk update application statuses based on score range.
status
enum
required
Status to set (ACCEPTED, REJECTED, WAITLISTED, IN_REVIEW)
minRange
number
required
Minimum score (0+)
maxRange
number
required
Maximum score (up to 17)
Example:
// Accept all applications with average score between 14-17
await trpc.reviewers.updateApplicationStatusByScoreRange.mutate({
  status: "ACCEPTED",
  minRange: 14,
  maxRange: 17
});

// Reject applications with average score between 0-8
await trpc.reviewers.updateApplicationStatusByScoreRange.mutate({
  status: "REJECTED",
  minRange: 0,
  maxRange: 8
});

// Waitlist applications with average score between 9-13
await trpc.reviewers.updateApplicationStatusByScoreRange.mutate({
  status: "WAITLISTED",
  minRange: 9,
  maxRange: 13
});

Application Statuses

The following statuses are available:
  • IN_REVIEW - Application is being reviewed
  • ACCEPTED - Application accepted, awaiting RSVP
  • REJECTED - Application rejected
  • WAITLISTED - Application waitlisted
  • RSVP - User has RSVP’d to attend
  • CHECKED_IN - User has checked in at the event

Build docs developers (and LLMs) love