Eduplace Recruitment Operating System
Complete system architecture documentation for the teacher recruitment platform. This document serves as the single source of truth for all system components, data structures, workflows, and integrations.
🏗️ System Overview
Architecture Diagram
Technology Stack
Data Layer
Airtable - Relational database with 16 tables, API access, and scripting capabilities
Integration Layer
Make.com - Workflow automation, API orchestration, and webhook management
AI & Processing
Resume Parser API - Extract skills, experience, and qualifications from CV files
Communication
WhatsApp Business API - Direct candidate messaging and notifications
Email Integration
SMTP/IMAP - Email capture, forwarding, and auto-responses
Document Generation
PDF Generation API - Create invoices, offer letters, and reports
Design Principles
| Principle | Description | Implementation |
|---|---|---|
| Single Source of Truth | All data lives in Airtable. No data silos or duplicates. | Relational schema, deduplication rules, audit trail |
| Workflow Automation | Manual tasks are automated when possible | Make.com automations, email triggers, status-based actions |
| Transparency | Every action is logged, every decision is tracked | Communication Log, Activity timestamps, Notes fields |
| Scalability | System grows without losing performance | Modular interface design, batch processing, archival |
| Role-Based Access | Users see only what they need for their role | 6 roles with granular permissions per table |
| Data Quality | Consistent, validated data throughout | Required fields, validation rules, compliance checks |
Phase Plan & Timeline
Foundation
Weeks 1-3
Schema design, core interfaces, basic automations
Intelligence
Weeks 4-6
Resume parser, advanced automations, reporting
Client Experience
Weeks 7-10
Client dashboards, branded outputs, finance tools
Enterprise
Optional
Custom frontend, API, SaaS multi-tenancy
📊 Data Model
Entity Relationship Diagram
Core Tables (16 Total)
1. Teacher Submissions (tblGoBhaRRPBJDBZo)
Purpose: Raw intake from website forms. Auto-converts to Candidates.
Key Fields: Form submission data (name, email, CV, teaching preferences)
Relationships: → Candidates (one-to-one on creation)
Governance: Auto-processed by Make webhook. Archive after 90 days.
2. Candidates (tblPnMsI1upneASSY)
Purpose: Master candidate database. The single source of candidate truth.
Key Fields (40+): Full Name, Email, Phone, WhatsApp, Teaching Type, Primary/Secondary Subjects, Grade Range, Placement Preference, CV, Pipeline Stage, Consent fields (5), Notes, Date Submitted, Experience (years), Highest Qualification, LinkedIn, Desired Locations, Passport, Visa Status, GCC Eligibility, Risk Flag, Last Activity Date
AI Fields: Executive Summary, Extracted Teaching Experience, Resume Parsed status
Relationships: Links to Applications, Tasks, Interviews, Documents, Experience, Communication Log, Placements, Recruiters
Governance: Required fields by stage. Deduplication on email+phone. Audit trail on all changes.
3. Vacancies (tblzvVLKq5AQ1rtvG)
Purpose: Open roles from clients. Drives the supply-demand matching.
Key Fields: Role Title, Location, Type, Summary, Full Description, Responsibilities, Requirements, Subject, Grade Range, Curriculum, Start Date, Status, Date Posted, Industry, Salary/Package, Visa Sponsorship, Accommodation, Linked Client, Account Manager, Placement Fee, Priority
Relationships: Links to Clients, Applications, Tasks, Interviews, Placements
Governance: Required fields before "Active" status. Auto-archive after filled or 6 months expired.
4. Clients & Employers (tblD6c8lsJehrwbgp)
Purpose: All hiring organisations. Schools, international employers, hospitality chains.
Key Fields: Organisation Name, Country, City, Contact Info, Subject Needed, Grade Range, Curriculum, Start Date, Number of Positions, School Type, Status, DBE Quintile, Service Tier, Pro Bono flags, International Pipeline Flag, Industry, Fee Type, Fee Amount, Account Manager, Payment Terms, Last Activity Date
Relationships: Links to Vacancies, Applications, Placements, Tasks, Interviews, Communication Log, Fees & Revenue
Governance: Deduplicate on org name+country. Track service tier and pro bono status separately.
5. Applications (tblHU2swkWz9xPMTR) - JUNCTION TABLE
Purpose: Critical junction table connecting candidates to vacancies. Tracks the journey from submission to placement.
Key Fields: Application Reference, Candidate (link), Vacancy (link), Client (link), Recruiter (link), Stage (Screening/Submitted/Interview/Offer/Placed/Rejected/Withdrawn), Date Submitted, Interview Date, Offer Status, Rejection Reason, Notes, Created Date, Last Updated
Relationships: Links to Candidates, Vacancies, Clients, Recruiters, Interviews, Placements
Governance: Immutable audit trail. Every stage change logged with timestamp. Can't delete, only mark withdrawn.
6. Placements (tbljCoyaDjtzUKKLm)
Purpose: Successful placements. Links to invoicing and revenue tracking.
Key Fields: Placement Name, Candidate (link), Client (link), Role, Start Date, Status, Notes, Date Placed, Placement Fee (USD), Fee Type, Fee Paid, Industry, Pro Bono flag, Recruiter (link), Guarantee End Date, Vacancy (link), Application (link)
Relationships: Links to Candidates, Clients, Applications, Vacancies, Recruiters, Fees & Revenue
Governance: Created from Application when status = "Placed". Immutable after 30 days.
7. Interviews (tbl7SXbehX3aJbjES)
Purpose: Track candidate interviews. Links application progress to interview feedback.
Key Fields: Interview Reference, Candidate (link), Vacancy (link), Client (link), Application (link), Interview Stage, Date/Time, Interviewer, Feedback, Outcome, Recruiter (link)
Relationships: Links to Candidates, Vacancies, Clients, Applications, Recruiters
Governance: Auto-created when Application stage = "Interview". Immutable after completion.
8. Tasks (tblHth6x2QnFZVpEZ)
Purpose: Workflow management. Drives recruiter activity and follow-up discipline.
Key Fields: Title, Owner (link to Recruiters), Linked Candidate, Linked Vacancy, Linked Client, Due Date, Priority (High/Medium/Low), Status (Open/Completed/Overdue), Task Type (Follow-up/Screen Candidate/Document Chase/Interview Prep/Client Update/Resume Review/Reference Check/Compliance/Other), Notes, Completed Date
Relationships: Links to Recruiters, Candidates, Vacancies, Clients
Governance: Auto-created by triggers. Assignee accountability tracked via Due Date and Completed Date.
9. Candidate Documents (tblHbI1ZlTGW6MZ0t)
Purpose: Document verification and compliance tracking.
Key Fields: Document Name, Candidate (link), Document Type (Passport/National ID/Degree/Teaching Certificate/CV/Police Clearance/Medical/Reference/Visa/Work Permit/SACE/Other), File, Expiry Date, Verified, Missing flag, Verified By (link to Recruiters), Verification Date, Notes
Relationships: Links to Candidates, Recruiters
Governance: Compliance checks. Alert when expiry date within 30 days.
10. Candidate Experience (tblxbDevO0PY19Wzv)
Purpose: Work history extracted from CV or self-reported.
Key Fields: Experience Entry, Candidate (link), Employer, Role Title, Country, City, Start Date, End Date, Current Role flag, Description, Reason for Leaving, Industry
Relationships: Links to Candidates
Governance: Auto-populated by resume parser. Editable by recruiter.
11. Communication Log (tbl7vQH6McfufblE9)
Purpose: Complete communication trail. CRM backbone.
Key Fields: Summary, Type (Email/WhatsApp/Phone Call/In-Person/LinkedIn/Other), Linked Candidate, Linked Client, Date, Direction (Inbound/Outbound), Owner (link to Recruiters), Detail, Follow-up Required flag, Follow-up Date
Relationships: Links to Candidates, Clients, Recruiters
Governance: All communications auto-logged. Immutable. Critical for compliance and dispute resolution.
12. Recruiters (tblA47YKd73wIwseA)
Purpose: Team member roster and permissions.
Key Fields: Full Name, Email, Phone, Role (Admin/Director/Recruiter/Sourcer/Compliance/Finance), Status (Active/Inactive), User Account (Airtable collaborator), Start Date, Notes
Relationships: Reverse links from Candidates, Vacancies, Clients, Applications, Tasks, Interviews, Documents, Communication Log, Placements, Fees & Revenue
Governance: Single source for team structure and access control.
13-16. Support Tables
Contacts (tbljo14y1gTNWbbKO): General enquiries and leads. Auto-ingestion point.
Vacancy Alerts (tblMhdAgHZB4fiLgr): Email notification subscribers. Automated digest triggers.
WCED School Pipeline (tblIuXKs5Mgzq3hd9): Outbound lead generation for South African schools.
Fees & Revenue (tblOp40e8ApV6IeL4): Financial tracking. Fields: Fee Reference, Amount (USD), Fee Type, Industry, Invoice Date, Due Date, Paid Date, Payment Status, Notes, Client (link), Placement (link), Recruiter (link)
Data Flow Architecture
The primary data flow moves through these stages in sequence:
1. Candidate Entry: Teacher Submissions → Candidates table
2. Matching: Candidates + Vacancies → Applications (junction)
3. Evaluation: Applications → Interviews
4. Conversion: Applications (stage=Placed) → Placements
5. Revenue: Placements → Fees & Revenue (invoicing)
6. Communication: All interactions logged to Communication Log
7. Tasks: Auto-created for follow-ups, document chasing, compliance
🔗 Relationship Map
Table Relationships & Key Connections
| From Table | To Table | Relationship Type | Cardinality | Purpose |
|---|---|---|---|---|
| Candidates | Applications | Lookup | 1:N | One candidate can apply to multiple vacancies |
| Vacancies | Applications | Lookup | 1:N | One vacancy receives multiple applications |
| Clients | Vacancies | Lookup | 1:N | One client has multiple open roles |
| Applications | Placements | Lookup | 1:1 | One successful application = one placement |
| Applications | Interviews | Lookup | 1:N | One application may have multiple interview rounds |
| Placements | Fees & Revenue | Lookup | 1:1 | Each placement triggers one invoice |
| Candidates | Documents | Lookup | 1:N | Candidate has passport, certificates, etc. |
| Candidates | Experience | Lookup | 1:N | Candidate has multiple work history entries |
| Recruiters | All Tables | Lookup | 1:N | Team members own tasks, conduct interviews, verify docs |
| Any Table | Communication Log | Lookup | 1:N | All interactions logged and traceable |
Junction Table: Applications
Why Applications is Critical
Applications is a junction table that resolves the many-to-many relationship between Candidates and Vacancies. Without it:
- We couldn't track that candidate A applied to vacancy B on date X
- We couldn't see all candidates who applied for one role
- We couldn't manage multiple rounds of the same person for the same role
- We couldn't track stage progression (Screening → Submitted → Interview → Offer → Placed)
Applications stores the state of each candidate-vacancy pairing and drives all subsequent workflows.
Lookup & Rollup Dependencies
| Field Name | Formula | Purpose |
|---|---|---|
| Total Applications | COUNTA(Applications) | Count of all applications this candidate submitted |
| Active Applications | COUNTIF(Applications.Stage, NOT "Rejected", NOT "Withdrawn") | Pending applications in pipeline |
| Placements Count | COUNTA(Placements) | Number of successful placements |
| Last Interaction | MAX(Communication Log.Date) | Most recent contact date |
| Documents Status | IF(COUNTA(Documents) = COUNTIF(Documents.Verified, TRUE), "Complete", "Incomplete") | All required documents verified? |
| Field Name | Formula | Purpose |
|---|---|---|
| Total Applications | COUNTA(Applications) | How many candidates applied |
| Interview Count | COUNTA(Interviews) | Number of interviews scheduled |
| Screening Queue | COUNTIF(Applications.Stage, "Screening") | Pending screening applications |
| Days Open | DATETIME_DIFF(TODAY(), {Date Posted}, "days") | How long vacancy has been open |
| Fill Status | IF(Status = "Filled", "CLOSED", IF(COUNTIF(Applications.Stage, "Placed") > 0, "Pending Fill", "Open")) | Current fill status |
| Field Name | Formula | Purpose |
|---|---|---|
| Open Vacancies | COUNTIF(Vacancies.Status, "Active") | Current open roles |
| Total Placements | COUNTA(Placements) | Lifetime placements with this client |
| Revenue (YTD) | SUMIF(Fees.Date, >= START_OF_YEAR(), Fees.Amount) | Year-to-date revenue from client |
| Pipeline Stage | IF(COUNTIF(Vacancies, TRUE) > 0, "Active", IF(COUNTIF(Placements, TRUE) > 0, "Inactive", "Prospect")) | Client relationship status |
| Last Activity | MAX(Communication Log.Date) | Most recent interaction |
Primary & Foreign Keys
Primary Keys (Record IDs): Every Airtable record has an auto-generated RecID that uniquely identifies it. This is the primary key for every table.
Foreign Keys (Links): When one table references another, it uses a "Link to another record" field. This creates the relationship. For example:
- Applications.Candidate → RecID of Candidates record
- Applications.Vacancy → RecID of Vacancies record
- Placements.Candidate → RecID of Candidates record
- Interviews.Application → RecID of Applications record
Reverse Links: When you create a link from Table A to Table B, Airtable automatically creates a reverse link in Table B back to Table A. This enables bi-directional queries and rollups.
🔄 End-to-End Lifecycle
The 10-Stage Candidate Journey
Application Intake
Triggers: Website form OR email resume
Tables: Teacher Submissions → Candidates
Automations: Create candidate record, send confirmation
CV Processing
Triggers: CV uploaded
Tables: Candidate Documents, Candidate Experience
Automations: Parse CV, extract experience, generate AI summary
Qualification Review
Triggers: Manual review by Recruiter
Tables: Candidates (update Pipeline Stage)
Automations: Flag risk items, create compliance tasks
Matching & Application
Triggers: Candidate approved OR vacancy matches profile
Tables: Applications (new record)
Automations: Create application, notify recruiter, log communication
Screening
Triggers: Application stage = Screening
Tables: Tasks (create "Screen Candidate"), Communication Log
Automations: Assign screener, set due date, send prep materials
Interview Scheduling
Triggers: Application stage = Interview
Tables: Interviews (create record), Tasks (update)
Automations: Send calendar invite, notify client, prepare interview kit
Interview Completion
Triggers: Interview record completed
Tables: Interviews (feedback logged), Applications (stage update)
Automations: Log feedback, update candidate status, create follow-up task
Offer & Negotiation
Triggers: Application stage = Offer
Tables: Applications (offer_status field), Communication Log
Automations: Generate offer letter, send to client, track response
Placement & Onboarding
Triggers: Application stage = Placed
Tables: Placements (new), Tasks (onboarding checklist)
Automations: Create placement record, trigger invoicing, onboarding emails
Revenue Tracking
Triggers: Placement created
Tables: Fees & Revenue (new), Communication Log
Automations: Generate invoice, track payment, close case
State Transitions & Validations
| From Stage | To Stage | Requirements | Automations Triggered |
|---|---|---|---|
| New Applicant | Screening | CV uploaded, basic info complete | Assign screener, create task, send confirmation |
| Screening | Submitted to Client | CV reviewed, no risk flags, documents verified | Generate submission package, send to client, log communication |
| Submitted to Client | Interview | Client approval, interview date set | Create interview record, send calendar invite, prep materials |
| Interview | Offer Stage | Positive interview feedback, client approval | Generate offer letter, send to all parties, track deadline |
| Offer Stage | Placed | Candidate acceptance, start date confirmed, contract signed | Create placement, trigger invoicing, onboarding sequence |
| Any Stage | Rejected | Rejection reason documented | Log reason, archive application, create follow-up task |
| Any Stage | On Hold | Hold reason and duration | Pause automations, set re-evaluation date |
Parallel Workflows
While the candidate is in the pipeline, these parallel workflows run independently:
Document Verification Workflow
Compliance checks run continuously. When documents are uploaded: verify each document type, check expiry dates, flag missing docs, create tasks for verification, send reminders for expiring documents (30-day warning).
Communication Tracking Workflow
Every interaction is logged automatically or manually to Communication Log. Daily digest sent to recruiter of follow-ups needed. WhatsApp notifications sent at key milestones (application received, interview scheduled, offer sent).
Task Management Workflow
Tasks auto-created at each stage. Overdue tasks flagged daily. Priority tasks escalated. Owner accountability tracked. Completion logged with timestamp.
Financial Tracking Workflow
Once application moves to "Placed" stage: Create invoice, set due date based on fee type, track payment status, issue reminder emails on due date, close when paid.
💻 Dashboard Specifications
1. Recruiter Dashboard
Purpose
Daily work hub for managing candidates, applications, and follow-ups.
Layout Zones
Top Bar (KPIs): Tasks due today, overdue tasks, new applications, interviews this week
Left Sidebar: My Candidates (searchable list), My Vacancies, My Tasks, My Clients
Main Content: Detailed view of selected candidate or application with full history
Right Sidebar: Quick actions (Email, WhatsApp, SMS), Recent communications, Document status
Key Views
Applications Queue (by stage), Task List (by due date), Candidate Pipeline (by status), Interview Schedule (by date), Recent Activity
Filters
By recruiter, by vacancy, by client, by stage, by date range, by priority
Data Sources
Candidates, Applications, Tasks, Interviews, Communication Log, Placements
2. Client Dashboard
Purpose
Portal for clients to track their open roles and submitted candidates.
Layout
Header: Client name, account manager, contact info
Main Content: Open vacancies (cards), submitted candidates (list), interview schedule, communication thread
Right Panel: Quick stats (total placements, active roles, pending interviews)
Key Views
Active Vacancies (with application counts), Candidate Pipeline (submitted/interviewed/offered/placed), Interview Calendar, Communication History
Filters
By vacancy, by status, by date submitted
Data Sources
Vacancies, Applications (linked to client), Interviews, Placements, Communication Log
3. Executive Dashboard
Purpose
High-level business metrics for leadership and strategic planning.
Key Metrics (Top Row)
Total Placements (YTD), Total Revenue (USD), Active Candidates, Open Vacancies, Placement Rate (%), Average Fee
Charts & Visualizations
Placements by month (trend), Revenue by client (pie), Placements by industry (bar), Conversion funnel (application → placed)
Leaderboard
Top recruiters (by placements), Top clients (by revenue), Top sources (by conversions)
Pipeline Health
Applications in each stage (waterfall), interviews scheduled, offers pending, risk flags
Data Sources
Placements, Fees & Revenue, Applications, Interviews, Candidates, Vacancies
4. Compliance Dashboard
Purpose
Risk management and regulatory compliance tracking.
Key Sections
Expiring Documents: All documents expiring within 30 days. Filters by document type, candidate, status.
Risk Flags: Candidates flagged with risk items. By risk type (visa, qualification, reference, medical).
Verification Status: Compliance checklist per candidate. Documents verified, references checked, background cleared.
Missing Documents: Candidates with incomplete documentation. Priority by placement stage.
Data Sources
Candidate Documents, Candidates (risk flag field), Communication Log
5. Finance Dashboard
Purpose
Invoice management, payment tracking, and revenue forecasting.
Key Sections
Outstanding Invoices: All unpaid invoices. Sorted by due date, amount, client. Includes aging (0-30, 30-60, 60+).
Paid Invoices: Monthly revenue tracking. Compared to forecast and previous year.
Fee Types: Revenue breakdown by fee type (upfront, on-placement, monthly retainer).
Client Accounts: A/R by client. Payment terms, historical compliance.
Cash Flow Forecast: Projected revenue based on placement pipeline.
Data Sources
Fees & Revenue, Placements, Clients
👥 Roles & Permissions
Role Definitions
Admin
Responsibility: Full system access. Database management, user management, integrations.
Access: All tables, all records, all views
Team Size: 1-2 people
Director
Responsibility: Strategic oversight, reporting, team management.
Access: All tables (read), edit Clients, Vacancies, Recruiters
Team Size: 1-2 people
Recruiter
Responsibility: Manage candidate pipeline, conduct interviews, close placements.
Access: Candidates, Applications, Interviews, Tasks (assigned to self), Communication Log
Team Size: 3-10 people
Sourcer
Responsibility: Find and qualify candidates. Light pipeline management.
Access: Candidates (create/edit own), read Applications, read Vacancies
Team Size: 1-3 people
Compliance
Responsibility: Document verification, compliance checks, risk management.
Access: Candidates, Documents, Communication Log, Compliance Dashboard
Team Size: 1 person
Finance
Responsibility: Invoicing, payment tracking, revenue reporting.
Access: Fees & Revenue, Placements (read), Clients (read), Finance Dashboard
Team Size: 1 person
Table-Level Access Matrix
Record-Level Permissions
| Scenario | Rule |
|---|---|
| Recruiter views candidate | Can see all candidates, but can only edit fields in their own applications/tasks |
| Recruiter views tasks | Can see all tasks, but can only complete/edit tasks assigned to them |
| Sourcer creates candidate | Candidate is created and visible to all. Sourcer can edit their own created records. |
| Compliance verifies document | Updates "Verified" field and "Verified By" field. Immutable once verified. |
| Finance marks invoice paid | Updates payment status and date. Can view all invoices but only edit own entries. |
📋 Data Governance
Deduplication Rules
Candidate Deduplication
Primary Match: Email address (case-insensitive)
Secondary Match: Phone number OR (First Name + Last Name + DOB)
Action: System alerts on submission if match found. Recruiter manually reviews and merges if duplicate.
Merge Process: Keep most recent data. Link all applications to primary record. Archive secondary record.
Vacancy Deduplication
Primary Match: Client + Role Title + Location
Action: System alerts if exact match found for same client. Prevents duplicate postings.
Client Deduplication
Primary Match: Organization Name (phonetic) + Country
Action: System alerts if similar names found in same country. Manual review required.
Required Fields by Pipeline Stage
| Stage | Required Fields | Validation Rule |
|---|---|---|
| New Applicant | Full Name, Email, Phone, Teaching Type | Email must be valid format. Phone must be 10+ digits. |
| Screening | + CV uploaded, Highest Qualification | CV must be PDF/DOC. File size < 10MB. |
| Interviewed | + Interview Date, Interviewer, Outcome | Interview date must be in past. Outcome must be selected. |
| Submitted to Client | + Vacancy linked, Client linked, Submission Date | Vacancy must be active. Client must have open positions. |
| Offer Stage | + Offer Status, Offer Details | Offer status = Pending, Accepted, or Rejected. |
| Placed | + Start Date, Placement Fee, Recruiter | Start date >= today. Fee > 0. Recruiter assigned. |
Audit Trail & Compliance
What Gets Logged
Every change to core fields (Pipeline Stage, Offer Status, Documents Verified) is logged with: Changed By (user), Changed At (timestamp), Previous Value, New Value.
Retention Policy
Active Records: Keep indefinitely. Active = current candidate or candidate with active application within 12 months.
Inactive Records: Archive after 24 months of inactivity. Move to archive table but retain for compliance.
Teacher Submissions: Auto-delete after 90 days once converted to Candidate. Or delete on demand after 12 months if not converted.
Communication Log: Keep all entries. Searchable archive for 7 years for legal compliance.
Naming Conventions
Candidate Names: First Last (no special characters except hyphen/apostrophe). Standardize to Title Case.
Vacancy Titles: Use standard job titles (e.g., "Primary Teacher - Grade 3", not "Gr3 Tchr"). Include subject and grade when applicable.
Client Names: Official organization name. Include "School", "International", etc. for clarity. No acronyms unless universally known.
Task Titles: Action-verb format. "Screen CV for grade 5 position" not "screening". Use consistent verbs (Screen, Prepare, Contact, Verify, etc.).
Field Names: PascalCase for record names. snake_case for internal field IDs. Clear, singular nouns.
Application References: Auto-generated: "APP-[Year][Month]-[Candidate Initials]-[Vacancy ID]" e.g., "APP-202604-JDM-VAC001"
Data Quality Standards
Every record must pass these checks to move forward in the pipeline:
- No blank required fields for current stage
- Email addresses are valid and unique (no duplicates)
- Phone numbers are formatted consistently
- Dates are in past (except future start dates)
- Currency amounts are positive numbers
- Links point to existing records
- Risk flags are documented with reason
- Status fields match allowed values
🤖 Resume Parser Architecture
Parser Overview
The Resume Engine automatically extracts key information from uploaded CVs, populates candidate fields, and enables intelligent matching with vacancies.
3 Format Types
GCC Format
For Middle East roles (UAE, Saudi, Qatar). Extraction focus: Work visa eligibility, passport status, Islamic qualification recognition (Al Azhar, etc.)
USA Format
For North America roles. Extraction focus: State teaching licenses, US degree recognition, work authorization status, SAT/ACT experience
Global Format
For all other regions (UK, Canada, Australia, SA). Extraction focus: English-medium qualifications, international curriculum experience, teaching certifications
Parsing Workflow
Extracted Fields (Minimum Set)
| Field | Data Type | Usage | Confidence Level |
|---|---|---|---|
| Full Name | Text | Candidate identification | 95%+ |
| Deduplication, communication | 90%+ | ||
| Phone | Phone | Direct contact | 85%+ |
| Teaching Experience (years) | Number | Qualification matching | 85%+ |
| Primary Subject | Text | Vacancy matching | 80%+ |
| Highest Qualification | Single Select | Compliance, client requirements | 85%+ |
| Degree/University | Text | Qualification verification | 80%+ |
| Work History Dates | Dates | Gap detection, timeline | 90%+ |
| Languages Spoken | Text | Client location matching | 75%+ |
| Certifications | Text | Teaching qualification | 80%+ |
Approval Workflow
High Confidence (85%+)
Auto-populate fields and mark as "Parsed". Recruiter reviews but not required to approve.
Medium Confidence (70-84%)
Flag for manual review. Create task: "Review parsed CV fields". Recruiter corrects as needed before advancing candidate.
Low Confidence (<70%)
Alert recruiter. Require manual entry of critical fields before candidate can move to Screening stage.
Integration with Airtable
Trigger: File uploaded to "CV" field in Candidates table
Process: Make webhook calls resume parser API → receives JSON → auto-maps to Airtable fields
Automation: Create linked Candidate Experience records for each job listed
Output: Update Candidates.Resume Parsed = "Yes", populate extracted fields, generate Executive Summary AI field
🔌 Integration Map
API Layer
| Integration | Purpose | Data Flow | Frequency |
|---|---|---|---|
| Airtable API | Core data layer. Read/write all records, create links, run scripts | Bi-directional | Real-time |
| Make.com Webhooks | Workflow automation. Trigger actions on data changes. | Inbound: Airtable → Make → External APIs | Instant on trigger |
| Resume Parser API | Extract CV data. Populate candidate fields automatically. | Inbound: CV file → Parser → JSON → Airtable | On CV upload |
| Email (SMTP/IMAP) | Email capture, forwarding, auto-responses. All communications logged. | Bi-directional | Real-time |
| WhatsApp Business API | Direct candidate messaging. Interview confirmations, offer sends. | Outbound from Make | On trigger |
| PDF Generation | Create invoices, offer letters, submission packages | Outbound from Make | On demand |
| Google Calendar | Interview scheduling, send calendar invites | Outbound | On interview creation |
| Slack/Teams | Alert team to high-priority events (placements, risk flags, overdue tasks) | Outbound notifications | On trigger |
Webhook Triggers (via Make)
| Trigger Event | When | Actions |
|---|---|---|
| New Candidate Created | Form submitted OR email added | Send confirmation email, create task to review CV, send welcome SMS |
| CV Uploaded | File added to Candidate.CV field | Call resume parser, create background task, notify recruiter |
| Application Stage Changed | User updates Applications.Stage field | Update Communication Log, create corresponding tasks, trigger notifications |
| Interview Created | New Interviews record | Send calendar invite, create prep task, notify client, log communication |
| Application Placed | Application.Stage = "Placed" | Create Placement record, trigger Fees record, send confirmation emails, onboarding sequence |
| Document Expiring | Document.Expiry < 30 days | Create task, alert compliance, send notification to candidate |
| Task Due Tomorrow | Daily check at 8 AM | Send reminder email to task owner |
| Risk Flag Added | Candidate.Risk Flag set to TRUE | Alert compliance and director, log note, create follow-up task |
Email Integration
Inbound Email Processing
Setup: Dedicated email addresses (careers@eduplace.com, applications@eduplace.com)
Processing: Emails auto-forwarded to Make. Parser extracts sender, subject, body, attachments.
Action: Create new Candidate OR find existing by email. Attach CV to record. Log communication. Create intake task.
Outbound Email Automation
Sends: Confirmation, CV review request, interview invite, offer letter, rejection, congratulations, payment reminder
Tracking: All sends logged to Communication Log with timestamp, recipient, status (sent/bounced/opened)
WhatsApp Integration
Candidate Notifications
Trigger messages at key milestones: Application received, Interview scheduled, Offer extended, Congratulations placed, Payment confirmation
Opt-in: Candidates must consent. Tracked in Candidates.WhatsApp consent field.
Data Security & Compliance
- All API calls use encrypted HTTPS
- API keys stored securely (never in scripts or logs)
- Rate limits respected (Airtable: 5 req/sec, Resume Parser: 100/day)
- Webhook payloads logged but sensitive fields masked (no SSN, passport numbers)
- Airtable API tokens rotated quarterly
- Make.com automations reviewed monthly for security
📅 Build Plan & Roadmap
Phase 1: Foundation (Weeks 1-3)
Deliverables
- Complete Airtable schema (16 tables, all fields, links, views)
- Recruiter Dashboard (basic candidate list, application queue, task list)
- Form builder for website intake
- Basic automations: New candidate email, Application tracking
- Permission model implemented (6 roles)
- Communication Log auto-logging
Success Criteria
Team can create candidates, link to vacancies, and progress applications from New Applicant to Interview stage. All data captured and linked.
Phase 2: Intelligence (Weeks 4-6)
Deliverables
- Resume parser integration (3 format types)
- AI fields: Executive Summary, Extracted Experience
- Advanced automations: Interview invites, offer letters, document expiry alerts
- Compliance Dashboard (document tracking, risk flags)
- Task assignment & escalation workflows
- Pipeline KPI reporting
Success Criteria
CVs automatically parsed and candidate experience populated. Automations reduce manual data entry by 70%. Risk items flagged before interview.
Phase 3: Client Experience (Weeks 7-10)
Deliverables
- Client portal (dashboards, vacancy management, application tracking)
- Finance Dashboard (invoicing, payment tracking, AR aging)
- Executive Dashboard (KPIs, leaderboards, forecasting)
- Branded PDF outputs (offer letters, invoices, reports)
- WhatsApp integration for candidate notifications
- Email auto-response & forwarding system
- Training documentation for all 6 roles
Success Criteria
Clients can self-service track roles and candidates. Finance team processes invoices without manual data entry. Leadership has real-time visibility into pipeline and revenue.
Phase 4: Enterprise (Optional)
Deliverables
- Custom frontend (React/Next.js) replacing Airtable interfaces
- REST API for candidate data, applications, placements
- Mobile app for recruiters (iOS/Android)
- Multi-tenant SaaS architecture
- Advanced reporting & business intelligence
- Compliance automation (GDPR, data retention)
Timeline
Months 3-6 after Phase 3 completion. Consider only if need to scale beyond 50 concurrent users or 10,000 candidates.
Success Metrics by Phase
| Phase | Metric | Target |
|---|---|---|
| Phase 1 | Candidates in system | 100+ |
| Applications processed | 50+ | |
| Team adoption | 100% of team using daily | |
| Phase 2 | CVs parsed successfully | 95%+ accuracy |
| Manual data entry reduction | 70% less time | |
| Time to placement | Reduce by 30% | |
| Phase 3 | Client portal adoption | 80%+ of clients using |
| Invoicing automation | 100% of placements invoiced on day 1 | |
| Revenue visibility | Real-time AR reporting |
Team & Resources
Phase 1: 1 Airtable architect + 1 Make automation engineer. 3 weeks. Cost: $8K-12K
Phase 2: +1 API engineer (resume parser), +1 AI specialist. 3 weeks. Cost: $12K-18K
Phase 3: +1 frontend developer, +1 designer (UI/branding), +1 trainer. 4 weeks. Cost: $20K-30K
Total Phase 1-3 Investment: $40K-60K over 10 weeks. ROI: 6-9 month payback from reduced hiring cycle time and improved placement rates.
Document Version: 1.0 | Last Updated: April 2, 2026
This document is the single source of truth for the Eduplace Recruitment Operating System. All architecture, schema, and integration decisions reference this document.
For updates or corrections, contact the system architect.