<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Claupt</title>
    <description>The latest articles on DEV Community by Claupt (@claupttools).</description>
    <link>https://dev.to/claupttools</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4116418%2F30ca7959-f9f2-4076-ac68-cda22c294c78.jpg</url>
      <title>DEV Community: Claupt</title>
      <link>https://dev.to/claupttools</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/claupttools"/>
    <language>en</language>
    <item>
      <title>Stop AI From Inventing Facts in Document Extraction</title>
      <dc:creator>Claupt</dc:creator>
      <pubDate>Tue, 22 Sep 2026 06:52:54 +0000</pubDate>
      <link>https://dev.to/claupttools/stop-ai-from-inventing-facts-in-document-extraction-496b</link>
      <guid>https://dev.to/claupttools/stop-ai-from-inventing-facts-in-document-extraction-496b</guid>
      <description>&lt;p&gt;AI document extraction often fails in a subtle way: the output looks complete even when the source never contained the answer.&lt;/p&gt;

&lt;p&gt;A meeting transcript might omit an owner. A form might not state a deadline. A report may contain two conflicting values. If the prompt only asks for a polished summary, a model may fill those gaps with something plausible.&lt;/p&gt;

&lt;p&gt;The fix is not a longer prompt. It is a clearer decision boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Make uncertainty part of the output
&lt;/h2&gt;

&lt;p&gt;Instead of asking for a generic list of tasks, define fields that let the model preserve what is unknown.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"task"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"owner"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Unknown | name from source"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"deadline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Unknown | date from source"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"evidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"short source quote"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"confirmed | ambiguous | conflicting"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This changes the task from “produce a complete answer” to “produce a faithful extraction.”&lt;/p&gt;

&lt;h2&gt;
  
  
  2. State the rules for missing and conflicting information
&lt;/h2&gt;

&lt;p&gt;Use direct rules that tell the model what to do when the source is incomplete.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use only information stated in the source.
If an owner or deadline is not stated, write Unknown.
If two source statements conflict, preserve both and mark the item Conflicting.
Do not infer priority, responsibility, or dates.
For every extracted item, include a short supporting quote.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The supporting quote is especially useful. It gives a reviewer a fast way to check the extraction without rereading the entire document.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Treat examples as edge-case tests
&lt;/h2&gt;

&lt;p&gt;A good example is not decoration. It shows the model how to behave when the input is messy.&lt;/p&gt;

&lt;p&gt;For example, include a short transcript where one person suggests a date and another later changes it. Your expected output should preserve the latest confirmed decision and flag the earlier statement as superseded.&lt;/p&gt;

&lt;p&gt;A second example can show an action with no owner. The correct result is not a guessed person; it is &lt;code&gt;Unknown&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Separate extraction from writing
&lt;/h2&gt;

&lt;p&gt;Do not ask the model to extract facts, make decisions, and draft a polished email in one step.&lt;/p&gt;

&lt;p&gt;First create a structured extraction with evidence. Review it or validate it with simple rules. Then use that approved structure to create the summary, email, or report.&lt;/p&gt;

&lt;p&gt;This split makes errors easier to find and lowers the chance that polished wording hides an unsupported claim.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Add a lightweight validation pass
&lt;/h2&gt;

&lt;p&gt;Before using the result, check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does every non-Unknown value have source evidence?&lt;/li&gt;
&lt;li&gt;Are all required fields present?&lt;/li&gt;
&lt;li&gt;Did the model flag contradictions?&lt;/li&gt;
&lt;li&gt;Are dates and names copied exactly from the source?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some checks can be deterministic. For example, reject an item with a named owner but no evidence field. Keep the model for the ambiguous language work and use rules for clear acceptance criteria.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Clean and structure the source document.&lt;/li&gt;
&lt;li&gt;Extract to a schema with &lt;code&gt;Unknown&lt;/code&gt;, &lt;code&gt;Ambiguous&lt;/code&gt;, and &lt;code&gt;Conflicting&lt;/code&gt; states.&lt;/li&gt;
&lt;li&gt;Require short evidence for each claim.&lt;/li&gt;
&lt;li&gt;Validate required fields and evidence coverage.&lt;/li&gt;
&lt;li&gt;Generate the final human-readable output only after review.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This workflow is useful for meeting notes, forms, support tickets, and any document where a confident but invented detail would create extra work.&lt;/p&gt;

