🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Mistral OCR + Google Sheets: contacts, no typing

Lisa Granqvist Partner Workflow Automation Expert

Business cards pile up fast. Then you “deal with them later,” which usually means retyping names, guessing emails, and losing half the details in the process.

Mistral OCR automation hits hardest after events for marketing managers and sales teams, but office admins and founders feel it too. You want clean, searchable contacts in Google Sheets without spending your Friday afternoon doing data entry.

This workflow takes a card upload (PDF or image), extracts the text with Mistral OCR, has OpenAI structure it, then writes it into a table you can sync to Sheets. You’ll see how it works, what you need, and where people trip up.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Mistral OCR + Google Sheets: contacts, no typing

The Problem: Business cards turn into bad data

Typing contact info from business cards sounds simple until you do it at scale. A card has tiny fonts, odd layouts, and “creative” spacing that makes phone numbers and job titles easy to misread. You might enter the name correctly, but miss the mobile number, or you’ll dump everything into one “Notes” field because you’re rushing. Then, weeks later, you can’t filter by company, can’t search reliably, and you end up asking, “Who was this again?” Honestly, the real cost is the lost follow-up.

It adds up fast. Here’s where it breaks down.

  • Each card turns into a 5–10 minute task once you include checking spelling, formatting phone numbers, and finding missing fields.
  • Cards come in different languages and layouts, so the “quick copy-paste” approach fails constantly.
  • Manual entry creates duplicates because “[email protected]” and “[email protected]” get treated differently depending on who typed it.
  • Your CRM import becomes a cleanup project, which means the list never gets used.

The Solution: Scan once, store structured contacts

This n8n workflow turns business cards into structured contact rows automatically. It starts with a simple upload form where you drop a PDF or image of a card. n8n converts the file into Base64 (basically, a format an API can accept), then sends it to the Mistral OCR API to extract the text. Next, an AI Agent powered by OpenAI (gpt-4o-mini) interprets the messy OCR text and maps it into a clean schema: first name, last name, company, job title, phone, mobile, email, address, website, and more. Finally, the workflow upserts the contact record, using the email address as the unique identifier so duplicates don’t quietly multiply.

The workflow begins when a card is uploaded through the form trigger. Mistral OCR pulls the raw text, and OpenAI converts it into consistent fields you can actually filter and search. Then n8n writes it into your contacts table (and from there, into Google Sheets if that’s where your team lives).

What You Get: Automation vs. Results

Example: What This Looks Like

Say you come back from a conference with 40 business cards. Manually, even at 7 minutes per card, that’s about 5 hours of copy-paste, spellcheck, and cleanup. With this workflow, you upload each card in under a minute (so roughly 40 minutes total), then let OCR + AI process in the background while you do other work. You still spot-check a few rows, but you’re not stuck typing phone numbers all day.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Mistral OCR API to extract text from card images.
  • OpenAI API to structure OCR text into clean fields.
  • Google Sheets to keep contacts searchable for your team.

Skill level: Intermediate. You’ll connect API credentials, create a table/sheet schema, and run a few test uploads.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

Upload triggers the workflow. A form submission in n8n collects a PDF or image of the business card and kicks off the run immediately.

The file gets prepared for OCR. n8n converts the uploaded card into Base64 so it can be sent cleanly to the Mistral OCR API without you converting formats by hand.

OCR text becomes structured contact fields. Mistral returns extracted text, it’s parsed into JSON, and then the OpenAI-powered agent maps it into your schema (firstname, name, company, jobdescription, phone, mobil, email, address, web).

Contacts get saved and de-duplicated. The workflow upserts the record into your contacts table using email as the unique key, so repeat scans update the same contact instead of creating a mess.

You can easily modify the schema fields to match your CRM, or adjust the unique identifier from email to phone based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Form Submission Trigger

This workflow starts when a user submits a business card through an n8n form.

  1. Add the Form Submission Trigger node and set Form Title to Business card scanner.
  2. Set Form Description to Upload a business card (PDF or image).
  3. In Form Fields, add a file field labeled business_card and ensure Required is enabled.
  4. Connect Form Submission Trigger to Convert File to Base64.

Step 2: Connect Mistral OCR

This stage converts the uploaded file to Base64 and sends it to Mistral OCR for extraction.

  1. In Convert File to Base64, set Operation to binaryToPropery and Binary Property Name to business_card.
  2. Open Mistral OCR Request and set URL to https://api.mistral.ai/v1/ocr with Method set to POST.
  3. Set Specify Body to json and JSON Body to { "model": "mistral-ocr-latest", "document": { "type": "document_url", "document_url": "data:application/pdf;base64,{{ $json.data }}" }, "include_image_base64": true }.
  4. Enable file response output and set the Output Property Name to ocr_output.json.
  5. Credential Required: Connect your httpBearerAuth credentials in Mistral OCR Request.

