DEV Community

Cover image for A Recruiter's favourite tool: Powered by Postmark
Nabil Alamin
Nabil Alamin

Posted on

A Recruiter's favourite tool: Powered by Postmark

This is a submission for the Postmark Challenge: Inbox Innovators.
 

❔ What I Built

I created a low-friction job postings management dashboard with applicant parsing and a job board for potential candidates to apply.


⏩ TLDR

  1. Job Posts Dashboard:
    • Create and manage jobs.
    • Track, evaluate and communicate directly with candidates and their applications within the app.
  2. Job Board Site:
    • View and apply to jobs created on the dashboard.
  3. Postmark implementation:
    • Receive candidate applications - inbound email.
    • Auto send confirmation of application - transactional email.
    • Email communication between the candidate and admin - transactional email.

💻 Demo

Dashboard
Job board

dashboard

job board


Code Repository

GitHub logo arndom / job-board-admin

Jobs management dashboard & applicant parser powered by postmark

🧠 JobBoard Admin: Jobs Management Dashboard & Applicant Parser

A full-stack recruitment dashboard demo that parses email-based job applications, extracts applicant data (including CVs and cover letters), stores and scores them intelligently, and allows admins to manage and communicate with candidates — all from a unified Supabase-powered UI.

There's a demo app to view the jobs:


✨ Features

  • 📥 Email-Based Applications Applicants apply via email to dynamic addresses like xcxcxc@{custom.domain.com}.

  • 🔐 DKIM, Return-Path, and MX Setup Fully authenticated sending and receiving under a custom subdomain.

  • 🧠 AI-Powered Parsing & Scoring Cloudflare Workers + LLM extract:

    • Timezone & location
    • Trust score (e.g., LinkedIn, GitHub presence)
    • Seniority level
    • Sentiment analysis (CV, cover letter)
    • Match % with job description
  • 📂 Supabase Storage Integration Stores and retrieves uploaded CVs and cover letters.

  • 📊 Admin Dashboard UI Built with Refine + Material UI:

    • View all jobs, applicants, applications
    • Track trust score, match…

GitHub logo arndom / job-board-site

Job application demo site for https://github.com/arndom/job-board-admin

💼 Remote Job Board — Email-Based Applications

A simple job board built as demo for the JobBoard admin app:

Built with Next.js, Tailwind CSS, and Supabase — designed for email-driven applications. Applicants apply by sending emails..


✨ Features

  • 📃 Live Job Listings

    • Publicly viewable jobs pulled from Supabase
    • Styled with shadcn/ui and Tailwind
  • ✉️ Email-to-Apply

    • Each job post displays a unique email (e.g., xcxcxc@{custom.domain.com})
    • Clicking opens the user’s email client with prefilled email, subject, body.
  • 💻 Responsive Design

    • Clean, minimal, and responsive with shadcn/ui + Tailwind
  • Built with:

    • Next.js (App Router)
    • pnpm
    • Supabase (for job data)
    • Tailwind CSS
    • shadcn/ui components

📸 Preview

preview


⚙️ Local dev

  1. Setup .env
NEXT_PUBLIC_SUPABASE_URL=your-supabase-url
NEXT_PUBLIC_SUPABASE_KEY=your-key
Enter fullscreen mode Exit fullscreen mode
  1. Add types from your supbase
npx supabase gen types typescript --project-id {projectId}  > types/database.types.ts
Enter fullscreen mode Exit fullscreen mode
  1. Run locally
pnpm install
pnpm dev
Enter fullscreen mode Exit fullscreen mode




How I Built It

It was my first time hearing about Postmark, so I was unsure of what to build with it, and with limited time to join, I chose not to participate. When the hackathon got extended, I had more leeway and decided to go with what I see as a practical use of Postmark's inbound email parsing feature as part of a larger system: A job posts management dashboard for a small company.

cliche

I started by creating my database on Supabase, comprising tables for jobs, applicants and applications. The goal was speed, due to trying to get a lot done with my already tight schedule, so I used v0 to quickly draft the job board UI, which I tweaked after generation. Next, I used refine to create the base admin dashboard, added some material ui theme customisations and eventually got my layouts for both apps done. That was the easy part.
 

Setting up Postmark was relatively straightforward. I joined the platform and verified the subdomain jobs of my portfolio site arndom.dev by updating my DNS records for DKIM and Return-Path next, I followed the Configure an Inbound Server guide and also updated my DNS records MX value for inbound domain forwarding. These two steps would allow me to send and "receive" emails via my subdomain: [anything]@jobs.arndom.dev.

lets-go

I got started building my inbound webhook leveraging Supabase edge functions. I started with simple functionality like receiving the application email and extracting the necessary information:
 

  • Getting the job info based on the unique job email the candidate applied for.
     

  • Then, creating/updating a candidate(applicant) entry in the database, giving basic information like name and email, after which I created an application.
     

  • After getting that working and testing my flow end-to-end, from the job board to the job board dashboard, I began working on the evaluation of candidates with the use of an LLM.
     

  • I opted for a Cloudflare worker AI integration with Ollama simply because it was what I already knew.
     

  • After some fiddling around, I was able to produce some usable outputs and feed them into the tables.
     

  • I used the LLM to parse values:

    • Calculate the match of the applicant to the job based on CV, letter, email body to job requirements, skills, and description.  
    • Calculate of applicant trust value based on "proof" of public URLs like github, and LinkedIn  
  • I also added a confirmation email to be sent when the inbound email is done being processed.

confirmation-email

At the time, I thought that was all, but with a bit more time on my hands, I went all in and added a communications feature within the app. I already had the send email functionality implemented, so I extended it by making another edge function to use in the admin via a chat interface.

chat-ui
 

This also led to creating an email table and making necessary changes to the inbound parser and send-email functions.
 

The last thing I did in development was fetch the jobs for the job board using Tanstack Query. After which, I deployed everything and wrote some documentation. Overall, it was a fun and interesting build. Learnt a lot more about the DNS system thanks to this.

Thanks for reading, do check out the apps Dashboard, Job board and have a day👋.

bye

Top comments (1)

Collapse
 
nevodavid profile image
Nevo David

Pretty cool build, gotta respect putting all that together while learning new tools. Makes me wanna dive into building again.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.