Laddro DocsLaddro Docs
Guides

Building AI Agents with Laddro

Building AI Agents with Laddro

Use the Laddro Career API to build autonomous agents that manage career tasks — from resume tailoring to bulk job applications.

What Agents Can Do

Agent TypeDescription
Resume Tailor AgentTakes a resume and a list of job URLs, tailors the resume for each, exports PDFs
Job Application BotParses a resume, matches to job boards, tailors + generates cover letters for each
Career Coach AgentAnalyzes a resume, suggests improvements, rewrites weak sections
Batch Export AgentRenders a resume across all 22 templates, compares layouts
Interview Prep AgentReads a tailored resume + job description, generates likely interview questions

Architecture

User → Agent (Claude Code / LangChain / Custom) → Laddro Career API
                                                    ├── Parse resume
                                                    ├── Tailor for job
                                                    ├── Generate cover letter
                                                    └── Export PDF

Your agent calls the API endpoints directly (REST) or uses the MCP server (for Claude-based agents). The API handles AI processing, PDF rendering, and data storage.

Option 1: MCP-Based Agent (Claude Code)

The fastest way. Configure the MCP server and Claude calls the tools automatically.

{
  "mcpServers": {
    "laddro": {
      "command": "npx",
      "args": ["-y", "@laddro/career-mcp"],
      "env": {
        "LADDRO_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Then ask Claude:

"Parse my resume from resume.pdf, tailor it for this job posting
at https://example.com/senior-engineer, and generate a cover letter.
Export both as PDFs using the Graphite template."

Claude will chain the API calls: parse → tailor → generate cover letter → export.

Option 2: REST API Agent (Any Framework)

Build a custom agent using any framework — LangChain, CrewAI, AutoGen, or plain code.

Resume Tailor Agent (Python)

import requests

API_KEY = "YOUR_API_KEY"
BASE = "https://api.laddro.com/v1"
HEADERS = {"x-api-key": API_KEY, "Content-Type": "application/json"}

def tailor_for_jobs(resume_id, job_descriptions):
    results = []
    for jd in job_descriptions:
        # Tailor resume (3 credits)
        resp = requests.post(f"{BASE}/tailor", headers=HEADERS, json={
            "resumeId": resume_id,
            "jobDescription": jd
        })
        tailored = resp.json()

        # Generate cover letter (2 credits)
        resp = requests.post(f"{BASE}/cover-letters/generate", headers=HEADERS, json={
            "resumeId": resume_id,
            "jobDescription": jd
        })
        cover_letter = resp.json()

        # Export PDF (1 credit)
        resp = requests.post(f"{BASE}/export", headers=HEADERS, json={
            "resumeId": resume_id,
            "templateId": "graphite"
        })

        results.append({
            "job": jd[:50],
            "tailored": tailored,
            "coverLetter": cover_letter
        })

    return results

Streaming Agent (TypeScript)

const response = await fetch('https://api.laddro.com/v1/tailor', {
  method: 'POST',
  headers: {
    'x-api-key': API_KEY,
    'Content-Type': 'application/json',
    'Accept': 'text/event-stream'  // Enable streaming
  },
  body: JSON.stringify({ resumeId, jobDescription })
})

const reader = response.body.getReader()
const decoder = new TextDecoder()

while (true) {
  const { done, value } = await reader.read()
  if (done) break

  const lines = decoder.decode(value).split('\n')
  for (const line of lines) {
    if (line.startsWith('data: ')) {
      const event = JSON.parse(line.slice(6))
      if (event.type === 'done') return
      // Process each section as it streams in
      agent.process(event.section, event.content)
    }
  }
}

API Endpoints for Agents

These are the most useful endpoints for agent workflows:

EndpointCreditsUse Case
POST /v1/resumes/parse2Ingest a resume from PDF/DOCX
POST /v1/tailor3Tailor resume for a specific job
POST /v1/cover-letters/generate2Generate a targeted cover letter
POST /v1/export1Export resume as PDF
PUT /v1/resumes/{id}/render1Render with a specific template
GET /v1/templates0List available templates
GET /v1/resumes0List user's resumes

Credit Planning for Agents

A typical "apply to one job" workflow:

StepCredits
Parse resume (once)2
Tailor for job3
Generate cover letter2
Export resume PDF1
Export cover letter PDF1
Total per job9 (7 after first parse)

With the free tier (50 credits/month), you can apply to ~7 jobs. Subscribers (200/month) can do ~28. Buy credit packs for higher volume.

Best Practices

  1. Parse once, tailor many — Parse the resume once and reuse the resumeId for all tailoring and cover letter generation.
  2. Use streaming — For user-facing agents, use SSE streaming (Accept: text/event-stream) so users see results in real-time.
  3. Handle 402 errors — Check credit balance before batch operations. The API returns 402 Payment Required when credits run out.
  4. Use BYOK for volume — If you're building a high-volume agent, use BYOK with your own AI provider key to avoid per-request AI costs.
  5. Rate limit awareness — Public endpoints: 30 req/min. Protected: 100 req/min. Build in backoff for 429 responses.

On this page