Building an AI Business Card Generator: A Practical Guide
Designing business cards by hand eats up hours you could spend on client work. An ai business card generator can spit out dozens of variations in minutes, but most tutorials leave you with files that need manual fixing before they’re print‑ready.
After reading this you’ll be able to wire a prompt‑to‑design pipeline that creates a print‑ready PDF, stores it in Airtable, and notifies you when a new card is ready.
How do you keep the AI from putting text outside the bleed?
Most AI image models treat the canvas as an infinite plane. They don’t know about bleed, safe zone, or margin requirements for print. The result? A gorgeous logo that gets chopped off when the printer trims the card.
I solved this by adding a simple rule‑based post‑process step: after the AI returns an image, I run a tiny script that checks the distance of any text element from the edge. If it’s closer than 0.125 in (the standard bleed), the script nudges the element inward and re‑runs the prompt with a revised layout description.
That script lives in a the Make platform scenario as a custom JavaScript module. It’s only ~30 lines, but it saves me from manually moving objects in Canva every time.
What most guides get wrong about AI card design
Many guides tell you to feed the model a vague prompt like “make a modern business card” and call it a day. They ignore the fact that AI doesn’t understand brand constraints unless you spell them out.
What they miss is the need for a structured prompt that separates three layers: brand data (name, title, logo URL), style rules (font family, color palette, layout grid), and output specs (size, bleed, file format). Without that separation you get cards that look cool but are unusable.
I keep those three layers in separate Airtable fields. The scenario pulls them together, builds a prompt, sends it to Claude, then passes the result to the Canva API.
A real prompt that works with Claude 3.5
Here’s the exact prompt I use (the Claude model is called via the Anthropic API inside Make.com):
You are a senior graphic designer. Create a business card layout description based on the following inputs:
Brand data:
- Name: {{name}}
- Title: {{title}}
- Email: {{email}}
- Phone: {{phone}}
- Logo URL: {{logo_url}}
Style rules:
- Primary font: {{font_primary}}
- Secondary font: {{font_secondary}}
- Primary color: {{color_primary}} (hex)
- Secondary color: {{color_secondary}} (hex)
- Layout preference: {{layout_pref}} (e.g., "left-aligned logo, right-aligned text")
Output spec:
- Card size: 3.5 in × 2 in
- Bleed: 0.125 in on all sides
- Safe zone: keep all text and logo at least 0.25 in from the edge
- Return a JSON object with fields: "background_color", "elements" (each element has type, content, x, y, width, height, font_size, font_family, color).
Make sure every element respects the bleed and safe zone.
I store the variables in Airtable and let Make.com inject them before the API call. The JSON output is then sent straight to the Canva API’s “/designs” endpoint, which renders a PDF ready for download.
How to debug when the output looks off
When the generated card looks strange, I first check the raw JSON from Claude. If the coordinates are outside the 3.5 × 2 in canvas, the problem is in the prompt or the variable injection.
My go‑to steps:
- Look at the Make.com scenario log for the Claude module – copy the prompt and the returned JSON.
- Paste the JSON into a quick validator (I use jsonlint.com) to confirm it’s parsable.
- If the JSON is valid but the coordinates are wrong, I adjust the layout_pref variable (e.g., switch from “centered” to “left-aligned”) and rerun.
- If the coordinates are fine but the design looks ugly, I check the font files – Canva API only accepts fonts that are uploaded to the team kit.
- Finally, I verify the bleed script ran – I added a temporary step that logs the adjusted coordinates before the Canva call.
Nine times out of ten the issue is a stray space in a variable that breaks the JSON structure. Fixing that takes less than a minute.
