import gradio as gr import requests API_URL = "https://openrouter.ai/api/v1/chat/completions" def generate_cover_letter(resume, job_desc): prompt = f""" You are a career expert. Write a personalized, ATS-friendly cover letter for this resume and job description. Resume: {resume} Job Description: {job_desc} """ headers = { "Content-Type": "application/json" # No API key required for free models } data = { "model": "meta-llama/llama-4-maverick:free", "messages": [ {"role": "user", "content": prompt} ] } try: response = requests.post(API_URL, headers=headers, json=data) if response.status_code == 200: return response.json()["choices"][0]["message"]["content"] else: return f"❌ API Error {response.status_code}: {response.text}" except Exception as e: return f"❌ Failed to connect to OpenRouter: {str(e)}" # Gradio UI demo = gr.Interface( fn=generate_cover_letter, inputs=[ gr.Textbox(lines=12, label="Paste Your Resume"), gr.Textbox(lines=10, label="Paste Job Description") ], outputs=gr.Textbox(label="Generated Cover Letter"), title="AI Cover Letter Generator", description="No API key needed — powered by LLaMA 4 Maverick (free via OpenRouter). Just paste your resume and job description to get a tailored cover letter." ) demo.launch()