Admin Guide

How RecruitNA Works

Your full operating playbook — role-by-role wizards, daily routines, troubleshooting, data model, and platform mechanics.

Role-Specific Wizards

Click a role below. Each wizard expands into specific scenarios — daily routines, the user's experience, your admin actions, and what to do when things break.

You — The Admin

The full daily/weekly/monthly playbook for running RecruitNA.

Open Dashboard
  1. 1
    Open Admin → Dashboard. Check the 'Pending Review' counter.
  2. 2
    Click each pending candidate. Verify CV, specialty, location are complete.
  3. 3
    Approve, reject, or hide based on quality. Approved = visible to subscribed clients.
  4. 4
    Skim Admin → Job Board for any active posts older than 30 days; toggle off expired ones.
  5. 5
    Reply to any inbound contact form submissions / info@recruitna.ca emails.

Candidates (Job Seekers)

What candidates experience — so you know exactly what they're seeing and where they may get stuck.

Manage Candidates
  1. 1
    They land on /Home or /GetHired and click 'Get Hired' / 'Join Talent Pool'.
  2. 2
    Sent to /Auth?intent=candidate. They sign up with email + password, verify via OTP.
  3. 3
    Auto-redirected to /CandidatePortal with role='user'.
  4. 4
    Step 1: Upload CV. AI auto-parses and pre-fills name, specialty, experience, skills.
  5. 5
    Step 2: Review & complete: location, availability, employment type, ideal environment.
  6. 6
    Step 3: Toggle 'Open to Work' (visibility). Status starts as 'pending'.
  7. 7
    Step 4: Once you approve, status becomes 'approved' and they receive an automated welcome email.

Employers (Hiring Practices)

Two ways employers can hire: white-glove recruiting OR self-serve job board.

Manage Clients
  1. 1
    They land on /ClientProfile and read the recruitment process overview.
  2. 2
    Click 'Speak with a Recruiter' → sent to /Auth?intent=employer.
  3. 3
    After signup, they complete practice info (name, location, type).
  4. 4
    Status starts as 'none'. They can't browse candidates yet.
  5. 5
    You activate their subscription manually in Admin → Clients (set plan + dates + Stripe IDs).
  6. 6
    Once active='active', they can browse /CandidateSearch and see full candidate details.

Dental Students (DSC)

Dental Student ConneX is the free career launchpad for students & new grads — the candidate portal is now live.

Manage Resources
  1. 1
    /DentalStudentConneX is a marketing landing page introducing the program.
  2. 2
    Students sign up via the standard candidate flow (role='user') and land on /CandidatePortal.
  3. 3
    They upload a CV (AI auto-parses), complete their profile, and browse career resources — all free.
  4. 4
    Graduation year and school fields help you identify student/new-grad candidates.

Platform Workflows

Candidate Approval Flow

How candidates get from sign-up to visible on the platform.

Go to Candidates
  1. 1
    Candidate signs up at /Auth
    User creates an account via the public Auth page (intent=candidate).
  2. 2
    They build their profile
    Upload CV (auto-parsed by AI), set specialty, location, availability, and preferences.
  3. 3
    Status: pending
    New profiles arrive with status='pending'. They appear in your Pending Review queue.
  4. 4
    You review in Admin → Candidates
    Approve, reject, or hide. Approved candidates become visible to subscribed employers.
  5. 5
    Auto-email on approval
    The onCandidateApproved automation sends a welcome email when status flips to approved.

Client Subscription Flow

How dental practices get access to the candidate database.

Go to Clients
  1. 1
    Employer signs up at /Auth
    User creates an account (intent=employer) and lands on the ClientProfile page.
  2. 2
    They complete practice info
    Practice name, location, type. No subscription yet — status='none'.
  3. 3
    You activate their subscription
    In Admin → Clients, set their plan (monthly/annual), start/end dates, and Stripe IDs.
  4. 4
    Status: active
    Once active, the employer can browse full candidate profiles, CVs, and contact details.
  5. 5
    Manual renewal/cancellation
    Update subscription_status to past_due or cancelled as needed.

Job Board & Credits

How self-serve job postings work for paying customers.

Go to Job Board Admin
  1. 1
    Employer picks a plan on /JobBoard
    $99 single, $249 growth (3 posts), $350/mo enterprise (unlimited).
  2. 2
    Stripe checkout → JobPurchase record
    After payment, finalizeJobBoardPurchase creates a JobPurchase with credits_total.
  3. 3
    They use the Post Job Wizard
    5-step guided form. Each publish deducts 1 credit (unless unlimited).
  4. 4
    Job is live for 30 days
    Posts auto-expire after 30 days. You can manually toggle is_active in Admin → Job Board.
  5. 5
    Marketing Boost (+$99)
    Optional add-on: signals you to manually post on social channels & include in newsletter.

Payments & Stripe

Where the money flows.

  1. 1
    Test mode is enabled
    Currently using Stripe sandbox. Use card 4242 4242 4242 4242 to test checkouts.
  2. 2
    All transactions logged
    Each Stripe checkout creates a JobPurchase record with stripe_session_id for tracking.
  3. 3
    Going live
    Visit Dashboard → Integrations → Stripe → Claim Account, then add your real API keys.
  4. 4
    Refunds & disputes
    Handle directly in your Stripe dashboard. Update JobPurchase.status manually if needed.

