<?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: didyouseethis212-sys</title>
    <description>The latest articles on DEV Community by didyouseethis212-sys (@didyouseethis212sys).</description>
    <link>https://dev.to/didyouseethis212sys</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%2F4243001%2F9fb482f0-a484-4958-b6cf-2fbfa1b18a64.png</url>
      <title>DEV Community: didyouseethis212-sys</title>
      <link>https://dev.to/didyouseethis212sys</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/didyouseethis212sys"/>
    <language>en</language>
    <item>
      <title>A tiny CSV cleanup demo: keep identifiers and audit every change</title>
      <dc:creator>didyouseethis212-sys</dc:creator>
      <pubDate>Sat, 14 Nov 2026 07:56:37 +0000</pubDate>
      <link>https://dev.to/didyouseethis212sys/a-tiny-csv-cleanup-demo-keep-identifiers-and-audit-every-change-27e6</link>
      <guid>https://dev.to/didyouseethis212sys/a-tiny-csv-cleanup-demo-keep-identifiers-and-audit-every-change-27e6</guid>
      <description>&lt;p&gt;A CSV cleanup can look correct while silently losing an identifier such as &lt;code&gt;0012&lt;/code&gt;. Here is a small, original fictional example you can run locally, plus a selectable-PDF table example to check against the source.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the rules explicit
&lt;/h2&gt;

&lt;p&gt;Our sample starts with four inventory rows. We agree to trim the &lt;code&gt;product&lt;/code&gt; column and remove only exact duplicates after that trim. The result has three rows; SKU &lt;code&gt;0012&lt;/code&gt; stays a string. No missing values are guessed and no other columns are normalized.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sku,product,quantity
0012, Desk tray ,12
0013,Pen holder,8
0013,Pen holder,8
0014,Notebook,25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The free &lt;a href="https://github.com/didyouseethis212-sys/small-data-cleanup-examples" rel="noopener noreferrer"&gt;example repository&lt;/a&gt; includes the Python script, before/after CSV files and a JSON change report. Python 3 is the only dependency for the CSV example. It makes no network or API calls.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 clean_csv.py messy-inventory.csv cleaned-inventory.csv --trim product --drop-exact
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The helper preserves the source, refuses uneven row widths and existing output files, and records source line numbers for changes. The example was run: input 4 rows, output 3 rows, one trim and one exact duplicate removed. This is deliberately a small helper, not an automatic decision about which business records are duplicates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify the output, not just the command
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Confirm the row count and review every deletion.&lt;/li&gt;
&lt;li&gt;Compare identifier strings, including leading zeros. CSV cannot enforce Excel types: import identifier columns as Text.&lt;/li&gt;
&lt;li&gt;Check totals against the source when totals are meaningful.&lt;/li&gt;
&lt;li&gt;Review untrusted formula-like cell values before opening a CSV in a spreadsheet. This helper is not a general CSV security sanitizer.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  PDF tables need a source check too
&lt;/h2&gt;

&lt;p&gt;The repository also contains an original fictional selectable-text PDF and an Excel workbook showing its extracted table, plus a separate raw/cleaned/change-log example. Compare each row, column, SKU and quantity. Being able to select PDF text does not guarantee a clean table layout. Scans, handwriting and complex merges need different handling. Flag unclear cells instead of inventing a value.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optional done-for-you pilots
&lt;/h2&gt;

&lt;p&gt;Disclosure: I operate the following Fiverr services. The examples above are free and do not require an order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.fiverr.com/fghjhbcv/clean-and-organize-excel-csv-data-with-a-documented-change-log" rel="noopener noreferrer"&gt;Excel/CSV cleanup&lt;/a&gt;: $20, 2 days, one flat sheet up to 100 data rows and 10 columns, agreed cleanup and change log, one revision.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.fiverr.com/fghjhbcv/convert-selectable-pdf-tables-to-excel-or-csv-with-source-checks" rel="noopener noreferrer"&gt;Selectable PDF tables to Excel/CSV&lt;/a&gt;: $20, 2 days, one PDF up to 5 pages, 500 table rows and 10 columns, one revision. Send a de-identified sample on Fiverr first so I can confirm extractability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only send authorized material with personal and confidential information removed. All communication, payment and delivery stay on Fiverr. AI assisted this article and the example code; the sample output was checked locally. These are fictional demonstrations, not client results.&lt;/p&gt;