&lt;p&gt;For browser-based document cleanup before extraction, you can convert a PDF or Office file into editable Markdown with &lt;a href="https://claupt.com/tools/pdf-to-markdown-parser" rel="noopener noreferrer"&gt;Claupt’s PDF to Markdown tool&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>promptengineering</category>
      <category>privacy</category>
    </item>
    <item>
      <title>How to reduce AI token cost before sending a prompt</title>
      <dc:creator>Claupt</dc:creator>
      <pubDate>Fri, 11 Sep 2026 18:57:51 +0000</pubDate>
      <link>https://dev.to/claupttools/how-to-reduce-ai-token-cost-before-sending-a-prompt-4lm6</link>
      <guid>https://dev.to/claupttools/how-to-reduce-ai-token-cost-before-sending-a-prompt-4lm6</guid>
      <description>&lt;p&gt;AI cost is often treated as a model-selection problem. It is also an input-preparation problem.&lt;/p&gt;

&lt;p&gt;Every repeated header, navigation block, page number, comment, empty field, and duplicate sentence takes context space. That can increase cost, slow a response, and make the useful instructions harder for the model to find.&lt;/p&gt;

&lt;p&gt;Here is a simple workflow that works before any model call.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Measure the input first
&lt;/h2&gt;

&lt;p&gt;Before changing anything, estimate the size of the prompt. You need a baseline to decide whether a cleanup step is worth it and to avoid running into a model's context limit.&lt;/p&gt;

&lt;p&gt;For an estimate of prompt tokens, use Claupt's &lt;a href="https://claupt.com/tools/token-counter" rel="noopener noreferrer"&gt;Token Counter&lt;/a&gt;. It is most useful when you compare the original input with a cleaned version.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Remove content that does not help the task
&lt;/h2&gt;

&lt;p&gt;For copied web pages, remove navigation, scripts, trackers, sidebars, and repeated layout content. For code, remove comments only when the task does not depend on them. For JSON, remove unnecessary punctuation by converting it into a readable compact format.&lt;/p&gt;

&lt;p&gt;The goal is not to make text short at any cost. Keep headings, identifiers, constraints, examples, and source details that the model needs to answer correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Convert files into AI-friendly text
&lt;/h2&gt;

&lt;p&gt;PDFs and Office files often contain visual layout noise that is useful to a human reader but not to a language model. Converting them to Markdown gives you editable headings, paragraphs, and lists that are easier to review and reuse.&lt;/p&gt;

&lt;p&gt;Try the &lt;a href="https://claupt.com/tools/pdf-to-markdown-parser" rel="noopener noreferrer"&gt;PDF/Office to Markdown tool&lt;/a&gt;, then scan the result before sending it to a model. Tables and complex layouts may still need manual review.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Split long material deliberately
&lt;/h2&gt;

&lt;p&gt;Large documents work better when split by a useful boundary: a section, paragraph, or semantic topic. Avoid cutting in the middle of a sentence or separating a requirement from the condition that explains it.&lt;/p&gt;

&lt;p&gt;Claupt's &lt;a href="https://claupt.com/tools/smart-text-chunker" rel="noopener noreferrer"&gt;Smart Text Chunker&lt;/a&gt; helps create smaller sections that fit the chosen context budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Remove sensitive details before sharing
&lt;/h2&gt;

&lt;p&gt;When a prompt includes real people, email addresses, phone numbers, identifiers, or confidential labels, replace them before sending the text to external systems. Keep a reviewed mapping if you need to restore names later.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://claupt.com/tools/pii-anonymizer" rel="noopener noreferrer"&gt;Local PII Anonymizer&lt;/a&gt; highlights matches in the browser so you can review every replacement.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical rule
&lt;/h2&gt;

&lt;p&gt;Prepare the input, measure it again, and only then send it to the model. You will usually get a clearer prompt, a more predictable cost, and a result that is easier to verify.&lt;/p&gt;