Off-Platform Invoicing

How to manually grant access or job credits when a client pays outside of Stripe (e-transfer, cheque, bank transfer, etc.).

Go to Clients
  1. 1
    Client pays you directly (off Stripe)
    You receive payment via e-transfer, bank transfer, cheque, or any other method. No Stripe checkout involved.
  2. 2
    For subscription access (White-Glove)
    Go to Admin → Clients → find the client. Fill in subscription status = Active, plan = Monthly or Annual, set start/end dates, and optionally enter your own Stripe Customer ID if you create one manually. Click Save Changes.
  3. 3
    For job board credits (Self-Serve)
    Go to Admin → Clients → select the client → click 'Grant Job Credits'. Choose the plan: Single (1 credit), Growth (3 credits), or Enterprise (unlimited). Enter your invoice reference number in the optional field for your records.
  4. 4
    What Grant Credits does
    It creates a JobPurchase record identical to what Stripe would have created — with credits_total, credits_remaining, status=active, and a 1-year expiry. The client can immediately post jobs via the Post Job Wizard.
  5. 5
    Invoice reference tracking
    Enter your invoice number (e.g. INV-2026-042) in the reference field when granting credits. It's stored on the JobPurchase record as stripe_session_id prefixed with 'invoice:' so you can trace it later.
  6. 6
    Quick Activate (shortcut)
    For white-glove subscriptions, use the 'Quick Activate' button on any client card or in the detail panel — it instantly sets status=active, plan=monthly, with today as start and +1 year as end date. No manual date entry needed.

Candidate Portal Deep Dive

The candidate's full portal experience — tabs, CV upload, profile, and career resources.

Manage Candidates
  1. 1
    Overview
    After signup, candidates land on /CandidatePortal — a tabbed dashboard with four sections: Profile, Documents, Job Preferences, and Career Resources.
  2. 2
    Profile Tab
    Editable fields: first/last name, photo, specialty, years of experience, location, graduation year, bio, education, experience, skills, languages. Includes 'Open to Work' toggle and consent checkbox.
  3. 3
    Documents Tab (CV Upload)
    Candidates upload their CV as a PDF. AI auto-parses it and pre-fills profile fields (name, specialty, experience, skills, education). They can review and adjust before submitting. This is the recommended starting point for new candidates.
  4. 4
    Job Preferences Tab
    Availability (Immediately, 1-3 months, etc.), preferred employment type, preferred work locations, and ideal office environment. These fields power employer search filters.
  5. 5
    Career Resources Tab
    Shows curated articles and guides filtered to the candidate's specialty plus general resources. Rich text opens in an in-app viewer; links open externally. You manage all content in Admin → Career Resources.
  6. 6
    Profile Status
    New profiles start as 'pending'. A status banner reminds candidates their profile isn't live yet. Once you approve in Admin → Candidates, status flips to 'approved' and they receive an automated welcome email.
  7. 7
    Open to Work toggle
    Even approved candidates can be temporarily hidden by toggling 'Open to Work' off. This controls visibility in employer search without changing their approval status.

Career Resources Management

How to create and publish career content for candidates in the DSC portal.

Manage Resources
  1. 1
    Navigate to Admin → Resources
    This page (AdminCareerResources) is where you create, edit, reorder, and publish/unpublish career resources.
  2. 2
    Create a resource
    Click 'Add Resource'. Fill in title, short description, and choose a content type: rich text, PDF, or external link.
  3. 3
    Content types
    Rich text = write an article in the editor (opens in-app, no download). PDF = upload a file URL (shown as preview). Link = external URL (opens in a new tab).
  4. 4
    Tag by specialty
    Select one or more specialties to tag the resource with. Candidates whose specialty matches will see it. Leave tags empty and check 'General' to show it to ALL candidates.
  5. 5
    Publish & reorder
    Set is_published=true to make it live. Use sort_order (lower number = higher in list) to control display order. Unpublished resources are hidden from candidates but remain in your admin list.
  6. 6
    What candidates see
    In the Candidate Portal → Career Resources tab, candidates see general resources first, then specialty-matched ones. Each card shows the icon, title, tag, and a View/Open button.

Entities & Data Model

What's stored where.

Open CMS
  1. 1
    User
    Built-in. Roles: admin, client (employer), user (candidate). Switch via auth or role switcher.
  2. 2
    CandidateProfile
    One per candidate. Linked by user_email. Status drives visibility.
  3. 3
    ClientProfile
    One per practice. Subscription fields control access to candidate data.
  4. 4
    JobPosting
    Created via Post Job Wizard or Admin → Job Board. is_active drives display on /JobBoard.
  5. 5
    JobPurchase
    Tracks Stripe transactions and remaining credits per employer.
  6. 6
    CareerResource
    Admin-authored career content (articles, PDFs, links). Tagged by specialty or general. Managed at Admin → Resources.
  7. 7
    SiteContent
    CMS-managed text/images. Edit at Admin → CMS.

Best Practices

Check the dashboard daily
The Pending Review badge tells you when candidates need attention.
Approve thoughtfully
Approved profiles reflect on platform quality. Reject incomplete profiles politely via email.
Verify before activating
Confirm employer payment & legitimacy before flipping ClientProfile to active.
Personal touch wins
A short welcome email from a real person beats automation every time.