</description>
      <category>python</category>
      <category>data</category>
    </item>
    <item>
      <title>A tiny Python helper for source-grounded content repurposing</title>
      <dc:creator>didyouseethis212-sys</dc:creator>
      <pubDate>Sat, 14 Nov 2026 07:21:54 +0000</pubDate>
      <link>https://dev.to/didyouseethis212sys/a-tiny-python-helper-for-source-grounded-content-repurposing-2aaj</link>
      <guid>https://dev.to/didyouseethis212sys/a-tiny-python-helper-for-source-grounded-content-repurposing-2aaj</guid>
      <description>&lt;p&gt;A content-repurposing workflow has two different jobs: assembling a consistent draft pack, and deciding whether the draft actually says what the source supports. A script can help with the first job. JSON validation cannot do the second.&lt;/p&gt;

&lt;p&gt;I put together a small Python helper and a fictional demonstration that make that boundary explicit. It runs locally with the standard library, does not need an API key, and never connects to publishing accounts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow
&lt;/h2&gt;

&lt;p&gt;Start with an article or transcript you own or are authorized to process. Remove confidential or personal information first. The helper numbers the source paragraphs and prepares a prompt for an AI chat you already use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 pipeline.py prepare sample-source.txt --out demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This writes &lt;code&gt;demo/prompt.txt&lt;/code&gt; and &lt;code&gt;demo/numbered-source.txt&lt;/code&gt;. The prompt requests three LinkedIn drafts, one email draft and two short-video scripts. Each item has text plus source IDs.&lt;/p&gt;

&lt;p&gt;The AI step is manual: copy the prompt to your existing chat and save the JSON-only reply. Available usage depends on that account. There is no hidden API integration.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 pipeline.py pack demo/response.json --out demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The pack command checks structure and writes a readable text file. To test packaging without an AI service, use the included fictional response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 pipeline.py pack sample-response.json --out demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What validation misses
&lt;/h2&gt;

&lt;p&gt;Consider this fictional source:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A weekly handoff note can include the task, owner, next action and due date. If the work is unclear, have a conversation first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A source-grounded draft could be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Your handoff note needs a named owner and an explicit next action. If the task is unclear, talk before sharing it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But a draft claiming that the note increased productivity by 30% would be unsupported—even if it contains a perfectly valid source ID. The helper does not claim to catch that semantic error.&lt;/p&gt;

&lt;p&gt;Before publishing, compare every factual claim to the original. Remove invented metrics and testimonials, check the audience and call to action, and give each draft a distinct point. Have the content owner approve the result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the example
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/didyouseethis212-sys/b2b-content-repurposing-kit" rel="noopener noreferrer"&gt;Repository, helper and fictional source/output files&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The example is a demonstration, not a client case study or evidence of engagement, time saved or sales.&lt;/p&gt;

&lt;p&gt;Disclosure: this article and demonstration were created with AI assistance. I operate the optional &lt;a href="https://www.fiverr.com/fghjhbcv/repurpose-b2b-content-into-linkedin-posts-emails-and-video-scripts" rel="noopener noreferrer"&gt;B2B repurposing service linked here&lt;/a&gt;. The $50 pilot provides the six written drafts above, up to 1,000 delivery words from one source of up to 2,000 words, with a three-day delivery window after complete requirements and one revision. It does not include video production or automatic publishing. The local helper remains available to try without purchasing the service.&lt;/p&gt;

