Yeti Jobs includes a notification system that records user-scoped events across the platform’s major workflows. When something worth knowing happens — a company posts a new job, your application status changes, or your resume analysis completes — a notification row is written to theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/tech-dipesh/yeti-Jobs/llms.txt
Use this file to discover all available pages before exploring further.
notifications table and becomes retrievable through the notifications API. Notifications are linked to the user who should receive them via the users_id foreign key, ensuring each user sees only their own alerts.
Notifications are stored in the PostgreSQL database and delivered via API polling. There is no WebSocket or server-sent event connection — the frontend must call
GET /api/v1/notifications/all to refresh the notification list. Real-time push delivery via Socket.io is listed as a future improvement in the project roadmap.Notification Types
Thetype field is enforced against a fixed set of values in the controller. Every notification must be one of the following ten types:
| Type | Description |
|---|---|
new_jobs | A company your account is associated with has posted a new job listing. |
application_status | The status of one of your applications has been updated by a recruiter. |
job_alert | A job matching your saved criteria has become available. |
bookmark_reminder | A reminder related to a job you have bookmarked. |
company_follow | A user has followed a company you manage (recruiter-facing). |
application_recieved | A recruiter’s company has received a new application (note: intentional spelling in schema). |
profile_view | Another user has viewed your profile. |
message_recieved | A message has been received (note: intentional spelling in schema). |
resume_analysed | Your resume upload and ATS analysis has completed successfully. |
announcement | A platform-wide announcement from an admin. |
API Endpoints
Fetch All Notifications
Retrieve all notifications for the authenticated user, ordered bycreated_at DESC (newest first). The query joins the jobs and companies tables so each notification also carries the job title and company name for display.
Mark All as Read
Setread_at to the current timestamp for every unread notification belonging to the authenticated user. Useful for a “mark all read” button in the UI.
Send a Notification
Manually create a notification record for the authenticated user. Thetype field must be one of the ten values listed above. Both job_id and company_id must be valid UUIDs — the middleware validates UUID format before the controller runs.
The UUID of the job this notification relates to.
The UUID of the company this notification relates to.
The notification type. Must be one of the ten values listed in the table above.
Mark a Single Notification as Read or Unread
Toggle the read state of one notification. Use theisRead query parameter to control the direction: true sets read_at to the current timestamp, false clears read_at back to null.
200 and a message like "Notification is already marked as read" without performing an update.
Sample Notification Response Object
A single item from theGET /api/v1/notifications/all response array:
| Field | Type | Description |
|---|---|---|
uid | UUID | Unique identifier for the notification. |
type | string | One of the ten notification type values. |
created_at | timestamp | When the notification was created. |
read_at | timestamp | null | null if unread; set to the read timestamp after marking as read. |
job_id | UUID | The associated job (joined to produce job_title). |
company_id | UUID | The associated company (joined to produce company_name). |
users_id | UUID | Foreign key to the recipient user in the users table. |
job_title | string | Denormalized job title from the jobs table join. |
company_name | string | Denormalized company name from the companies table join. |
Database Schema
read_at column doubles as both a boolean read flag and a timestamp: when null the notification is unread; when populated it records exactly when the user acknowledged it.