top of page

Leveraging Generative AI to Build a Serverless Job Intelligence Tool

📋 The Overview

To streamline market research and bypass the manual friction of job boards, I collaborated with Generative AI to design, code, and deploy a custom, cloud-hosted automation script. Acting as the system architect, I used precise prompt engineering to guide the AI through an iterative, phase-based development lifecycle—resulting in a zero-cost, automated micro-service.

Check out this AI Blueprint I created to help you make your own Job Searching tool. 

screenshot of auto job tool.png
🛠️ The Phase-by-Phase AI Collaboration Process
Phase 1: Architectural Design & Guardrails

Instead of asking the AI to write a massive block of code all at once (which often leads to broken syntax), I initiated the project by establishing the business logic and forcing a modular, step-by-step approach.

  • The Prompt Strategy: I gave the AI a specific persona ("expert software architect"), detailed my niche target fields (Enablement, LXD), defined strict compensation filters ($110K+), and explicitly commanded it not to write code yet, but to provide a blueprint first.

  • The Prompt Used:

    "You are an expert software architect and Python developer. I want to build a custom, automated job search tool that uncovers 'hidden' or recently posted jobs in my field... I want to build this step-by-step. Do not write all the code at once. First, give me the high-level architecture, and then wait for me to say 'Step 1' to start coding..."

  • The Outcome: The AI delivered a low-cost, serverless architecture blueprint utilizing Python, SerpApi (for clean Google Jobs data), a flat-file text database for deduplication, and GitHub Actions for free cloud automation.

Phase 2: Environment Setup & Infrastructure

Before writing the core logic, I had the AI guide me through setting up the secure container environment on GitHub.

  • The Prompt Strategy: I requested a sequential, non-technical walkthrough for provisioning the repository and securing sensitive credentials.

  • The Prompt Used:

    "Walk me through how to make this step by step, including what websites to go to do this, how to do it, etc. Walk me through each phase one by one. I'll tell you when I am done and then give me the next phase."

  • The Outcome: The AI walked me through initializing a private repository, creating the environment configuration files (requirements.txt and seen_jobs.txt), and securely mapping API keys to GitHub Repository Secrets (SERPAPI_KEY, MY_EMAIL) to prevent hardcoding sensitive data.

Phase 3: Agile Course-Correction (The Pivot)

During infrastructure planning, I noticed a constraint: the originally suggested third-party email API (SendGrid) had retired its forever-free tier. I used AI to pivot the technical stack to keep production costs at zero.

  • The Prompt Strategy: I challenged the AI on the tool choice based on pricing constraints and asked for an alternative.

  • The Prompt Used:

    "SendGrid only had a two month free trial, is this the right tool?"

  • The Outcome: The AI successfully pivoted the architecture away from heavy third-party dependencies, refactoring the system to use Python’s native, built-in smtplib library connected securely via a 16-character Google App Password. This eliminated all email platform dependencies and kept the runtime completely free.

Phase 4: Code Implementation & Data Logic

With the pipeline secured, I instructed the AI to generate the core Python engine (job_hunter.py).

  • The AI Design Execution: The code was engineered to execute three primary functions:

    1. API Data Ingestion: Loop through target search arrays to fetch structured JSON data.

    2. State Tracking (Deduplication): Load previously seen Job IDs into a Python set(), cross-reference incoming data, and discard matches.

    3. Regex Parsing: Scan the body text of full job descriptions using Regular Expressions (re.findall) to capture modern salary transparency text (e.g., matching $125k, 110,000, etc.) and filter by the threshold.

 
Phase 5: Automation Deployment & Optimization

Finally, I deployed the automation layer using GitHub Actions (daily_run.yml) and manually triggered a test. Upon reviewing the initial dataset of 26 jobs, I noticed a high level of noise from higher education listings and executive-level titles. I re-engaged the AI to optimize the script's filtering accuracy.

  • The Prompt Strategy: I requested a two-pronged adjustment—adding negative search operators to the API query and an algorithmic string-matching exclusion to the Python title parser.

  • The Prompt Used:

    "I'd like to make some adjustments. I do not want higher ed or education jobs, I would like to focus on tech companies, also no titles with director. Can you help me make those adjustments in the code? Walk me through step by step one phase at a time."

  • The Outcome: * Query Optimization: Updated the search array to inject Google advanced operators (-site:.edu, -"higher ed", -"university").

    • Title Filtering: Added an array-matching function (if any(bad_word in title_lower...)) to instantly discard "Director", "VP", or "Executive" roles during the data processing loop.

bottom of page