</description>
      <category>python</category>
      <category>automation</category>
    </item>
    <item>
      <title>A Shopify CSV checker with line-level reports and an n8n import gate</title>
      <dc:creator>didyouseethis212-sys</dc:creator>
      <pubDate>Fri, 13 Nov 2026 13:17:57 +0000</pubDate>
      <link>https://dev.to/didyouseethis212sys/a-shopify-csv-checker-with-line-level-reports-and-an-n8n-import-gate-2p2f</link>
      <guid>https://dev.to/didyouseethis212sys/a-shopify-csv-checker-with-line-level-reports-and-an-n8n-import-gate-2p2f</guid>
      <description>&lt;p&gt;Disclosure: I maintain Catalog Import Guard, including its paid API. This article was prepared with AI assistance, and the sample results and workflow execution were checked before publication.&lt;/p&gt;

&lt;p&gt;A product CSV can be valid CSV and still contain an accidental duplicate variant, a price field with a currency symbol, or an empty field that changes an existing value during an overwrite. I built a small checker around that pre-import step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://catalog-import-guard.mayasmile.workers.dev/try" rel="noopener noreferrer"&gt;Try the browser checker&lt;/a&gt;&lt;/strong&gt; — no account, API key or Shopify installation is required. The CSV is checked on your device.&lt;/p&gt;

&lt;h2&gt;
  
  
  An example you can reproduce
&lt;/h2&gt;

&lt;p&gt;Load the built-in example, or paste this CSV and choose &lt;strong&gt;Update products&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;URL handle,Title,Option1 name,Option1 value,Price,Vendor
linen-shirt,Linen Shirt,Size,S,49.00,
linen-shirt,,,S,$39.00,
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The report contains two errors and one warning:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Physical line&lt;/th&gt;
&lt;th&gt;Finding&lt;/th&gt;
&lt;th&gt;Why it needs review&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Blank Vendor overwrite warning&lt;/td&gt;
&lt;td&gt;With overwrite enabled, an empty vendor can clear an existing value.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Duplicate variant&lt;/td&gt;
&lt;td&gt;Size S already appears within the same product handle.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Price format&lt;/td&gt;
&lt;td&gt;The price field expects a number without a currency symbol.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The checker reports physical line numbers, including files with quoted multiline cells. It does not guess what a price should be or change a store.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using the same check in n8n
&lt;/h2&gt;

&lt;p&gt;For a recurring supplier-file handoff, the &lt;a href="https://github.com/didyouseethis212-sys/catalog-csv-import-gate-n8n" rel="noopener noreferrer"&gt;public workflow and setup guide are on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The workflow runs two synthetic cases, sends CSV text to the API, validates the response shape, produces a downloadable CSV issue report for each item, and routes blocking findings separately from results ready for manual review.&lt;/p&gt;

&lt;p&gt;An HTTP 200 response alone does not mean the catalog passed. Errors, failed checks or a truncated report go to the blocked branch. A passing, untruncated result goes to the review branch. Both branches are connected; neither imports products or sends messages.&lt;/p&gt;

&lt;p&gt;Import and execution were verified in local n8n 2.46.6 using the actual Worker handler through a localhost fixture and synthetic authentication. Both branches and the binary report filenames were checked. I have not tested this in n8n Cloud or through a real Shopify import.&lt;/p&gt;

&lt;h2&gt;
  
  
  Costs, data and limits
&lt;/h2&gt;

&lt;p&gt;The browser checker remains free and local. The n8n workflow requires your own RapidAPI key and sends CSV text to the API. Remove customer information and credentials first.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://rapidapi.com/didyouseethis212sys/api/catalog-import-guard/pricing" rel="noopener noreferrer"&gt;current API plans&lt;/a&gt; include BASIC at $0 for 100 requests/month and PRO at $5 for 1,000 requests/month, subject to platform terms, request limits and bandwidth fees. The two-case tutorial makes two requests per run. Your n8n hosting can have separate costs.&lt;/p&gt;

&lt;p&gt;The browser accepts UTF-8 CSV text up to 256 KiB and 5,000 rows. API requests have a 256 KiB encoded JSON limit, so JSON escaping also counts. Checks cover selected product CSV fields; a passing result does not guarantee Shopify accepts an import. Review overwrite warnings and Shopify's own import preview before importing.&lt;/p&gt;

&lt;p&gt;If you handle supplier CSVs, which errors take the most manual checking? A synthetic row and the relevant column names are enough to discuss a case; please do not post private catalog or customer data.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>shopify</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
