Admin Guide
How RecruitNA Works
Your full operating playbook — role-by-role wizards, daily routines, troubleshooting, data model, and platform mechanics.
Jump To
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.
Candidates (Job Seekers)
What candidates experience — so you know exactly what they're seeing and where they may get stuck.
Employers (Hiring Practices)
Two ways employers can hire: white-glove recruiting OR self-serve job board.
Dental Students (DSC)
Dental Student ConneX is the free career launchpad for students & new grads — the candidate portal is now live.
Platform Workflows
Candidate Approval Flow
How candidates get from sign-up to visible on the platform.
- 1Candidate signs up at /AuthUser creates an account via the public Auth page (intent=candidate).
- 2They build their profileUpload CV (auto-parsed by AI), set specialty, location, availability, and preferences.
- 3Status: pendingNew profiles arrive with status='pending'. They appear in your Pending Review queue.
- 4You review in Admin → CandidatesApprove, reject, or hide. Approved candidates become visible to subscribed employers.
- 5Auto-email on approvalThe onCandidateApproved automation sends a welcome email when status flips to approved.
Client Subscription Flow
How dental practices get access to the candidate database.
- 1Employer signs up at /AuthUser creates an account (intent=employer) and lands on the ClientProfile page.
- 2They complete practice infoPractice name, location, type. No subscription yet — status='none'.
- 3You activate their subscriptionIn Admin → Clients, set their plan (monthly/annual), start/end dates, and Stripe IDs.
- 4Status: activeOnce active, the employer can browse full candidate profiles, CVs, and contact details.
- 5Manual renewal/cancellationUpdate subscription_status to past_due or cancelled as needed.
Job Board & Credits
How self-serve job postings work for paying customers.
- 1Employer picks a plan on /JobBoard$99 single, $249 growth (3 posts), $350/mo enterprise (unlimited).
- 2Stripe checkout → JobPurchase recordAfter payment, finalizeJobBoardPurchase creates a JobPurchase with credits_total.
- 3They use the Post Job Wizard5-step guided form. Each publish deducts 1 credit (unless unlimited).
- 4Job is live for 30 daysPosts auto-expire after 30 days. You can manually toggle is_active in Admin → Job Board.
- 5Marketing Boost (+$99)Optional add-on: signals you to manually post on social channels & include in newsletter.
Payments & Stripe
Where the money flows.
- 1Test mode is enabledCurrently using Stripe sandbox. Use card 4242 4242 4242 4242 to test checkouts.
- 2All transactions loggedEach Stripe checkout creates a JobPurchase record with stripe_session_id for tracking.
- 3Going liveVisit Dashboard → Integrations → Stripe → Claim Account, then add your real API keys.
- 4Refunds & disputesHandle 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.).
- 1Client pays you directly (off Stripe)You receive payment via e-transfer, bank transfer, cheque, or any other method. No Stripe checkout involved.
- 2For 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.
- 3For 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.
- 4What Grant Credits doesIt 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.
- 5Invoice reference trackingEnter 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.
- 6Quick 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.
- 1OverviewAfter signup, candidates land on /CandidatePortal — a tabbed dashboard with four sections: Profile, Documents, Job Preferences, and Career Resources.
- 2Profile TabEditable 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.
- 3Documents 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.
- 4Job Preferences TabAvailability (Immediately, 1-3 months, etc.), preferred employment type, preferred work locations, and ideal office environment. These fields power employer search filters.
- 5Career Resources TabShows 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.
- 6Profile StatusNew 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.
- 7Open to Work toggleEven 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.
- 1Navigate to Admin → ResourcesThis page (AdminCareerResources) is where you create, edit, reorder, and publish/unpublish career resources.
- 2Create a resourceClick 'Add Resource'. Fill in title, short description, and choose a content type: rich text, PDF, or external link.
- 3Content typesRich 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).
- 4Tag by specialtySelect 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.
- 5Publish & reorderSet 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.
- 6What candidates seeIn 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.
- 1UserBuilt-in. Roles: admin, client (employer), user (candidate). Switch via auth or role switcher.
- 2CandidateProfileOne per candidate. Linked by user_email. Status drives visibility.
- 3ClientProfileOne per practice. Subscription fields control access to candidate data.
- 4JobPostingCreated via Post Job Wizard or Admin → Job Board. is_active drives display on /JobBoard.
- 5JobPurchaseTracks Stripe transactions and remaining credits per employer.
- 6CareerResourceAdmin-authored career content (articles, PDFs, links). Tagged by specialty or general. Managed at Admin → Resources.
- 7SiteContentCMS-managed text/images. Edit at Admin → CMS.