⚠️ Common Pitfall: If the OCR response is not saved as a file, Parse OCR JSON will fail because it expects ocr_output.json.

Step 3: Set Up the OCR Parsing and AI Extraction

These nodes parse the OCR response and use AI to extract structured contact data.

  1. In Parse OCR JSON, set Operation to fromJson and Binary Property Name to ocr_output.json.
  2. Open Contact Extraction Agent and set Text to =Business Card: {{ $json.data.pages[0].markdown }}.
  3. Keep Prompt Type set to define and ensure Has Output Parser is enabled.
  4. In Structured Result Parser, set JSON Schema Example to the provided schema string so output fields match the data table schema.
  5. In Session Memory Buffer, set Session ID Type to customKey and Session Key to {{ $('Convert File to Base64').item.json.submittedAt }}.
  6. Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine.
  7. Confirm OpenAI Chat Engine is connected as the language model for Contact Extraction Agent and uses the model gpt-4o-mini.

AI tool nodes like Session Memory Buffer and Structured Result Parser do not store credentials—ensure the credentials are added to the parent OpenAI Chat Engine node.

Step 4: Configure the Contact Database Upsert

This step saves extracted contact data into your n8n data table.

  1. Open Upsert Contact Records and set Operation to upsert.
  2. Select your Data Table ID and replace the placeholder [YOUR_ID] with your actual table ID.
  3. Map columns to the output fields, for example name{{ $json.output.name }} and email{{ $json.output.email }}.
  4. Set the upsert filter to match email using {{ $json.output.email }} to prevent duplicates.

⚠️ Common Pitfall: Ensure the jobdescription field is mapped to {{ $json.output.jobdescrition }} exactly as defined in the workflow, even though the spelling differs.

Step 5: Test and Activate Your Workflow

Run a full test to confirm OCR, AI extraction, and upsert work end-to-end.

  1. Click Execute Workflow and upload a sample business card in the Form Submission Trigger test form.
  2. Verify that Mistral OCR Request returns a file named ocr_output.json and that Parse OCR JSON produces data.pages[0].markdown.
  3. Check Contact Extraction Agent output to confirm structured fields are produced by Structured Result Parser.
  4. Confirm a new or updated row appears in your data table from Upsert Contact Records.
  5. Toggle the workflow to Active so the form can be used in production.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Mistral OCR credentials can expire or need specific permissions. If things break, check your n8n credential settings and the Mistral API key scope first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this Mistral OCR automation automation?

About an hour if your API keys are ready.

Do I need coding skills to automate business card contact entry?

No. You’ll mostly paste API keys and map fields once. After that, it’s just testing with a few real cards.

Is n8n free to use for this Mistral OCR automation workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Mistral OCR and OpenAI API usage costs (usually pennies per card for typical volumes).

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Mistral OCR automation workflow for my CRM field names?

Yes, and you should. You can change the structured schema in the Structured Result Parser to match your CRM (for example, splitting “jobdescription” into department + title). Many teams also tweak the AI Agent prompt to prefer a specific phone format, and to always return a best-guess company domain for cleaner enrichment later.

Why is my Mistral OCR connection failing in this workflow?

Most of the time it’s an expired or incorrect API key in n8n credentials. It can also be a request format issue if the OCR endpoint expects Base64 in a specific field, so compare the HTTP Request node body to the latest Mistral docs. If failures happen only on bigger PDFs, file size limits are a common culprit. Finally, watch for rate limits if you batch-upload a lot of cards at once; spacing runs out with a short delay usually fixes it.

How many contacts can this Mistral OCR automation automation handle?

Plenty for a small team: hundreds of cards per month is normal on n8n Cloud, and self-hosting can go higher if your server is sized well.

Is this Mistral OCR automation automation better than using Zapier or Make?

Often, yes, because OCR + AI parsing usually needs more than a simple two-step Zap. n8n makes it easier to handle multi-step processing, validation, and upserts without paying extra for every branch. Self-hosting is also a big deal if you want to run lots of scans without watching task counts. Zapier or Make can still be fine for a lightweight “upload → add row” flow, especially if you never need dedupe logic. Talk to an automation expert if you want help choosing.

Once this is running, business cards stop being a “later” problem. The workflow handles the repetitive cleanup so your contacts are ready to use when follow-up actually matters.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal