---
# System prepended metadata

title: Sparks Enterprise - Automation Implementation

---

---
title: 'Sparks Enterprise - Automation Implementation'
---

Sparks Enterprise - Automation Implementation
===


## Table of Contents

[TOC]

## Description

Structures automation flow for candidates application process.

Automation Flow
---
```sequence
Applicant->Job post: sends CV
Job post-->Email Inbox: forwards
Email Inbox->Data Extractor: extracts data
Applicant->Data Extractor: searching
Data Extractor->Send Email: invite for interview
Send Email-->Call applicants: contact again
Call applicants->Schedule: book candidate
```

#### Applicant

###### Activelly searching

1. Finds job post
2. Applies including CV in `.pdf`/`.doc` format

###### Search CVs online

1. Download CV list to email inbox
    1. **ziprecruiter**
        a. sends `.csv` with selected candidates details (`name`, `email`, link to page)
        b. criteria for `no` (1101) is the date in the resumé (overqualified), looking for people max age of 35
            1. Column J =< 2004 then Column H = Yes
            2. Candidate contacted within 1 week period then Column H = Yes
            3. Candidate already interviewed or not interested (1101) then Column H = Yes
            4. Candidate contacted more than 4 times then Column H = Yes
            - Notes: that’s mostly what the formula does as of now, however there may be few additional columns I would like to add to categorize each candidate by key words in experience or education, but I have to think about it more.
    2. **monster**
        a. sends email with individual candidate including details (`name`, `email`, `cv` doc)
        b. finds specific keywords
    3. **christian's resumés**
        a. specific format
    4. **indeed** (*halt this one*)
        a. requires login to get applicants' details
2. Extract data from downloaded CVs in specific date range
    a. find specific keywords
    b. categorize candidate based on keywords ("customer service", "hospitality", etc)
3. Data is outputed into candidate list

#### Email Inbox

1. Receives job application together with CV attachment

#### Data Extractor

1. Fetch email message content
2. Collect `.pdf` file

#### Data Extractor

1. Scan `.pdf` file
2. Gather data about applicant
    1. `name`
    2. `mobile number`
    3. `email address`
    4. calculate `age` range (from first job or education)
3. Gather metadata about application
    1. platform they used to apply
    2. if they've been contacted already
    3. how many times they've been contacted before
    4. if they've attended an interview before
    5. if they've been called before
    6. source of application
    7. job ad title

#### Send Email

1. Send email to applicant
    a. create stamp `date` and `time` for when this was addressed
    b. Don't contact overqualified
    c. Dont contact people that have been contacted before
2. Build list of applicants that didn't reply

Templates:
- blank – never been contacted (1st attempt email)
- 1 – contacted 2nd time
- 1.5 – contacted within the last week
- 2 – contacted with 3rd email 
- 2.5 – sourced resume / resume pulled from database (database email) or Column M = SCD 
- 3 – contacted with 4th email 

##### Replies:

- confirm interview
- reschedule date/time
    1. reply with template
    2. provide another date/time
- not available at that work schedule
    1. find email in excel database
    2. provide another date/time
- they weren't able to attend and want to come back
- not available anymore
    1. copy the email
    2. see that they found a job
    3. go to the excel database
    4. search the name
    5. update the status with "got another job"
- not interested
- they have a question
- other

After this, also need to update the callers excel sheet and remove the ones that replied

#### Call applicants

1. Assign list to different callers
2. Update list according to responses

#### Client acquisition
clients applicants interview sheet
- name
- mobile number
- email
- datetime
- notes
- interviews booked
- interviews showed
- booked for 2nd interview
- past candidates
- recruiting stats
- should have a calendar to show the calendars


#### Schedule

1. Check available slots for interview (add in calendar, split by client)
2. Create schedule for interview
3. Include invitation for interview (date + time)

## Analytics

- ...

## Resources

- GoDaddy email: sends through Gmail

## Current tool

Developed in R, lacking:
  - database architecture and persistance
  - data synchronization and normalization
  - integration with external services (e.g. Google Calendar)
  - 
  - automation

#### Data extraction

1. run the script
2. check all email messages in the inbox within a specific date range
3. parse names and phone numbers and checks for duplicates
4. gets the date that was contacted and the datetime of the interview
5. if the person was contacted before, then it will automatically delete the person from the row
6. if the person was already contacted within a week or they're overqualified: when it runs the script it will mark them as "Yes"
7. 0/1/1.5/2/2.5/3 column, will be related to the type of email template that is sent to people
8. shouldn't pull the email "route@monster.com" on the email sender - this email address is meaningless
9. after running the tool, it generates a excel sheet with:
- name
- mobile number
- email
- notes (1101, meaning it's overqualified)
- number of times contacted
- old comments
- date of application
- contacted (yes/no)
- time
- min year
- max year
- location
- sr/scd ()
- ad (monster/ziprecruiter)
- keywords (job title: customer service, sales, administration, accounting, reception, call center, retail, waiter, office manager, general manager)
- date
- title

#### Sending emails
- select template to use for the emails
- select logo to include in the emails
- select client (signature for the emails)
- name for the sender of the emails
- email for the sender of the emails
- postal address of the sender (line 1)
- postal address of the sender (line 2)
- subject for the email
- company name
- select the weekdays (date range)
- select the times for the interviews

Note: currently there's a limit with gmail for 250 emails in 24h period

#### State if the art app: [Applicant Starter](https://www.applicantstarter.com/) web app
- applicant browser
  - first name
  - last name
  - email
  - mobile number
  - tags
  - job title
  - site name (source)
  - datetime
  - status
  - scheduled (yes/no)
  - emailed (yes/no)
  - rating
- recruiter's numbers (stats)
  - recruiter name
  - contacted
  - 1st round booked
  - 1st showed up
  - 2nd round booked
  - 2nd showed up
  - canceled
  - rescheduled
  - rejected
  - missed
  - next day
  - farther out
  - hired
  - qualified


## Ideal expectation description:
- sync the database with a calendar
- ringcentral stats
- show a calendar and candidates information to the client
- sync a list with the 
    - database
    - email
    - calendar
    - call list
    - ringcentral to call
        - also track how many phone calls where made
	    - get stats, make sure that people are performing


## Next steps

- [Invoicing](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/account)
- Automate client acquisition
- Automate recruitment
    - it is possible to build something like a Google Chrome extension or even integrate in the app something that programmatically would fetch the resumes that match particular keywords or criteria, mark them as interested, export them to the inbox and trigger the whole process from the beginning
- Connect [RingCentral](https://developers.ringcentral.com/api-and-docs.html)

## Development process

1. Requirements list
2. Application architecture & features description
3. Solution proposal
4. Solution approval
5. Design mockups proposal
6. Design mockups approval
7. Development
8. Testing
9. Deployment
