Adding contacts
Add one manually
Click the "Add Contact" button in the top right of the People page, or press ⌘N (Mac) / Ctrl+N (Windows).
Only First Name and Last Name are required. Everything else — email, company, title, LinkedIn URL — is optional and can be filled in later.
Click Save. The contact appears in your list immediately.
Importing from LinkedIn
If you have a list of contacts from LinkedIn, a spreadsheet, or anywhere else, you can import them all at once via CSV or Excel. See the Importing Contacts section below for a full walkthrough.
What those fields actually mean
Summary — This is my favorite field in the whole app. It's freeform — write whatever context matters to you: how you met them, what they mentioned in a call, what role you're targeting, what to say in a follow-up. I built it because every CRM I've used buries the actually useful context behind structured fields that never quite fit.
Pipeline Status — Where this contact sits in your outreach process. More on this in the next section.
Tags — Optional labels for grouping contacts. I use things like "Series A", "Engineering", "Warm Lead", "Follow Up" — whatever categories make sense for how you think about your pipeline.
Understanding the pipeline
Every contact has a status — a label that tells you where the relationship stands. I set up five defaults that match a typical cold outreach flow:
- New — Just added, haven't reached out yet
- Contacted — You've sent an initial message
- Replied — They've responded
- Interested — Things are moving forward
- Not Interested — They passed or went cold
These are starting points, not rules. I wanted the pipeline to be yours, not mine — rename them, change their colors, create new ones, delete ones you don't use. All from Settings → Pipeline.
Kanban vs. Table
The People page has two views:
Table view — A spreadsheet-style list of all your contacts. Good for scanning, bulk editing, and filtering.
Kanban view — A board where each column is a status and each card is a contact. Drag a card to a new column to update their status. Good for visualising your pipeline at a glance.
Both views show the same data. Use whichever feels right for what you're doing. I personally switch between table view for bulk work and Kanban when I want to see the big picture.
Tip: The Kanban view is most useful once you have 20+ contacts spread across different stages. If you're just getting started, the table view is simpler.
Sending an email
Open any contact's profile by clicking their name. From the profile, click "Compose Email" to open the compose window.
The compose window lets you:
- Write a subject and body
- Choose which connected email account to send from (if you have multiple)
- Send immediately or schedule for a future date and time
Sent emails appear in the Emails tab of the contact's profile, so you always have a record of what you sent and when.
Scheduling
To schedule an email, click the dropdown arrow next to the Send button and select "Schedule." Pick a date and time. The email will sit in your queue and send automatically — as long as JobDex is running on your machine at that time.
One honest limitation: scheduled emails only send if JobDex is running on your machine at that time. I haven't built a background service yet — it's the thing I most want to fix. For now, schedule emails for times when you'll have the app open.
Templates and mail merge
If you're sending the same type of email to many people — cold outreach, follow-ups, thank-you notes — templates keep you from rewriting the same thing every time. I built the merge system to be dead simple: you write the structure once, and JobDex fills in the personal details automatically.
Creating a template
Go to Templates in the sidebar. Click "New Template."
Give it a name (this is just for your reference — the recipient never sees it). Write your subject line and body.
Variables
Templates support merge variables — placeholders that get replaced with real contact data
when you send. Variables look like this: {{firstName}}
| Variable | What it becomes |
|---|---|
{{firstName}} |
Contact's first name |
{{lastName}} |
Contact's last name |
{{fullName}} |
Contact's full name |
{{companyName}} |
Contact's company |
{{title}} |
Contact's job title |
Example subject line:
{{firstName}}, quick question about your role at {{companyName}}
When sent to Sarah Chen at Stripe, this becomes:
Sarah, quick question about your role at Stripe
Using a template
When composing an email, click "Choose Template" to load one. The variables will be pre-filled based on the contact's saved data.
You can edit the email after loading a template — it's not locked. I designed templates as a starting point, not a straitjacket.
If a variable is blank (for example, the contact has no company saved), JobDex will insert an empty string. Before sending to a large list, make sure the relevant fields are filled in on each contact.
Importing contacts from LinkedIn (or any spreadsheet)
This was one of the first features I built, because I knew nobody wants to manually type in 200 contacts. If you have a spreadsheet from LinkedIn, a CSV you built yourself, or anything with headers, you can import everything at once.
How to export from LinkedIn
-
Go to linkedin.com and click your profile picture → "Settings & Privacy"
-
Click "Data privacy" → "Get a copy of your data"
-
Select "Connections" and request the archive
-
LinkedIn will email you a download link, usually within 10 minutes
-
Download and unzip the file — you want the file called
Connections.csv
Running the import
In JobDex, click the Import button in the top bar of the People page (or press ⌘I).
Step 1 — Column mapping: Select your CSV or Excel file. JobDex will read the column headers and ask you to map each one to a contact field. For a LinkedIn export, the mapping usually looks like this:
| LinkedIn column | Map to |
|---|---|
| First Name | First Name |
| Last Name | Last Name |
| Email Address | |
| Company | Company |
| Position | Title |
| LinkedIn Profile URL | LinkedIn URL |
Step 2 — Duplicate check: JobDex will scan for contacts already in your database and tell you how many new contacts it found vs. how many duplicates. I built three options because different situations call for different approaches:
- Skip duplicates — Only import new contacts. Existing records are untouched.
- Merge — Import new contacts, and fill in any missing fields on existing contacts (without overwriting anything you've already entered).
- Import all — Insert everything, ignoring duplicates.
For most people, Skip or Merge is the right choice.
Supported file formats
.csv(any spreadsheet exported as CSV).xlsx(Excel files)
Files must have a header row. Columns don't need to be in any particular order — you'll map them manually in Step 1.