Signing in
There are no public pages and no sign-up form. An administrator creates each account, and people sign in with their email and password or with a passkey. Two-factor authentication is available in Settings.
Project overview · September 2026
A private workspace for a job hunt. A small team researches companies, reaches the right person, applies with a standard CV and follows up, and everyone can see who did what.
Purpose
Applying to companies directly takes more than sending a CV. Each company needs research, the right person to talk to, a call, an email, the application itself and a follow-up. A spreadsheet can hold that list, and for one person it is often enough.
It stops working as soon as a team shares the list. Statuses live in someone's copy, every script carries one person's name and signature, and nobody can see that a company was already called the day before.
AtheerJobs gives a small team one place to run that outreach every day: one shared list of companies, a clear next step for each person, and a record of every call and email.
Companies, contacts, research and templates are kept once for the whole team, instead of in copies of a spreadsheet.
Every company follows the same five steps, and the app suggests where each person stands and what to do next.
Scripts and emails are written once and filled with the details of whoever uses them: name, phone, email, portfolio and signature.
The dashboard and each person's pipeline show who contacted and applied where, so nobody calls the same company twice by accident.
Sign-in only, accounts created by an administrator, CVs on a private disk, and real company data never stored in the code repository.
The same app on a laptop or a phone, in light or dark mode, with import and export so the data can move with the team.
Approach
The work moved in five stages, from the workflow to a tested product.
Follow the outreach as it really happens: research a company, find the right person, call, email, apply and follow up. A one-page prototype tested the flow before the app was built.
Separate what the team shares (companies, contacts, templates) from what belongs to each person: one application per company, with a status, dates, notes and a timeline.
Start from the Laravel and React starter kit and keep a strict structure. Requests validate, actions write, services read, and resources shape what each page receives.
Companies and contacts are imported from a file that never enters the repository. Tests, demos and these screenshots use a fictional team and made-up companies instead.
Each change ships with tests, updated guides and fresh screenshots. CI checks every push, and the whole suite also runs against MySQL, the production database.
Every application climbs the same staircase. Any step can be opened at any time; the app suggests the one you are on and logs each action on your timeline.
Pick the person to reach, from the research or a new contact.
Follow the script and log the outcome: no answer, talked, or a wrong number.
Send the personal email and mark it as sent.
Apply with your standard CV. A follow-up is planned for a week later.
Record replies, interviews and offers, and plan the next step with a date.
Ten statuses describe where an application stands. Changes follow fixed transitions, so an application cannot jump from Not contacted to Offer, and every change is written to the timeline.
Templates are stored with placeholders. When someone opens one, the app fills in their details and the contact they chose, and adds their signature to emails. Missing details are pointed out, with a link to the profile.
Stored template (English email)
Hello team, I am [Name], and I would love to join you. My portfolio: [Portfolio]. Best regards,
What Sara sees, with Maya Chen chosen as the contact
Hi Maya, I am Sara Malik, and I would love to join you. My portfolio: https://saramalik.example. Best regards, Sara Malik Frontend Developer · React & TypeScript
The app
Taken from the demo workspace: a fictional team,
made-up companies on .example domains
and 555 phone numbers. Select a screenshot to see
the whole page.
There are no public pages and no sign-up form. An administrator creates each account, and people sign in with their email and password or with a passkey. Two-factor authentication is available in Settings.
The first page after signing in shows the whole team at once.
Every company sits on one board. The bar on top splits them by how well they fit, and filters narrow the list by fit, district, status, named contacts or dead websites.
Search ignores case, accents and Turkish
letters, so ozturk also finds
ÖZTÜRK. The same list works as a
sortable table, where each person changes their
status inline.
A company page shows your status, your contact person, the suggested next step and the teammates who are working on it too. The apply wizard walks through the five steps, and each action lands on your timeline for that company.
The research tab collects what you need before picking up the phone: what the company does and its products, vision, size, tech stack and hiring signals, how well it fits and why, talking points, what you could build for it, the state of its website and the sources behind the research.
Both come in Turkish and English and are filled with your details. The call script names the contact you chose and logs the call's outcome in one click.
The email greets the contact by name, ends with your signature, and can be copied or opened in your mail app. Marking it as sent moves the application forward.
The people at each company, with verified or unconfirmed emails. Make my contact aims your script and email at someone. Below the people is every field from the research, from the address to the Google rating.
Members add and edit companies in a slide-over form; only administrators delete them.
Every part of the workspace downloads as CSV for a spreadsheet or JSON for a backup: companies, contacts, call scripts and emails, applications, activity and users.
Every file can be imported again, here or in another AtheerJobs. The app recognises what a file holds, shows what will be new, updated or unchanged, and saves nothing until you confirm. Empty cells never erase data, and nothing is deleted.
The users page lists everyone with their role, outreach numbers, CV and last activity. Administrators add, edit and remove accounts there.
Every person has a pipeline page with their numbers, a status filter, each company they work on with the next step, and their activity.
In Settings, each person keeps the details they apply with: headline, phone, contact email, portfolio, LinkedIn and a standard cover letter, plus a PDF CV that only they and administrators can download.
A preview shows how the placeholders will be filled and what the email signature looks like.
The app follows the system's light or dark mode, or a choice made in Settings.
On a phone the board becomes a single list, and a company opens on its own page with the same tabs and wizard.
Architecture
Controllers never query the database. They hand checked input to an action or a service and return a resource, so every rule lives in exactly one place.
routes/app.php
app/Http/Requests
app/Data
app/Actions · app/Services
app/Http/Resources
resources/js/pages
Events and listeners keep the activity log: every call, email, note, status change and follow-up becomes an entry on the application's timeline.
| Shared by the team | Kept per person |
|---|---|
| CompaniesResearch notes, fit, website state, rating | ApplicationsOne per company: status, contact person, dates, next step, notes |
| ContactsTitle, email and whether it is verified, the key contact | ActivityEvery call, email, note and status change, with the time it happened |
| Call scripts and emailsTurkish and English, with placeholders | Application profileHeadline, phone, email, links, cover letter and a private CV |
Administrators and members, backed by named permissions. Policies check permissions by name, with no shortcut for administrators, so safeguards such as "keep the last administrator" apply to everyone.
Wayfinder generates a TypeScript function for every route, so links and forms in React cannot drift from the backend.
A search column keeps company names, research
and contact names without accents, because
databases only fold ASCII letters.
muller finds Müller,
and ilker finds İLKER.
Real company data is imported from a git-ignored file, CVs live on a disk the web server never serves, and exports stay out of the repository.
Quality
GitHub Actions runs the whole check on every push to
main: formatting, linting, TypeScript,
Pint, PHPStan and the Pest suite. The repository
carries guides for the architecture, the domain
model, permissions, import and export, and
development. A script retakes these screenshots from
the demo data whenever the interface changes.
Technology