Rephrase LogoRephrase Logo
FeaturesHow it WorksPricingGalleryDocsBlog
Rephrase LogoRephrase Logo

Better prompts. One click. In any app. Save 30-60 minutes a day on prompt iterations.

Rephrase on Product HuntRephrase on Product Hunt

Product

  • Features
  • Pricing
  • Download for macOS

Use Cases

  • AI Creators
  • Researchers
  • Developers
  • Image to Prompt

Resources

  • Documentation
  • About

Legal

  • Privacy
  • Terms
  • Refund Policy

Ask AI about Rephrase

ChatGPTClaudePerplexity

© 2026 Rephrase-it. All rights reserved.

Available for macOS 13.0+

All product names, logos, and trademarks are property of their respective owners. Rephrase is not affiliated with or endorsed by any of the companies mentioned.

Prompt tips171
When Negative Prompts Still Work in 2026How to Prompt for 1M Token ContextsHow to Prompt Qwen 3.6-Plus for CodingHow to Prompt Gemma 4 for Best ResultsHow to Prompt GPT-6 for Long ContextWhy Twitter Prompts FailHow to Prompt DeepSeek V3 in 2026GPT vs Llama Prompting DifferencesHow to Write Privacy-First AI PromptsHow to Prompt AI Dashboards BetterHow to Write AI Prompts for NewslettersHow to Prompt AI for Better Software TestsHow to Write CLAUDE.md PromptsHow to Prompt AI for Ethical Exam PrepHow Teachers Can Write Better AI PromptsHow to Prompt AI Music in 2026How to Write Audio Prompts That WorkHow to Prompt ElevenLabs in 2026How to Prompt for Amazon FBA TasksHow Freelancers Should Prompt AI in 2026How to Prompt Gemma 4 in 2026How to Prompt Web Scraping Agents EthicallyHow to Prompt Claude TasksHow to Define an LLM RoleHow to Create a Stable AI CharacterHow to Use Emotion Prompts in Claude5 Best Prompt Patterns That Actually WorkHow to Write the Best AI Prompts in 2026How to Prompt Gemma BetterHow to Write Multimodal PromptsHow to Optimize Content for AI ChatbotsWhy Step-by-Step Prompts Fail in 2026How to Prompt AI Presentation Tools RightHow to Prompt AI for Video Scripts That Actually…Summarization Prompts That Force Format Complian…SQL Prompts That Actually Work (2026)How to Prompt GLM-5 EffectivelyHow to Prompt Gemini 3.1 Flash-LiteHow Siri Prompting Changes in iOS 26.4How to Prompt Small LLMs on iPhoneHow to Prompt AI Code Editors in 2026How to Prompt Claude Sonnet 4.6How to Prompt GPT-5.4 for Huge DocumentsHow to Prompt GPT-5.4 Computer UseClaude in Excel: 15 Prompts That WorkHow to Prompt OpenClaw BetterHow to Prompt AI for Academic IntegrityHow to Prompt AI in Any Language (2026)How to Make ChatGPT Sound HumanHow to Write Viral AI Photo Editing Prompts7 Claude PR Review Prompts for 20267 Vibe Coding Prompts for Apps (2026)Copilot Cowork + Claude in Microsoft 365 (2026):…GPT-5.4 vs Claude Opus 4.6 vs Gemini 3.1 Pro (Ma…Prompting Nano Banana 2 (Gemini 3.1 Flash Image)…Prompting GPT-5.4 Thinking: Plan Upfront, Correc…Prompt Engineering for Roblox Development: NPC D…AI Prompts for Figma-to-Code Workflows: Design S…The Real Cost of Bad Prompts: Time Wasted, Token…Prompts That Pass Brand Voice: A Practical Syste…Voice + Prompts: The Fastest Way I Know to Ship…AI Prompts for Startup Fundraising: Pitch Decks,…Prompts for AI 3D Generation That Actually Work:…Prompt Engineering for Telegram Bots: How to Mak…How to Prompt AI for Cold Outreach That Doesn't…Why Your AI Outputs All Sound the Same (And 7 Te…Apple Intelligence Prompting Is Not ChatGPT Prom…Prompt Engineering for Google Sheets and Notion…Consistent Style Across AI Image Generators: The…AI Prompts for Product Managers: PRDs, User Stor…Prompt Design for RAG Systems: What Goes in the…AI Prompts for YouTube Creators: Titles, Scripts…Structured Output Prompting: How to Force Any AI…How to Audit a Failing Prompt: A Debugging Frame…Prompt Versioning: How to A/B Test Your Prompts…Prompting n8n Like a Pro: Generate Nodes, Fix Br…The MCP Prompting Playbook: How Model Context Pr…Prompt Engineering for Non‑English Speakers: How…How to Get AI to Write Like You (Not Like Every…Claude Projects and Skills: How to Stop Rewritin…The Anti-Prompting Guide: 12 Prompt Patterns Tha…AI Prompts for Indie Hackers: Ship Landing Pages…Prompts That Actually Work for Claude Code (and…Prompt Engineering Statistics 2026: 40 Data Poin…Midjourney v7 Prompting That Actually Sticks: Us…Prompt Patterns for AI Agents That Don't Break i…System Prompts Decoded: What Claude 4.6, GPT‑5.3…How to Write Prompts for Cursor, Windsurf, and A…Context Engineering in Practice: A Step-by-Step…How to Write Prompts for GPT-5.3 (March 2026): T…How to Write Prompts for DeepSeek R1: A Practica…How to Test and Evaluate Your Prompts Systematic…Prompt Engineering Certification: Is It Worth It…Multimodal Prompting in Practice: Combining Text…What Are Tokens in AI (Really) - and Why They Ma…Temperature vs Top‑P: The Two Knobs That Quietly…How to Reduce AI Hallucinations with Better Prom…Fine-Tuning vs Prompt Engineering: Which Is Bett…Prompt Injection: What It Is, Why It Works, and…The Prompt That Moves Your Memory From ChatGPT t…AI Prompts for Market Research: The Workflow I U…Prompt Engineering Salary and Career Guide (2026…Best AI Prompts for Customer Support Chatbots: T…How to Automate Workflows with Prompt Templates…AI Prompts for Project Management and Planning:…How to Build a Prompt Library for Your Team (Tha…Prompt Engineering for SEO: How to Boost Ranking…How to avoid your Claude agent getting jailbroke…Alert: Avoid Gemini Agent Jailbreaks by Designin…How to Write Prompts for AI Animation and Motion…Best Prompts for AI Product Photography: Packsho…Consistent Characters in AI Art: The Prompting S…Aesthetic AI Photo Prompts for Social Media Prof…How to Write Prompts for AI Logo Design (Without…AI Image Prompt Formulas for Lighting, Style, an…How to Write Prompts for AI Photo Editing in Cha…Copilot Prompts for Microsoft Office and Windows…Prompting SDXL Like You Mean It: A Developer's G…Perplexity AI: How to Write Search Prompts That…How to Write Prompts for Grok (xAI): A Practical…Best Prompts for Llama Models: Reliable Template…GPT-5.2 Prompts vs Claude 4.6 Prompts: What Actu…Google Gemini Prompts: The Complete Guide for 20…How to Write Prompts for AI Music Generation (Th…AI Prompts for Real Estate Listings That Don't S…Best Prompts for Social Media Content Creation (…How to Use AI Prompts for Academic Research (Wit…Prompts for Business Plan Writing with AI: A Pra…How to Write Prompts for AI Code Generation (So…Best AI Prompts for Learning a New Language (Wit…ChatGPT Prompts for Data Analysis and Excel: The…How to Write AI Prompts for Email Marketing (Tha…Best Prompts for Writing a Resume with AI (That…How to Structure Prompts with XML and Markdown T…RAG vs Prompt Engineering: Which One Do You Actu…Prompt Chaining for Complex Tasks: Build Reliabl…Tree of Thought Prompting: A Step-by-Step Guide…Self-Consistency Prompting: How Majority-Vote Re…Meta Prompting: How to Make AI Improve Its Own P…Role Prompting That Actually Works: How to Get E…System Prompt vs User Prompt: What's the Differe…Context Engineering: the real reason prompt engi…Zero-Shot vs Few-Shot Prompting: When to Use Eac…GenAI & Creative Practices: Stop Treating Prompt…Gemini AI Prompting: The 5 Prompt Patterns That…How to Reduce ChatGPT Hallucinations: Make It Ci…How to Make AI Creative (Without Begging It to "…How to Research With AI (Without Getting Burned…How to Speak With AI: Treat Prompts Like Interfa…Prompt to Make Money: Stop Chasing "Magic Prompt…10 tips for writing image prompts that actually…10 tips for writing video prompts that actually…How to Prompt Nano Banana (Gemini 3 Pro Image):…How to Prompt the Best Way (Without Turning It I…What Is a Prompt? The Input That Turns an LLM In…How to Generate Images in 2026: Prompting Like a…The Latest LLM Prompt Updates (Early 2026): What…How Prompts Changed in 2026: From Clever Wording…ChatGPT prompt for photo editing: the only templ…How ChatGPT Works (Without the Hand-Wavy Magic)Keeping Context in a Prompt: The 3-Layer Pattern…How to Keep Context in a Prompt (Without Writing…How to Write Prompts for Claude 4.5: A Practical…How to Write Prompts for Sora 2: The Spec That T…How to Write Prompts for Veo 3: A Developer's Pl…How to Write Video Prompts That Actually Direct…What Is Prompt Engineering? A Practical Definiti…What Is Prompt Engineering? A Practical Definiti…AI prompts vs. generative AI prompts: the differ…Chain-of-Thought Prompting in 2026: When "Think…How to Write Prompts for ChatGPT: The Only Struc…
Prompt engineering87
Why Prompt Versioning Needs Code ReviewWhy GPT-5.5 Prompts Use Roles AgainWhy Tunable Inference Is the New DefaultHow to Cut Multimodal Token CostsHow GLM-4.6V Sees UIs Like an AgentWhy Audio Understanding Still Lags HumansWhy 200,000 MCP Servers Changed SecurityWhy Prompt Adherence Beats Visual FidelityWhy CoT Gave Way to Prompt FrameworksHow Uncertainty Markers Improve ReasoningWhy Causal World Models Beat SoraWhy Cheap AI Images Change PromptingWhy Vision Banana Matters for Computer VisionHow to Become a Context Engineer in 2026Inference Performance Is Product WorkWhy Smaller Models Win Agent TimeHybrid LLM Architecture That Cuts CostHow to Make AI Agents EU AI Act ReadyWhy AI Agent Permissions Break DownHow Claude Mythos Changes AI DefenseWhy Klarna's AI Agent Deployment FailedStructured Output in 2026: What to UseHow to Compress Prompts Without Losing SignalWhy Few-Shot Prompting Fails in AgentsHow to Use Plan-Then-Execute PromptsHow to Design an AI-Friendly CodebaseHow to Write Better CLAUDE.md FilesHow to Hedge AI Workflow CapabilitiesHow to Design Lean Tool Sets for AI AgentsHow LLM Agent Memory Should WorkHow to Apply Anthropic's Context GuideHow to Build a 12-Factor AI AgentWhy Agents Must Keep Their Wrong TurnsWhy Dynamic Tool Loading Breaks AI AgentsWhy KV-Cache Hit Rate Matters MostHow the 4 Moves of Context Engineering WorkHow to Engineer Context for AI AgentsPrompt Engineering as a Career SkillWhy Prompt Marketplaces DiedFine-Tuning vs RAG vs System PromptsWhy Regulated AI Prompts Fail in 2026Why Prompt Wording Creates AI BiasHow to Write Guardrail PromptsPrompt Attacks Every AI Builder Should KnowHow to Prompt AI for Better StoriesHow to Prompt for Database DesignHow to Prompt Natural-Sounding AI VoicesHow to Prompt for E-Commerce at ScaleHow to Prompt Multi-Agent LLM PipelinesMake.com vs n8n: Prompting Matters MoreOpenClaw vs Claude System PromptsWhy Long Prompts Hurt AI ReasoningHow Adaptive Prompting Changes AI WorkWhy GenAI Creates Technical DebtWhy Context Engineer Is the AI Job to WatchWhy Prompt Engineering Isn't Enough in 2026Prompt Pattern Libraries for AI in 2026How to Build a 6-Component PromptPrompting LLMs Over Long Documents: A GuideLLM Prompts for No-Code Automation (2026)Few-Shot Prompting: A Practical Deep DiveDecision-Making Prompts for AI AgentsPrompt Compression: Cut Tokens Without Losing Qu…Why Your Prompts Break After Model UpdatesDiff-Style Prompting: Edit Without RewritingWhy Long Chats Break Your AI Prompts6 Prompt Failure Modes That Show Up at ScaleMulti-Modal Prompting: GPT-5, Gemini 3, Claude 4LLM Classification Prompts That Actually Work40 Prompt Engineering Terms DefinedVoice AI Prompting: Why Text Prompts FailAdvanced JSON Extraction Patterns for LLMsNegative Prompting: When to Cut, Not AddHow to Write a System Prompt That WorksWhy Moltbook Changes Prompt DesignHow to Build AI Agents with MCP, ACP, A2AWhy Context Engineering Matters NowHow to Prompt GPT-5.4 to Self-CorrectHow to Secure OpenClaw AgentsHow MCP and Tool Search Change AgentsWhy Prompt Engineering ROI Is Now MeasuredHow to Secure AI Agents in 2026System Prompts That Make LLMs BetterWhat GTC 2026 Means for Local LLMs7 Steps to Context Engineering (2026)7 GPT-5.4 Tool Prompt Rules for 20267 Agent Prompt Rules That Work in 2026
Tools33
Llama 4 Scout vs RAG for CodebasesWhy GLM-5.1 Changes Open Model StrategyWhy Gemma 4 31B Changes Multimodal AppsFirefly 4 vs FLUX.2 Pro in PhotoshopWhat Adobe Precision Flow ReplacesWhy MCP Won the Agent Standards WarHow to Pick an Agent Platform in 2026How Codex Computer Use Changes PipelinesHow Firefly AI Assistant Changes EditingWhy MAI-Image-2-Efficient MattersWorld Models vs Video Generation in 2026Imagen 4 vs Nano Banana 2: Why Lower?Why Image Leaderboards Pick Different #1sHow MarkItDown Preps Docs for LLMsGemma 4 vs Llama 4 vs GLM-5.1Cursor vs Claude Code vs Codex CLIHow GPT-6 Becomes an AI Super-AppDeepSeek V3.2 vs GPT-5.4 on a BudgetLlama 4 Scout vs Maverick: Which Fits?How Shopify Sells Inside ChatGPT and GeminiWhy OpenClaw Took Over GTC 2026Why AI Agents Matter More Than ChatbotsWhy Mistral Small 4 Matters for ReasoningChatGPT vs Claude: How to Choose in 2026How AI Agents Are Reshaping WorkWhy Vibe Coding Is Replacing Junior DevsClaude Marketplace: Why Developers CareOpenClaw vs Claude Code vs ChatGPT TasksWhy Promptfoo Alternatives Matter NowClaude vs ChatGPT for Russian in 2026Why AI Agents Threaten SaaS in 2026AI Deep Research Tools Compared for 2026Nano Banana 2 Is Here: What Changed and How to P…
Tutorials48
How Photoshop Killed Manual MaskingHow to Route GPT-Image-2 and Nano BananaHow to Cut LLM API Costs by 80%How to Avoid AI Vendor Lock-In in 2026How Google ADK Orchestrates Multi-Agent AppsHow to Run Gemma 4 31B LocallyHow Unsloth Speeds Up LLM Fine-TuningHow to Build an Open Coding Agent StackHow to Prompt Mistral Small 4How to Run a 10-Minute Prompt AuditHow to Benchmark Your Prompting SkillsHow to Optimize Small Context PromptsHow to Prompt Ollama in Open WebUIHow to Prompt AI for Financial ModelsHow to Clean CSV Files With AI PromptsHow to Prompt AI for GA4 AnalysisHow to Prompt Claude for SQL via MCPHow to Repurpose Content With AIHow to Prompt AI for SEO Long-FormHow to Prompt AI for IaCHow to Prompt AI for API DesignHow to Teach Kids to Prompt AIHow to Build an AI Learning CurriculumHow to Use AI as a Socratic TutorHow to Prompt AI for Podcast ProductionHow to Build a One-Person AI AgencyHow to Build a Personal AI AssistantHow to Prompt in Cursor 3.0How to Create Gen AI Content in 2026How to Use Open Source LLMsHow to Build a Content Factory LLM PipelineHow to Turn Any LLM Into a Second BrainHow to Write Claude System PromptsHow Claude Computer Use Really WorksHow to Build the n8n Dify Ollama StackHow to Run Qwen 3.5 Small LocallyHow to Build an AI Content FactoryHow to Prompt Cursor Composer 2.0How to Launch on Product Hunt With AIHow to Make Nano Banana 2 InfographicsHow to Prompt for AI Game DevelopmentHow to Prompt Gemini in Google WorkspaceHow to Set Up OpenClawHow to Switch ChatGPT Prompts to ClaudeHow to Prompt for a Product Hunt LaunchHow to Build an AI Content FactoryHow to Keep AI Characters ConsistentHow to Run AI Models Locally in 2026
Image generation9
How Firefly Custom Models Fit Brand StyleWhy Image Provenance Still Isn't SolvedHow Gemini's Auto-Context Changes Image UXGPT-Image-2 vs Nano Banana Pro in 2026How to Prompt AI for Memes That SpreadHow to Write Better Nano Banana 2 PromptsHow to Use AI Images for Marketing in 2026Midjourney v7 vs ChatGPT Image GenAI Image Prompts for Social Media (2026)
Video generation20
Why Video Models Still Hit a 4K CeilingHow to Cut Video Generation Spend by 90%How to Use Cinematography Terms in PromptsWhat Genie Means for AI VideoHow Veo 3.1 Changed Video PromptingWhy Native Audio Changes Video LocalizationWhen Cheap Video Models Beat PremiumHow to Prompt Veo, Kling, Runway, and SoraSora API Migration Before Sept. 24, 2026AI Video Routing for Production TeamsHow Veo 3.1 Native Audio Really WorksHow Kling Storyboards Change PromptingHow to Prompt AI Video Like a CinematographerVeo 3.1 vs Seedance 2.0 PromptsTop 10 Video Prompts That Actually WorkKling 3 vs Seedance: Prompting DifferencesHow to Write Seedance 2.0 Video PromptsWhy OpenAI Killed SoraAI Video Prompts for Veo 3 and KlingVeo 3 vs Sora 2 vs Kling AI Prompts
News87
EU AI Act Open-Source Exemption ExplainedWhy Meta Made Muse Spark ProprietaryWhy GLM-5.1 Is a Big Deal for CodingWhy Anthropic Won't Release Claude MythosHow MCP Became the AI Agent StandardFrom 'write me the math' to 'run it locally': AI…AI's New Power Trio: Faster Transformers, Real-T…The Week AI Got Practical: Better Metrics, Faste…AI Agents Are Getting a Supply Chain: Vercel "Sk…Amazon Bedrock quietly turns RAG into a multimod…ChatGPT Gets Ads, Google Gets Personal, and AWS…Amazon's Bedrock push is getting real: multimoda…Faster models, cheaper context, and search witho…Google Wants Agents to Shop, Claude Wants Your F…Memory Is the New MoE: Agents, Observability, an…AWS Is Turning Agents Into Infrastructure - and…AI Gets Practical: Cheaper RAG, Faster Small Mod…AI Is Getting Better at 'Near-Misses'-and That's…Tiny embeddings, terminal agents, and a sleep mo…OpenAI Goes to the Hospital - and to the Power P…AWS's latest AI playbook: multimodal search, che…AI Is Leaving the Lab: Benchmarks That Run Apps,…ChatGPT Goes Clinical, Robots Get Smarter, and S…AI Is Getting Measured, Agentic, and Political -…LoRA Everywhere, and OpenMed's Big Bet: The 2026…OpenAI Wants a Pen-Sized ChatGPT, and It's Not t…Caching, Routing, and "Small" Models: The Quiet…Blackwell's FP4 Hype Meets Reality, While NVIDIA…GPT-4.5, T5Gemma, and MedGemma: The Model Wars S…OpenAI Ships a Cheaper Reasoner, a Medical Bench…Gemini hits IMO gold, and the rest of the stack…AI Is Leaving the Chat Box: GUI Agents, Long-Hor…Agents are growing up: red-teaming, contracts, a…AI Is Getting Smaller, Faster, and Weirder - and…OpenAI's Prompt Packs vs. Hugging Face Quantizat…OpenAI's GPT-5.2-Codex and Google's Flash-Lite s…Google Ships Cheap, Fast Gemini - While AWS Trie…Gold-Medal Gemini, a "Misaligned Persona" in GPT…OpenAI floods the zone: GPT-4.5, o3-mini, and a…Deep research agents get real, robots ship to Sp…Agents Everywhere, But the Real Story Is the Bor…AI Is Becoming Infrastructure: AWS Automation, H…Agents Are Moving Into the Browser - and AWS Is…Small models are eating the stack - and they're…Skills are the new plugins: IBM's open agent, Hu…NVIDIA's Big Week: Gaming Agents, Inference Powe…Transformers v5, EuroLLM, and Nemotron: Open AI…MIT's latest AI work screams one thing: stop bru…AI Is Escaping the Chatbox: Meta's SAM Goes Fiel…DeepMind Goes Full "National Lab Mode" - While C…AI Is Getting a Memory, a Voice, and a Governmen…GPT-5.2, Image 1.5, and the ChatGPT App Store mo…GPT-5.2, ChatGPT Apps, and the Real Fight: Ownin…GPT‑5.2 Lands, ChatGPT Gets an App Store, and "A…AI Is Getting Cheaper, More Grounded, and Weirdl…Cogito's 671B open-weight drop, "uncensor" hacks…AWS and Anthropic Just Made AI Apps Boringly Rel…Agents Are Growing Up - And So Are the Ways They…The Unsexy Parts of AI Are Winning: Inference St…ChatGPT Is Turning Into an App Store (and Safety…From code agents to generative UI: AI is quietly…Google's Gemini 3 week isn't a model launch - it…The AI Stack Is Growing Up: Testing Gates, Reaso…AI's New Bottleneck Isn't Models - It's the Stuf…Agents grow up: Google brings ADK to Go, while C…AI Is Moving Back to Your Laptop - and the Open…AI's New Obsession: Trust, Latency, and Software…Agents Are Growing Hands and Long-Term Memory -…Voice AI Just Went Open-Season: New Models, Real…NVIDIA Goes All-In on Spatial AI, While the Rest…AI Is Eating the Grid: Power Becomes the New Mod…Agents Are Growing Up: Google's DS-STAR and AWS'…ChatGPT Learns Your Company, Codex Gets Cheaper,…GPT-5.1 Drops, and OpenAI Quietly Reframes What…AI in 2025: AWS squeezes the GPUs, OpenAI hits 1…Google's Space TPUs and AWS's $38B Deal Signal a…AI Is Sliding Into Your Workflow: Real‑Time Meet…MIT's AI signal this week: smaller models, smart…Agents Are Leaving the Chatbox - and Everyone's…DeepMind goes after fusion control while AWS tur…Google's AI push is getting serious about privac…Google Is Shipping Agents, Video, and "AI for Ma…OpenAI's Atlas browser is the real product launc…Neural rendering goes end-to-end, and AI starts…Sora 2, Gemini Robotics, and VaultGemma: AI Is S…Meta's DINOv3, NASA's micro-rovers, and Llama in…GPT-5 vs Gemini Deep Think: The reasoning arms r…
Ai digest2
February 2026 AI Prompt Digest: Context Engineer…January 2026 AI Prompt Digest: Prompting Became…
Generative ai1
Prompting Text AI vs Image AI: Totally Different…
Comparison1
Why Your ChatGPT Prompt Sucks in Claude (And Vic…
Gemini1
What I Figured Out About Writing Prompts for Goo…
Claude1
What Makes Claude Different (And How to Write Pr…
Chatgpt1
How I Learned to Write Decent Prompts for ChatGP…
Blog / Prompt engineering / Advanced JSON Extraction Patterns for LL…
← All notes

Advanced JSON Extraction Patterns for LLMs

Master schema anchoring, multi-pass verification, and graceful degradation for reliable LLM JSON extraction at scale. Tested templates inside. Read the full guide.

Ilia Ilinskii
Ilia Ilinskii
Rephrase · March 23, 2026
Prompt engineering8 min read
On this page
Key TakeawaysWhy Single-Pass Extraction Breaks DownSchema AnchoringConditional Field ExtractionGraceful DegradationMulti-Pass VerificationTemplates for Common Extraction TasksEntity RecognitionDocument Parsing (invoices, contracts, reports)Table ReconstructionPutting It Together at ScaleReferences

Getting an LLM to spit out JSON once is trivial. Getting it to do so reliably across ten thousand messy, inconsistent documents - without hallucinating fields, collapsing nested structures, or silently dropping optional keys - is a genuinely hard prompt engineering problem.

This article is about the hard version.

Key Takeaways

  • Schema anchoring - embedding your literal target schema in the prompt - is the single highest-leverage technique for structural consistency
  • Graceful degradation requires explicit instructions: tell the model what to do when a field is missing, not just what to return when it succeeds
  • Multi-pass verification catches structural errors that single-pass prompts miss, especially on noisy inputs
  • Research shows that building intermediate structures before the final output (Structure of Thought) improves extraction accuracy by an average of 5.7% [1]
  • Reference and document parsing benchmarks confirm that "structured-output brittleness under noisy layouts" is the primary bottleneck at scale [3]

Why Single-Pass Extraction Breaks Down

A single, well-written extraction prompt works fine in demos. It falls apart in production because real documents are inconsistent. Fields appear in different orders, dates use different formats, nested objects sometimes flatten into prose, and optional sections get omitted entirely.

When a model hasn't been told what to do in these edge cases, it improvises. Sometimes it omits the field. Sometimes it invents a plausible value. Sometimes it returns a slightly different key name. Any of these breaks a downstream parser expecting a rigid schema.

Recent benchmarking on reference extraction tasks across multilingual, footnote-heavy documents found that extraction largely "saturates" for capable models - the model finds the right text - but parsing and end-to-end structured output remain the primary failure points due to brittleness under noisy layouts [3]. The model knows what to extract. It just can't reliably put it in the right box.

Schema Anchoring

Schema anchoring means you stop describing your target schema in natural language and start showing it as a literal JSON template. This is the foundation of everything else in this article.

Here is the difference:

# WEAK - natural language description
Extract the invoice details and return them as JSON with fields for
vendor name, amount, date, and line items.

# STRONG - schema-anchored
Extract invoice details from the document below. Return ONLY valid JSON
matching this exact schema. Do not add keys. Do not remove keys.

{
  "vendor_name": "<string | null>",
  "invoice_date": "<ISO 8601 date string | null>",
  "total_amount": "<number | null>",
  "currency": "<3-letter ISO code | null>",
  "line_items": [
    {
      "description": "<string>",
      "quantity": "<number | null>",
      "unit_price": "<number | null>"
    }
  ]
}

If a field cannot be found or inferred from the text, return null for that field.
Do not fabricate values. Do not omit keys.

DOCUMENT:
{{document}}

The typed placeholders - <string | null>, <ISO 8601 date string | null> - do two things at once. They tell the model what type to use and what to return when the field is absent. That second part is what most prompts skip.

Conditional Field Extraction

Some schemas are inherently conditional. An e-commerce document might have a shipping_address if it's an order confirmation but not if it's a return receipt. A medical note might have a diagnosis_code only if a diagnosis was made.

Handling this with a single flat schema produces garbage. The model will either hallucinate values or return an empty string, both of which break downstream logic differently.

The better approach is to instruct conditional field extraction explicitly:

Extract the following fields from the document.

ALWAYS extract:
- document_type: one of ["order", "return", "invoice", "unknown"]
- customer_id: string | null

EXTRACT ONLY IF document_type is "order":
- shipping_address: { street, city, postcode, country } | null
- estimated_delivery: ISO 8601 date | null

EXTRACT ONLY IF document_type is "invoice":
- due_date: ISO 8601 date | null
- payment_terms: string | null

For all conditional fields that do not apply, omit the key entirely.
Return ONLY valid JSON. No explanation.

DOCUMENT:
{{document}}

This pattern delegates the conditional logic to the model rather than trying to handle it in post-processing. For well-defined document types, it works cleanly. For ambiguous inputs, you still need graceful degradation.

Graceful Degradation

Graceful degradation is a design philosophy: your extraction prompt should produce something useful even when the input is incomplete, malformed, or partially out of domain.

Three rules cover most cases.

First, always specify the null contract. Every optional field gets | null in the schema, and the prompt explicitly says "return null, do not omit." This means your downstream parser always sees the key and can handle null as a first-class case rather than catching a KeyError.

Second, add a _meta object for extraction confidence. This is especially useful for document types where you're uncertain whether the model found real data or guessed:

"_meta": {
  "extraction_confidence": "high | medium | low",
  "missing_required_fields": ["field_a", "field_b"],
  "ambiguous_fields": ["field_c"]
}

Third, define fallback values for typed fields. Dates that can't be parsed become null, not an empty string. Amounts that are textual ("approximately $50") go into a separate raw_amount_text field alongside a null total_amount. This keeps your schema rigid while preserving the raw data for manual review.

Multi-Pass Verification

Even with a perfect schema-anchored prompt, some extraction runs will return structurally invalid JSON - especially on long documents, tables embedded in prose, or heavily nested objects. Multi-pass verification is a second prompt that audits the first output.

Pass 1 extracts. Pass 2 verifies and repairs.

# PASS 2 - Verification prompt

You are a JSON schema validator. Below is an extracted JSON object and
the target schema it should conform to.

Your task:
1. Check that every required key is present
2. Check that all types match the schema
3. Check that null appears where fields are missing (not empty string, not "N/A")
4. If the JSON is invalid, repair it
5. Return ONLY the corrected JSON. No explanation.

TARGET SCHEMA:
{{schema}}

EXTRACTED JSON:
{{pass_1_output}}

This is not just error-catching. It's also a forcing function for the first pass. When you know a second pass will audit the structure, you can write your first-pass prompt to be more aggressive about extraction and less precious about formatting. The two passes have different jobs.

Research on Structure of Thought (SoT) prompting from Duke University reinforces this intuition: explicitly building intermediate structures - rather than jumping directly to a final output - yields measurable accuracy gains across extraction tasks [1]. Multi-pass verification is, in effect, a form of SoT applied to structured output.

Templates for Common Extraction Tasks

Entity Recognition

Extract all named entities from the text below.
Return a JSON array. Each element must match this schema exactly:

{
  "entity_text": "<string>",
  "entity_type": "PERSON | ORG | LOCATION | DATE | PRODUCT | OTHER",
  "start_char": "<integer | null>",
  "confidence": "high | medium | low"
}

Do not merge entities. Do not split a single entity across multiple objects.
If no entities are found, return an empty array [].

TEXT:
{{text}}

Document Parsing (invoices, contracts, reports)

Parse the document below into structured JSON.
Follow the schema exactly. Return null for any field not present in the document.
Do not infer or fabricate values.

SCHEMA:
{{paste_schema_here}}

RULES:
- Dates must be ISO 8601 (YYYY-MM-DD) or null
- Currency amounts must be numbers, not strings
- Arrays must always be present, even if empty []
- Return ONLY the JSON object. No markdown. No explanation.

DOCUMENT:
{{document}}

Table Reconstruction

Tables embedded in prose or OCR output are among the hardest extraction targets. The model needs to both identify the table structure and map it to your schema.

The text below contains a table. Reconstruct it as a JSON array of objects.

Rules:
- Each row becomes one object
- Column headers become keys (normalized to snake_case)
- Missing cell values become null
- Numeric strings become numbers where the column is clearly numeric
- Return ONLY the JSON array

If no table is found, return []

TEXT:
{{text}}

Community practice confirms that forcing strict structural adherence - schema first, no conversational text - is essential for machine-readable output [4]. The templates above all follow this principle.

Putting It Together at Scale

At document scale, the practical stack looks like this. Schema-anchored Pass 1 runs on every document. A lightweight validator (Pydantic, Zod, JSON Schema) checks the output. Documents that fail validation get routed to the Pass 2 repair prompt. Documents that fail repair get flagged for human review with the _meta.missing_required_fields list attached.

This tiered approach - extract, validate, repair, escalate - handles the brittleness that benchmarks consistently identify as the core failure mode [3]. You're not trying to write a perfect prompt. You're building a system that degrades gracefully and surfaces its own failures.

If you want to speed up the prompt-writing part of this workflow, tools like Rephrase can help you iterate on your extraction prompts faster - it auto-improves prompts in any app via a global hotkey, which is genuinely useful when you're tuning schema anchors across ten different document types.

The extraction problem is mostly solved. The schema consistency problem is an engineering problem dressed up as a prompting problem. Treat it like one.


References

Documentation & Research

  1. T2S-Bench & Structure-of-Thought: Benchmarking and Prompting Comprehensive Text-to-Structure Reasoning - arXiv (arxiv.org/abs/2603.03790)
  2. GraphScout: Empowering LLMs with Intrinsic Exploration Ability for Agentic Graph Reasoning - arXiv (arxiv.org/abs/2603.01410)
  3. Benchmarking LLMs on Reference Extraction and Parsing in the Social Sciences and Humanities - arXiv (arxiv.org/abs/2603.13651)

Community Examples

  1. The 'Taxonomy Architect' for Organizing Messy Data - r/PromptEngineering (reddit.com/r/PromptEngineering/comments/1rla5tq)
  2. Show HN: Smelt - Extract Structured Data from PDFs and HTML Using LLM - GitHub (github.com/akdavidsson/smelt)
Frequently asked
How do I get an LLM to return consistent JSON every time?+

Use schema anchoring - paste your exact target schema into the prompt as a literal example, not a description. Pair this with an explicit instruction to return null for missing fields rather than omitting them. This dramatically reduces structural variance across runs.

How should an LLM handle missing or ambiguous fields during extraction?+

Instruct the model explicitly: return null for fields that cannot be inferred, never hallucinate values, and flag ambiguous fields with a confidence key. This graceful degradation approach is far safer than letting the model guess or skip fields silently.

Does Structure of Thought help with structured data extraction?+

Yes. Research from Duke University shows that Structure of Thought (SoT) prompting - explicitly building intermediate structures before the final output - yields an average 5.7% improvement across text-processing tasks including extraction.

← Previous
Voice AI Prompting: Why Text Prompts Fail
Next →
Negative Prompting: When to Cut, Not Add

On this page

Key TakeawaysWhy Single-Pass Extraction Breaks DownSchema AnchoringConditional Field ExtractionGraceful DegradationMulti-Pass VerificationTemplates for Common Extraction TasksEntity RecognitionDocument Parsing (invoices, contracts, reports)Table ReconstructionPutting It Together at ScaleReferences