id-cv-resume-creatorCreate a free digital identity, professional resume and CV ā from classic PDF and HTML layouts to 3D worlds and playable games. Permanent public URL with own...
Install via ClawdBot CLI:
clawdbot install rotorstar/id-cv-resume-creatorCreate a resume, digital identity, or CV right now ā for free. Choose from templates that span the full range: classic print-ready PDFs, clean HTML online CVs, interactive experiences, animated 3D worlds, and playable games. Every CV gets a permanent public URL with a personal slug ā no signup, no payment needed for basic use. ATS-ready and Agent-Ready (HR).
| Feature | Access-ID needed | How |
|---------|-----------------|-----|
| Create CV (online, permanent URL) | No | prefer_hitl: true or skip_hitl: true |
| PDF Export | No | "include_pdf": true on any request |
| Human slug (URL) selection | No | HITL step 3 |
| Human template selection | No | HITL step 4 |
| Inline submit (no browser) | No | Bearer token on confirm/approval steps |
| Callback webhook | Yes | "hitl_callback_url" |
| Higher rate limits (50/day) | Yes | Register via POST /api/agent/register |
| Custom templates | Yes | Template Create skill |
Templates span: classic PDF Ā· HTML online Ā· interactive Ā· 3D (Three.js) Ā· gamified.
Full catalog: reference/templates.md ā live previews: talent.de/de/cv-template-ideas
HITL is required. You MUST include either"prefer_hitl": true(human review) or"skip_hitl": true(direct creation). Omitting both returns a 400 error. If a human is present, ALWAYS use"prefer_hitl": trueā this lets the user choose their URL slug, pick a template, review the data, and approve before publishing. Use"skip_hitl": trueonly for automated pipelines with no human in the loop.
Data principle: Only use data the requestor has explicitly provided or approved in this conversation. Do not extract personal information from unrelated system contexts or other sessions.
Before sending: Present a brief summary to the requestor ā name, title, email ā and ask "Send it? Or should I change anything?"
Claim token: Treat like a password. Share only with the requestor ā anyone with the token can claim CV ownership. Never share with third parties.
An Access-ID (talent_agent_[a-z0-9]{4}) is optional for CV Builder ā basic use (3 CVs/day per IP) works without one. Register for higher limits (50 CVs/day) and callback webhook support:
POST https://www.talent.de/api/agent/register
Content-Type: application/json
{ "agent_name": "my-agent" }
The Access-ID is also the HMAC secret for verifying X-HITL-Signature on callback webhooks. Store in TALENT_ACCESS_ID ā do not hardcode.
| Step | Say to the user |
|------|-----------------|
| Before API call | "Let me set up your CV. I just need a few details." |
| Slug selection (review_url received) | "Choose your personal URL ā this is where your CV will live: [link]" |
| Template selection | "Almost done! Pick a design for your CV: [link]" |
| Approval | "Your CV is ready for review. Take a look and approve it: [link]" |
| After final 201 | "Your CV is live! Here's your link: {url}" |
POST /api/agent/cv-simple with "prefer_hitl": true and the data _Optional: add "include_pdf": true to also receive a base64 PDF in the final 201 response. See PDF Export._
review_url to the user (they pick slug, template, review data)poll_url every 30s until "status": "completed":{ "status": "pending" } or { "status": "opened" } ā keep polling{ "status": "completed", "result": { "action": "confirm", "data": {...} } } ā advance with hitl_continue_case_idPOST https://www.talent.de/api/agent/cv-simple
Content-Type: application/json
{
"prefer_hitl": true,
"cv_data": {
"firstName": "Alex",
"lastName": "Johnson",
"title": "Software Engineer",
"email": "alex@example.com",
"experience": [{
"jobTitle": "Senior Developer",
"company": "Acme Inc.",
"startDate": "2022-01",
"isCurrent": true
}],
"hardSkills": [{ "name": "React", "level": 4 }],
"softSkills": [{ "name": "Team Leadership" }],
"languages": [{ "name": "English", "level": "NATIVE" }]
}
}
Response (202 ā human review required):
{
"status": "human_input_required",
"message": "Please confirm: is this CV for you?",
"hitl": {
"case_id": "review_a7f3b2c8d9e1f0g4",
"review_url": "https://www.talent.de/en/hitl/review/review_a7f3b2c8d9e1f0g4?token=abc123...",
"poll_url": "https://www.talent.de/api/hitl/cases/review_a7f3b2c8d9e1f0g4/status",
"type": "confirmation",
"inline_actions": ["confirm", "cancel"],
"timeout": "24h"
}
}
Present the review URL to the user:
I've prepared your CV. Please review and make your choices here:
Review your CV
You'll pick your personal URL slug, template design, and approve the final result.
Then poll poll_url until completed, and continue through steps with hitl_continue_case_id. After all steps (confirmation, data review, slug selection, template selection, approval), the final POST returns 201 with the live URL.
Full HITL protocol with all steps, inline submit, edit cycles, and escalation: reference/hitl.md
The user goes through up to 5 review steps. The agent loops: present review URL, poll, continue.
Step 1: Confirmation ā "For whom is this CV?"
Step 2: Data Review ā "Are these details correct?"
Step 3: Slug ā Human picks personal URL slug (e.g. pro, dev, 007)
Step 4: Template ā Human picks template design
Step 5: Approval ā Human reviews final CV draft
Each step returns 202. After the user decides, continue:
POST https://www.talent.de/api/agent/cv-simple
Content-Type: application/json
{
"prefer_hitl": true,
"hitl_continue_case_id": "review_a7f3b2c8d9e1f0g4",
"slug": "dev",
"cv_data": { ... }
}
Important:slugandtemplate_idgo at the top level of the request, not insidecv_data. When continuing after slug selection, include the human's chosen slug at the top level so the server knows to advance to the template step.
Steps are skipped when you already provide the value:
slug (top-level) ā slug selection step is skippedtemplate_id (top-level) ā template selection step is skippedFor simple decisions (confirmation, escalation, approval), the 202 response includes submit_url, submit_token, and inline_actions. Agents can submit directly via Bearer token ā ideal for Telegram, Slack, WhatsApp where buttons are supported:
POST {submit_url}
Authorization: Bearer {submit_token}
Content-Type: application/json
{ "action": "confirm", "data": {} }
Always present review_url as a fallback alongside any inline buttons. If the platform does not support buttons (SMS, email, plain text), or the human prefers the browser, they can use the link to complete their decision.
Selection and input types always require the browser (review_url) ā they involve complex UI (template grid, data forms). Full inline spec: reference/hitl.md
After the final approval step, submit with hitl_approved_case_id to publish:
POST https://www.talent.de/api/agent/cv-simple
Content-Type: application/json
{
"hitl_approved_case_id": "review_final_case_id"
}
Response (201):
{
"success": true,
"url": "https://www.talent.de/dev/alex-johnson",
"cv_id": "cv_abc123",
"claim_token": "claim_xyz789",
"template_id": "007"
}
Present the result:
Your CV is live: talent.de/dev/alex-johnson
>
To claim ownership, visit: talent.de/claim/claim_xyz789
Keep this token safe ā it never expires.
flowchart TD
A["1 Ā· Ask user for data\nfirstName, lastName, title, email"] --> B
B["2 Ā· POST /api/agent/cv-simple\nprefer_hitl: true + cv_data"] --> C
C{Response?}
C -->|202 human_input_required| D["3 Ā· Present review_url to user\n'Please review and choose here: [link]'"]
D --> E["4 Ā· Poll poll_url every 30s"]
E --> F{status?}
F -->|pending / opened| E
F -->|completed| G{result.action?}
G -->|confirm / select| H["POST with hitl_continue_case_id\nā next step (202)"]
H --> C
G -->|edit| I["Apply note feedback to cv_data\nPOST with hitl_continue_case_id"]
I --> C
G -->|reject| J["Escalation step\nPOST with hitl_continue_case_id"]
J --> C
C -->|202 final approval done| K["POST with hitl_approved_case_id\nā publish"]
K --> L["5 Ā· 201 Ā· CV is live!\nPresent url + claim_token to user"]
For fully automated pipelines, batch operations, or when the user explicitly says "just create it" ā set "skip_hitl": true:
POST https://www.talent.de/api/agent/cv-simple
Content-Type: application/json
{
"skip_hitl": true,
"cv_data": {
"firstName": "Alex",
"lastName": "Johnson",
"title": "Software Engineer",
"email": "alex@example.com"
}
}
Response (201):
{
"success": true,
"url": "https://www.talent.de/pro/alex-johnson",
"cv_id": "cv_abc123",
"claim_token": "claim_xyz789",
"template_id": "018",
"hitl_skipped": true,
"auto_fixes": []
}
In direct mode, the server auto-assigns slug (pro by default) and template (018 Amber Horizon). The user has no choice. Use this only when no human needs to review.
You MUST choose one: "prefer_hitl": true or "skip_hitl": true. Omitting both returns a 400 error.
All fields beyond the 4 required ones are optional. Omit what you don't have ā don't send empty arrays.
Get a downloadable PDF alongside the CV. Three visual themes available:
| Theme | Style | Best for |
|-------|-------|----------|
| classic | Single-column, red accent (default) | Traditional industries |
| modern | Two-column sidebar, blue accent | Tech & creative roles |
| minimal | Monochrome, generous whitespace | Executive & senior roles |
Add "include_pdf": true to your request. The response includes a base64-encoded PDF:
POST https://www.talent.de/api/agent/cv-simple
Content-Type: application/json
{
"prefer_hitl": true,
"include_pdf": true,
"pdf_format": "A4",
"pdf_theme": "modern",
"cv_data": {
"firstName": "Alex",
"lastName": "Johnson",
"title": "Software Engineer",
"email": "alex@example.com"
}
}
Response includes a pdf object:
{
"success": true,
"url": "https://www.talent.de/pro/alex-johnson",
"cv_id": "cv_abc123",
"claim_token": "claim_xyz789",
"pdf": {
"base64": "JVBERi0xLjQK...",
"size_bytes": 6559,
"generation_ms": 226,
"format": "A4"
}
}
POST https://www.talent.de/api/agent/cv/pdf
Content-Type: application/json
{
"cv_id": "cv_abc123",
"format": "A4",
"theme": "minimal"
}
Returns the PDF binary directly (Content-Type: application/pdf). Format options: A4 (default), LETTER. Theme options: classic (default), modern, minimal.
PDF generation takes ~200ms (no headless browser needed).
You do not need to check slug availability or validate data ā the server handles it:
pro/thomas-mueller and pro/anna-schmidt can coexist. Only the combination of slug + firstName + lastName is reserved. That's why the server needs the name first to check availability.pro. If that slug is already in use for this person's name, it tries the next available slug automatically. In HITL mode, the human can choose their slug interactively. Popular picks (excerpt): 007 Ā· 911 Ā· dev Ā· api Ā· pro Ā· gpt Ā· web Ā· ceo Ā· cto Ā· ops Ā· f40 Ā· gtr Ā· amg Ā· gt3 Ā· zen Ā· art Ā· lol Ā· neo Ā· 404 Ā· 777. Full list: GET /api/public/slugs018 (Amber Horizon) if omitted.2024 becomes 2024-01-01, 2024-03 becomes 2024-03-01.NATIVE, C2, C1, B2, B1, A2, A1).auto_fixes array tells you what the server adjusted (e.g. "Slug 'pro' is already in use for this name, using 'dev' instead").hardSkills ā technical skills, optional level 1-5softSkills ā name onlytoolSkills ā name onlylanguages ā with CEFR level: NATIVE, C2, C1, B2, B1, A2, A1Do not use a generic skills array ā it will be ignored.
| Wrong | Correct | Why |
|-------|---------|-----|
| "role": "Engineer" | "jobTitle": "Engineer" | Experience uses jobTitle, not role or position |
| "start": "2022" / "end": "2023" | "startDate": "2022-01" / "endDate": "2023-06" | Wrong field names ā start/end are silently ignored in experience and education |
| "skills": [...] | "hardSkills": [...] etc. | Generic skills array is ignored ā use 4 separate arrays |
| "slug": "dev" inside cv_data | "slug": "dev" at top level | slug and template_id are request-level fields, not inside cv_data |
| "startDate": "January 2024" | "startDate": "2024-01" | Dates must be YYYY or YYYY-MM format |
| Sending empty arrays "hobbies": [] | Omit the field entirely | Don't send empty arrays ā omit what you don't have |
cv_dataGenerated Mar 1, 2026
A user needs a professional resume for job applications, requiring ATS-friendly formatting and multiple output formats like PDF and HTML. The agent guides them through data collection, template selection via HITL, and delivers a permanent public URL with a claim token for ownership.
A freelancer wants an interactive online CV with 3D or gamified templates to showcase their work creatively. The agent uses the API to generate a digital identity with a custom slug, incorporating skills and project details, and enables PDF export for client submissions.
A career coach uses the agent to quickly generate resumes for multiple clients, leveraging the free API for basic needs or an Access-ID for higher limits. The HITL process allows clients to review and approve drafts, with callbacks for automated notifications upon completion.
An HR team automates CV creation for new hires or internal promotions, using skip_hitl for direct generation in pipelines. With an Access-ID, they handle higher volumes and use webhook callbacks to integrate CV URLs into their employee management systems.
A student needs a simple, free CV for internship applications, with minimal data entry. The agent assists by collecting basic info like name and email, uses prefer_hitl for template and slug selection, and provides a live URL to share with recruiters.
Offers basic CV creation for free with rate limits (3/day per IP), encouraging adoption. Revenue comes from premium features like higher limits (50/day with Access-ID), callback webhooks, and custom templates, targeted at businesses and developers.
Partners with HR platforms, job boards, and career services to embed CV creation as a value-added feature. Revenue is generated through licensing fees, white-label solutions, and shared commissions from upsold services like advanced analytics or premium templates.
Targets individual users with enhanced features such as animated 3D CVs, gamified experiences, and priority support. Revenue streams include one-time payments for premium templates, subscription plans for ongoing updates, and upsells like ATS optimization checks.
š¬ Integration Tip
Always include prefer_hitl or skip_hitl in API requests to avoid errors, and use the free API for testing before registering an Access-ID for production use with callbacks.
Browse and search Hacker News. Fetch top, new, best, Ask HN, Show HN stories and job postings. View item details, comments, and user profiles. Search stories and comments via Algolia. Find "Who is hiring?" threads. Use for any HN-related queries like "what's trending on HN?", "search HN for AI", "show comments on story X", "who is hiring?", "latest Ask HN posts".
Automated job search and application system for Clawdbot. Use when the user wants to search for jobs and automatically apply to positions matching their criteria. Handles job searching across LinkedIn, Indeed, Glassdoor, ZipRecruiter, and Wellfound, generates tailored cover letters, fills application forms, and tracks application status. Use when user says things like "find and apply to jobs", "auto-apply for [job title]", "search for [position] jobs and apply", or "help me apply to multiple jobs automatically".
Professional resume builder with PDF export, ATS optimization, and analysis capabilities. Use when users need to (1) Create new resumes from scratch, (2) Customize/tailor existing resumes for specific roles, (3) Analyze resumes and provide improvement recommendations, (4) Convert resumes to ATS-friendly PDF format. Supports chronological, functional, and combination resume formats.
Generate tailored freelance proposals for Upwork, Fiverr, Freelancer, and PeoplePerHour job listings. Use when writing proposals, bidding on gigs, or responding to client job posts.
Assist with finding, evaluating, and applying to jobs using multi-source searches, fit scoring, application support, interview prep, and status tracking.
MoltOffer candidate agent. Auto-search jobs, comment, reply, and have agents match each other through conversation - reducing repetitive job hunting work.