&lt;p&gt;Claupt is free to use at &lt;a href="https://claupt.com" rel="noopener noreferrer"&gt;claupt.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>privacy</category>
      <category>llm</category>
    </item>
    <item>
      <title>How to Prepare a Contract for AI Without Exposing Sensitive Data</title>
      <dc:creator>Claupt</dc:creator>
      <pubDate>Tue, 08 Sep 2026 20:27:30 +0000</pubDate>
      <link>https://dev.to/claupttools/how-to-prepare-a-contract-for-ai-without-exposing-sensitive-data-2dbj</link>
      <guid>https://dev.to/claupttools/how-to-prepare-a-contract-for-ai-without-exposing-sensitive-data-2dbj</guid>
      <description>&lt;p&gt;AI can help summarize, review, and turn contracts into clear action items. Before uploading a contract to ChatGPT, Claude, Gemini, or another AI tool, remove the details that identify people, projects, and commercial terms.&lt;/p&gt;

&lt;p&gt;This is a practical way to prepare a useful copy while keeping the original private.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to remove first
&lt;/h2&gt;

&lt;p&gt;Start with direct identifiers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Names, email addresses, phone numbers, and postal addresses&lt;/li&gt;
&lt;li&gt;Client, company, project, and internal product names&lt;/li&gt;
&lt;li&gt;Contract, purchase-order, tender, invoice, and reference numbers&lt;/li&gt;
&lt;li&gt;Bank details, API keys, passwords, IP addresses, and other credentials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A contract can still reveal a person or organization even when one obvious field is removed. Treat combinations of details carefully.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use consistent placeholders
&lt;/h2&gt;

&lt;p&gt;Replace repeated details with the same placeholder every time. That keeps the relationships in the document understandable.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ahmed Al-Harbi → [PERSON_1]&lt;/li&gt;
&lt;li&gt;Project Falcon → [PROJECT_1]&lt;/li&gt;
&lt;li&gt;CN-2026-044 → [CONTRACT_1]&lt;/li&gt;
&lt;li&gt;
&lt;a href="mailto:ahmed@example.com"&gt;ahmed@example.com&lt;/a&gt; → [EMAIL_1]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now an AI can see that [PERSON_1] appears in several clauses, without learning who that person is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the legal meaning intact
&lt;/h2&gt;

&lt;p&gt;Remove identifiers, but preserve the clause structure, dates when they matter to the question, obligations, exceptions, and amounts when they are needed for analysis.&lt;/p&gt;

&lt;p&gt;Instead of deleting an entire section, turn this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ahmed Al-Harbi will deliver the Project Falcon report by 15 October under Contract CN-2026-044.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Into this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;[PERSON_1] will deliver the [PROJECT_1] report by 15 October under [CONTRACT_1].&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The instruction remains clear while the sensitive identifiers are removed.&lt;/p&gt;

&lt;h2&gt;
  
  
  A text replacement is not a full document redaction
&lt;/h2&gt;

&lt;p&gt;Copying text into a tool is useful for prompt preparation. It does not securely redact the original PDF or Word document. Comments, revisions, document metadata, hidden text, and attachments may still hold information.&lt;/p&gt;

&lt;p&gt;Keep the source document private and review the prepared text before sharing it anywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  A simple workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Copy only the section needed for the AI task.&lt;/li&gt;
&lt;li&gt;Replace names, contact details, project names, and reference numbers with consistent placeholders.&lt;/li&gt;
&lt;li&gt;Read the result once for context-dependent details that an automated detector may miss.&lt;/li&gt;
&lt;li&gt;Ask the AI a narrow question, such as “List the delivery obligations and deadlines.”&lt;/li&gt;
&lt;li&gt;Check the answer against the original document locally.&lt;/li&gt;
&lt;li&gt;Delete the prepared copy when the work is complete.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A browser-only option
&lt;/h2&gt;

&lt;p&gt;If you work with text often, &lt;a href="https://claupt.com/tools/pii-anonymizer.html" rel="noopener noreferrer"&gt;Claupt's PII Anonymizer&lt;/a&gt; helps prepare a private working copy in the browser. It can identify common sensitive data such as emails, phone numbers, addresses, names, project names, and contract numbers.&lt;/p&gt;

&lt;p&gt;Automatic detection is a starting point, not a substitute for review. Context-dependent information needs a human check before it is shared.&lt;/p&gt;

&lt;p&gt;The best AI workflows keep the evidence that matters and remove the identity details that do not.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>privacy</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
