Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

🚀 JobFinder is a Spring Boot application that fetches the latest developer job postings, analyzes them with OpenAI, and delivers personalized alerts straight to your WhatsApp via Twilio. Built with Java, Spring AI, PostgreSQL, and Maven — a practical integration of AI + messaging + databases to simplify job hunting.

NotificationsYou must be signed in to change notification settings

seadmustafa/JobFinder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JavaSpring AITwilioWhatsAppPostgreSQLMaven


📖 Introduction

JobFinder is a Spring Boot application designed to automatically fetch new developer job postings from online job boards and deliver them directly to your WhatsApp.

This project was built to:

  • Save time ⏱️ — no more manually checking job boards every day.
  • Stay updated 📲 — receive job alerts instantly via WhatsApp.
  • Experiment with AI 🤖 — integrate OpenAI through Spring AI for summarizing job posts or extracting key info.
  • Practice enterprise integration 🛠️ — connecting multiple technologies (Spring, Twilio, WhatsApp API, Postgres).

This project also serves as a real-world example of combiningAI + messaging + databases in a clean, production-grade setup.

📊 Diagram

flowchart TB    %% Application entry    Application["JobfinderApplication"]:::config    click Application "https://github.com/seadmustafa/jobfinder/blob/master/src/main/java/com/ai/finder/JobfinderApplication.java"    %% Presentation Layer    subgraph "Presentation Layer"        Controller["JobController"]:::controller        click Controller "https://github.com/seadmustafa/jobfinder/blob/master/src/main/java/com/ai/finder/controller/JobController.java"    end    %% Business Layer    subgraph "Business Layer"        FinderService["JobFinderService"]:::service        click FinderService "https://github.com/seadmustafa/jobfinder/blob/master/src/main/java/com/ai/finder/service/JobFinderService.java"        ScrapingService["WebScrapingService"]:::service        click ScrapingService "https://github.com/seadmustafa/jobfinder/blob/master/src/main/java/com/ai/finder/service/WebScrapingService.java"        AnalysisService["JobAnalysisService"]:::service        click AnalysisService "https://github.com/seadmustafa/jobfinder/blob/master/src/main/java/com/ai/finder/service/JobAnalysisService.java"        WhatsAppService["WhatsAppService"]:::service        click WhatsAppService "https://github.com/seadmustafa/jobfinder/blob/master/src/main/java/com/ai/finder/service/WhatsAppService.java"    end    %% Data Access Layer    subgraph "Data Access Layer"        Repository["JobRepository"]:::repository        click Repository "https://github.com/seadmustafa/jobfinder/blob/master/src/main/java/com/ai/finder/repository/JobRepository.java"        Entity["Job"]:::entity        click Entity "https://github.com/seadmustafa/jobfinder/blob/master/src/main/java/com/ai/finder/entity/Job.java"        DB[(PostgreSQL)]:::db    end    %% Integration Layer    subgraph "Integration Layer"        ChatClient["ChatClient"]:::ai        click ChatClient "https://github.com/seadmustafa/jobfinder/blob/master/src/main/java/com/ai/finder/ai/ChatClient.java"        Prompt["Prompt"]:::ai        click Prompt "https://github.com/seadmustafa/jobfinder/blob/master/src/main/java/com/ai/finder/ai/Prompt.java"        Response["ChatResponse"]:::ai        click Response "https://github.com/seadmustafa/jobfinder/blob/master/src/main/java/com/ai/finder/ai/ChatResponse.java"        Config["OpenApiConfig"]:::config        click Config "https://github.com/seadmustafa/jobfinder/blob/master/src/main/java/com/ai/finder/config/OpenApiConfig.java"        Props["application.properties"]:::config        click Props "https://github.com/seadmustafa/jobfinder/blob/master/src/main/resources/application.properties"    end    %% External Systems    JobBoards["Job Boards"]:::external    OpenAI["OpenAI API"]:::external    TwilioAPI["Twilio WhatsApp API"]:::external    UserWhatsApp["User WhatsApp Client"]:::external    %% Relationships    Application -->|starts| Controller    Controller -->|trigger| FinderService    FinderService -->|scrape| ScrapingService    ScrapingService -->|data| Repository    Repository -->|save/read| DB    FinderService -->|raw data| AnalysisService    AnalysisService -->|build prompt| Prompt    AnalysisService -->|send request| ChatClient    ChatClient -->|call API| OpenAI    OpenAI -->|response| ChatClient    ChatClient -->|return summary| Response    FinderService -->|summary| WhatsAppService    WhatsAppService -->|send message| TwilioAPI    TwilioAPI -->|deliver| UserWhatsApp    Controller -->|docs| Config    %% External connections    ScrapingService -->|fetch| JobBoards    %% Styles    classDef controller fill:#ADD8E6,stroke:#333,stroke-width:1px    classDef service fill:#87CEFA,stroke:#333,stroke-width:1px    classDef repository fill:#FFD580,stroke:#333,stroke-width:1px    classDef entity fill:#FFE4B5,stroke:#333,stroke-width:1px    classDef ai fill:#D8BFD8,stroke:#333,stroke-width:1px    classDef config fill:#D3D3D3,stroke:#333,stroke-width:1px    classDef db fill:#FFA500,stroke:#333,stroke-width:1px,shape:cylinder    classDef external fill:#98FB98,stroke:#333,stroke-width:1px
Loading

🎥 Live Presentation


⚙️ Tech Stack


🚀 Installation & Setup

1. Clone the repository

git clone https://github.com/your-username/jobfinder.gitcd jobfinder

2. Configure environment variables

Create a .env file (or export variables in your shell):

# DatabaseDB_URL=jdbc:postgresql://localhost:5432/jobfinderDB_USERNAME=your_db_userDB_PASSWORD=your_db_pass# OpenAIOPENAI_API_KEY=sk-xxxx# Twilio / WhatsAppTWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxTWILIO_AUTH_TOKEN=xxxxxxxxxxxxxxxxxxxxxxTWILIO_WHATSAPP_FROM=whatsapp:+14155238886TWILIO_WHATSAPP_TO=whatsapp:+1234567890

3. Build the application

mvn clean install

4. Run locally

mvn spring-boot:run

The application will start onhttp://localhost:8080.

5. Database migration

Make sure Postgres is running and you have a database created:

CREATE DATABASE jobfinder;

Flyway or Hibernate will validate schema on startup.

🛡️ Security Notes

Secrets are not hardcoded, only injected via environment variables.

.gitignore excludes IDE, build, and secret files (.idea/, target/, .env).

Use ddl-auto=validate in production with migrations via Flyway/Liquibase.

🤝 Contributing

Contributions are welcome! Fork the repo, create a feature branch, and open a pull request.

About

🚀 JobFinder is a Spring Boot application that fetches the latest developer job postings, analyzes them with OpenAI, and delivers personalized alerts straight to your WhatsApp via Twilio. Built with Java, Spring AI, PostgreSQL, and Maven — a practical integration of AI + messaging + databases to simplify job hunting.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp