pakfreelance-ai-agent / red_flags.py
faiqarasheed28's picture
Upload 11 files
5967b99 verified
from crewai import Agent, Task, Crew, Process
import os
from dotenv import load_dotenv
load_dotenv()
os.environ["GROQ_API_KEY"] = os.getenv("GROQ_API_KEY")
MODEL = "groq/llama-3.3-70b-versatile"
red_flag_analyst = Agent(
role="Client Red Flag Analyst",
goal="Detect risky freelance job postings and protect freelancers from bad clients",
backstory="""You are an expert at evaluating freelance job posts for risk.
You can quickly identify scam patterns, vague requirements, exposure-only offers,
scope-budget mismatch, manipulative tone, and warning signs that waste freelancer time.""",
verbose=False,
allow_delegation=False,
llm=MODEL
)
def detect_client_red_flags(job_posting):
task = Task(
description=f"""Analyze this freelance job posting and detect client red flags.
JOB POSTING:
{job_posting}
Evaluate specifically for:
1. Exposure-only or unpaid work language
2. Unrealistic budget vs scope mismatch
3. Vague requirements or missing deliverables
4. Unrealistic timeline pressure
5. Scam-like patterns (external contact push, payment outside platform, urgency pressure)
6. Communication or tone red flags
Output format (strict):
RISK LEVEL: Low/Medium/High
RISK SCORE: X/10
RED FLAGS:
- [Short bullet]
- [Short bullet]
WHY THIS MATTERS:
[2-4 concise lines]
RECOMMENDED ACTION:
[1-3 practical steps for freelancer]
Rules:
- Keep total output under 180 words
- Be specific to this job post
- If no strong red flags exist, say so clearly and explain why
- Output only the final analysis text""",
expected_output="A concise risk report with risk level, score, red flags, and actions",
agent=red_flag_analyst
)
crew = Crew(
agents=[red_flag_analyst],
tasks=[task],
process=Process.sequential,
verbose=False
)
result = crew.kickoff()
return str(result).strip()