<?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: neo xia</title>
    <description>The latest articles on DEV Community by neo xia (@neo_xia_3f4c019330af5fb9d).</description>
    <link>https://dev.to/neo_xia_3f4c019330af5fb9d</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%2F3961904%2F1a660dc3-e1fb-4caf-b9fe-c28d09fd5a72.png</url>
      <title>DEV Community: neo xia</title>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/neo_xia_3f4c019330af5fb9d"/>
    <language>en</language>
    <item>
      <title>cosskill update: attach screenshots to your practice conversations</title>
      <dc:creator>neo xia</dc:creator>
      <pubDate>Thu, 22 Oct 2026 02:08:48 +0000</pubDate>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d/cosskill-update-attach-screenshots-to-your-practice-conversations-2522</link>
      <guid>https://dev.to/neo_xia_3f4c019330af5fb9d/cosskill-update-attach-screenshots-to-your-practice-conversations-2522</guid>
      <description>&lt;p&gt;Quick update for anyone using &lt;a href="https://cosskill.com/" rel="noopener noreferrer"&gt;cosskill&lt;/a&gt; to rehearse high-stakes conversations — you can now attach screenshots to a practice conversation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's new&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;attach-image button&lt;/strong&gt; in the chat: drop in a screenshot (a real email, a performance-review draft, a job posting, a message you're stuck on) and the AI persona works from it.&lt;/li&gt;
&lt;li&gt;Images are sent to the AI model and kept for up to 30 days in that chat, so a rehearsal session can refer back to what you shared.&lt;/li&gt;
&lt;li&gt;Made for the moments where the context &lt;em&gt;is&lt;/em&gt; the hard part — negotiating against an actual offer letter reads very differently from describing it in words.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Everything else stays the same:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;5 messages a day without an account&lt;/strong&gt; — no signup, no credit card&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10 messages a day after signing in&lt;/strong&gt; (free), resetting daily&lt;/li&gt;
&lt;li&gt;All personas and scenarios are available on the free tier — salary negotiations, critical feedback, difficult personal talks&lt;/li&gt;
&lt;li&gt;The Chinese-language interface is fully live&lt;/li&gt;
&lt;li&gt;Pro, for unlimited practice, is &lt;strong&gt;$12.90/month or $129/year&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a tense conversation is coming up, bring the real artifact and rehearse against it: &lt;a href="https://cosskill.com/" rel="noopener noreferrer"&gt;https://cosskill.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Batch-processing product photos to a clean white background: a 3-pass workflow</title>
      <dc:creator>neo xia</dc:creator>
      <pubDate>Mon, 19 Oct 2026 16:11:41 +0000</pubDate>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d/batch-processing-product-photos-to-a-clean-white-background-a-3-pass-workflow-2gc7</link>
      <guid>https://dev.to/neo_xia_3f4c019330af5fb9d/batch-processing-product-photos-to-a-clean-white-background-a-3-pass-workflow-2gc7</guid>
      <description>&lt;p&gt;If you shoot a whole catalog in one afternoon, editing one photo at a time is where the evening goes. Here is the batch workflow we use to take a folder of product shots to storefront-ready white backgrounds — three passes, most of it automated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pass 1 — triage the folder (2 minutes)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open the folder and sort by shooting setup, not by product. All photos from the same light and angle belong in one batch: a tool that keys a white background calibrates per batch, and mixed setups in one batch produce inconsistent edges. Delete obvious rejects now (motion blur, lens cap still on) instead of paying processing time on them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pass 2 — batch the background pass&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run the batch through a background-removal pass in one go, with the same output settings for the whole folder: white (#FFFFFF) output, one resolution, one quality level. Consistency is the point — a catalog where every image has the same white and the same framing reads as a store, not a flea market.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pass 3 — edge QA on the risky 10%&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not every photo deserves equal attention. Jewelry, glassware, and anything with hair-thin strands produce the most edge halos — pull those out and inspect at 200% zoom. Small fringes clean up with a 1-pixel edge contraction on white; anything worse goes back for a reshoot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File hygiene that saves an afternoon later&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Name outputs by product identifier plus angle suffix (sku-01-front.jpg), keep them ASCII, and export at the resolution the marketplace actually displays. A consistent naming scheme is what makes the next batch a ten-minute job instead of a search party.&lt;/p&gt;

&lt;p&gt;Disclosure: I build CleanWhiteBG (&lt;a href="https://cleanwhitebg.com" rel="noopener noreferrer"&gt;https://cleanwhitebg.com&lt;/a&gt;), a free browser tool that removes image backgrounds and replaces them with white — batch uploads need no signup, and every upload auto-deletes within 2 hours. The workflow above is the same one we run our own screenshots through. Nothing here is sponsored.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>ecommerce</category>
      <category>productivity</category>
    </item>
    <item>
      <title>cosskill update: the free tier now resets daily</title>
      <dc:creator>neo xia</dc:creator>
      <pubDate>Wed, 14 Oct 2026 17:30:27 +0000</pubDate>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d/cosskill-update-the-free-tier-now-resets-daily-2di8</link>
      <guid>https://dev.to/neo_xia_3f4c019330af5fb9d/cosskill-update-the-free-tier-now-resets-daily-2di8</guid>
      <description>&lt;p&gt;Quick update for anyone using &lt;a href="https://cosskill.com/" rel="noopener noreferrer"&gt;cosskill&lt;/a&gt; to rehearse the conversations they dread — a salary negotiation, critical feedback, a difficult personal talk. The free tier just changed in a way that makes daily practice a lot easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The free tier now resets every day.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;5 messages a day without an account&lt;/strong&gt; — no signup, no credit card, just open the site and start rehearsing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10 messages a day after signing in&lt;/strong&gt; (free)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The counter resets on a daily cycle, so one heavy day of practice no longer eats the whole budget. Come back tomorrow and keep going.&lt;/p&gt;

&lt;p&gt;Everything else stays the same:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All personas and scenarios are available on the free tier — salary negotiations, feedback conversations, and difficult personal talks&lt;/li&gt;
&lt;li&gt;The Chinese-language interface (launched at the end of September) is fully live&lt;/li&gt;
&lt;li&gt;Pro, if you want unlimited practice, is &lt;strong&gt;$12.90/month or $129/year&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why the change? Rehearsal works as a habit, not a one-off. Preparing for a real negotiation next week means running the conversation a few minutes every day — with a persona that pushes back, interrupts, and doesn't grade on a curve — not burning through a fixed allowance the night before. A daily reset matches how people actually prepare.&lt;/p&gt;

&lt;p&gt;If you have a high-stakes conversation coming up, try it here: &lt;a href="https://cosskill.com/" rel="noopener noreferrer"&gt;https://cosskill.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Auto-deleting user uploads within 2 hours: how a privacy promise becomes infrastructure</title>
      <dc:creator>neo xia</dc:creator>
      <pubDate>Sun, 11 Oct 2026 16:06:31 +0000</pubDate>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d/auto-deleting-user-uploads-within-2-hours-how-a-privacy-promise-becomes-infrastructure-36p9</link>
      <guid>https://dev.to/neo_xia_3f4c019330af5fb9d/auto-deleting-user-uploads-within-2-hours-how-a-privacy-promise-becomes-infrastructure-36p9</guid>
      <description>&lt;p&gt;When a privacy policy says "every upload is deleted within two hours," that sentence has to be backed by infrastructure, not intentions. This post walks through what implementing that promise actually looked like for a browser-based image tool — and the trade-offs nobody mentions when the roadmap says "privacy-first."&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a hard retention window matters
&lt;/h2&gt;

&lt;p&gt;Image tools touch sensitive casual uploads: product shots before launch, personal photos, screenshots with private data. A retention promise is only credible when deletion is enforced by the storage layer, not by a cleanup job someone can forget to deploy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the storage layer enforce the deadline
&lt;/h2&gt;

&lt;p&gt;The rule we landed on: nothing outlives its usefulness window by default.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ephemeral object storage.&lt;/strong&gt; Every upload lands in object storage with a lifecycle rule that expires the object two hours after creation. Deletion is not scheduled application code — it is a property of the storage class. If the application dies, the objects still expire.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Process in memory wherever possible.&lt;/strong&gt; The background-removal pipeline runs per request; intermediate frames never touch persistent disk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No analytics on image content.&lt;/strong&gt; Logs carry event types and timings, never pixels or filenames.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The trade-offs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No "your recent uploads" gallery.&lt;/strong&gt; A server-side history would break the model. A session-scoped history held client-side is the honest version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support gets harder.&lt;/strong&gt; When a user reports a broken output, the artifact may already be gone. You learn to log structured errors instead of keeping evidence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lifecycle rules are eventually consistent.&lt;/strong&gt; "Within 2 hours" is an upper bound, not a precise instant — say exactly that in the policy, in the same units everywhere (no "60 minutes" vs "2 hours" drift).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The quarterly re-audit checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Do lifecycle rules cover every bucket, including any replica?&lt;/li&gt;
&lt;li&gt;Do logs contain metadata only?&lt;/li&gt;
&lt;li&gt;Can the deletion promise be verified from the outside (policy page vs. observed behavior)?&lt;/li&gt;
&lt;li&gt;Is the retention window stated in identical units across product, policy, and docs?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Disclosure
&lt;/h2&gt;

&lt;p&gt;Disclosure: I build CleanWhiteBG (&lt;a href="https://cleanwhitebg.com" rel="noopener noreferrer"&gt;https://cleanwhitebg.com&lt;/a&gt;), a free browser tool that removes image backgrounds and replaces them with white. This post comes from engineering that product; nothing here is sponsored. The user-facing summary of the discipline above: upload without signup, get a white-background result, and every upload auto-deletes within 2 hours.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>backend</category>
      <category>infrastructure</category>
      <category>privacy</category>
    </item>
    <item>
      <title>cosskill update: the AI conversation simulator now speaks Chinese</title>
      <dc:creator>neo xia</dc:creator>
      <pubDate>Wed, 07 Oct 2026 17:44:49 +0000</pubDate>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d/cosskill-update-the-ai-conversation-simulator-now-speaks-chinese-3fn6</link>
      <guid>https://dev.to/neo_xia_3f4c019330af5fb9d/cosskill-update-the-ai-conversation-simulator-now-speaks-chinese-3fn6</guid>
      <description>&lt;p&gt;cosskill is an AI communication simulator for rehearsing high-stakes conversations — salary negotiations, performance feedback, difficult personal talks — by speaking with realistic AI personas before they happen.&lt;/p&gt;

&lt;p&gt;This month we shipped a full Chinese-language interface. Every persona, scenario and settings screen now works in Chinese as well as English, so you can rehearse in the language you'll actually be speaking when the conversation matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you can do without an account:&lt;/strong&gt; 3 full messages, every persona and scenario unlocked. &lt;strong&gt;After signing in:&lt;/strong&gt; 10 messages. Pro removes the cap entirely — $12.90/month, or $9.90/month billed yearly.&lt;/p&gt;

&lt;p&gt;Why rehearse at all? Negotiations are usually decided in the first two minutes: the opening ask, the framing, the pause after a lowball counter. Practicing out loud against an AI that pushes back realistically is the cheapest way to find the weak spots in your opening — before a real salary is on the table.&lt;/p&gt;

&lt;p&gt;Try it: &lt;a href="https://cosskill.com" rel="noopener noreferrer"&gt;https://cosskill.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Why marketplace product photos get rejected: white-background image requirements, and a 1-minute browser fix</title>
      <dc:creator>neo xia</dc:creator>
      <pubDate>Sun, 04 Oct 2026 16:00:57 +0000</pubDate>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d/why-marketplace-product-photos-get-rejected-white-background-image-requirements-and-a-1-minute-38md</link>
      <guid>https://dev.to/neo_xia_3f4c019330af5fb9d/why-marketplace-product-photos-get-rejected-white-background-image-requirements-and-a-1-minute-38md</guid>
      <description>&lt;p&gt;If you sell on marketplaces — Amazon, Shopify, Etsy, app stores, or any product directory — you have probably had a listing image rejected or down-ranked for one reason: the background.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I build &lt;a href="https://cleanwhitebg.com" rel="noopener noreferrer"&gt;CleanWhiteBG&lt;/a&gt;, a free browser tool for exactly this problem. This post explains the requirements themselves; the tool is one way to hit them. No signup, no watermark, and images never leave your device.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "white background" is a hard requirement
&lt;/h2&gt;

&lt;p&gt;Most marketplaces normalize their catalog grids around a consistent look. A white (or pure transparent) background lets them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Composite your photo into any layout&lt;/strong&gt; — tiles, carousels, comparison tables — without visible seams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pass automated checks&lt;/strong&gt;: several pipelines measure background uniformity and reject images with busy or colored backgrounds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep perceived quality high&lt;/strong&gt;: studio-white reads as "professional" at thumbnail size, where most buying decisions happen.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the requirements usually say
&lt;/h2&gt;

&lt;p&gt;The wording varies, but the checks look like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The product fills 80–90% of the frame.&lt;/li&gt;
&lt;li&gt;The background is pure white (#FFFFFF) or transparent PNG.&lt;/li&gt;
&lt;li&gt;No watermarks, logos, or inset text on the image.&lt;/li&gt;
&lt;li&gt;Sharp edges — no halo or color fringing left behind by a bad cutout.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Point 4 is where DIY jobs fail: a tolerance-based "magic wand" removal leaves gray fringes around hair, glassware, or jewelry, and reviewers (human or automated) notice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 1-minute fix in the browser
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;a href="https://cleanwhitebg.com" rel="noopener noreferrer"&gt;https://cleanwhitebg.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Drop the product photo in (nothing is uploaded — it runs locally in your browser via WebGPU/WASM).&lt;/li&gt;
&lt;li&gt;Pick the mode: &lt;strong&gt;Fast&lt;/strong&gt; for everyday shots, &lt;strong&gt;Precision&lt;/strong&gt; for complex edges like hair or jewelry.&lt;/li&gt;
&lt;li&gt;Download the flattened white-background PNG and upload it to the marketplace.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Because the processing is local, it also works for images you would rather not upload to a cloud service — product shots under NDA, unreleased packaging, client work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checklist before you re-upload
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Product fills the frame, centered&lt;/li&gt;
&lt;li&gt;[ ] Background is exactly #FFFFFF (pick the white-flatten option, not transparent)&lt;/li&gt;
&lt;li&gt;[ ] Zoom to 200% and check edges for fringing&lt;/li&gt;
&lt;li&gt;[ ] No leftover watermark from stock previews&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the whole loop. If you batch 50 SKUs a week, the difference between a 5-minute-per-image desktop workflow and a 30-second browser one adds up fast.&lt;/p&gt;

&lt;p&gt;Feedback welcome — especially edge cases where the cutout struggles (glass, fur, reflective packaging).&lt;/p&gt;

</description>
      <category>design</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>Four Marketplaces, One Listing Workflow: What Amazon, eBay, Etsy and Shopify Expect From Your Copy</title>
      <dc:creator>neo xia</dc:creator>
      <pubDate>Sat, 03 Oct 2026 19:38:42 +0000</pubDate>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d/four-marketplaces-one-listing-workflow-what-amazon-ebay-etsy-and-shopify-expect-from-your-copy-3n8c</link>
      <guid>https://dev.to/neo_xia_3f4c019330af5fb9d/four-marketplaces-one-listing-workflow-what-amazon-ebay-etsy-and-shopify-expect-from-your-copy-3n8c</guid>
      <description>&lt;p&gt;If you sell on more than one marketplace, you already know the copy you write for Amazon doesn't survive a trip to Etsy. Same product, different rules — and the rules are not cosmetic.&lt;/p&gt;

&lt;p&gt;I build listing tools for a living, and here's the cheat sheet I wish someone had handed me before I rewrote the same SKU four times.&lt;/p&gt;

&lt;h2&gt;
  
  
  What each platform actually expects
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Amazon&lt;/strong&gt; — Titles get truncated hard on mobile, and Rufus surfaces content that answers buyer questions directly. Front-load the searchable keywords; save the adjectives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;eBay&lt;/strong&gt; — Title length is capped at 80 characters, and buyers filter by item specifics. Condition-forward descriptions reduce disputes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Etsy&lt;/strong&gt; — Buyers respond to the maker story and materials. Tags are multi-word phrases, and the tone is handmade, not corporate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shopify&lt;/strong&gt; — Your own brand voice applies, and the most common failure is shipping the manufacturer's thin spec sheet as a product description.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why paste-reformatting breaks down
&lt;/h2&gt;

&lt;p&gt;The usual loop looks like this: ask a general AI writer for copy, paste the answer into the marketplace form, then fix the character limit, reorder the bullets, rewrite the description, and swap images by hand. Every SKU repeats the loop, and the loop scales with your catalog.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we built instead
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://aiproductpageoptimization.com" rel="noopener noreferrer"&gt;AI Product Page Optimization&lt;/a&gt; is a Chrome extension that reads the live listing page you already have open, detects which marketplace you're on, and generates copy that respects that platform's rules. One install covers Amazon, Shopify (including custom domains), eBay, and Etsy. Optional image enhancement runs in the same pass, and results land on a review dashboard so nothing publishes until you approve it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing facts
&lt;/h2&gt;

&lt;p&gt;Text optimization costs 1 credit; successfully enhanced images cost 2. New accounts get 5 free credits, no card required. Subscriptions start at $19.9/month.&lt;/p&gt;

&lt;p&gt;If you manage listings across channels: which platform's rules eat most of your time? Comments are open.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ecommerce</category>
      <category>shopify</category>
      <category>marketing</category>
    </item>
    <item>
      <title>Ship an Editor, Not a Generator: Designing Review-First AI for Marketplace Listings</title>
      <dc:creator>neo xia</dc:creator>
      <pubDate>Fri, 02 Oct 2026 19:25:32 +0000</pubDate>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d/ship-an-editor-not-a-generator-designing-review-first-ai-for-marketplace-listings-151d</link>
      <guid>https://dev.to/neo_xia_3f4c019330af5fb9d/ship-an-editor-not-a-generator-designing-review-first-ai-for-marketplace-listings-151d</guid>
      <description>&lt;p&gt;Most AI writing tools optimize for one moment: the instant text appears. But for marketplace sellers, that moment is the least important part of the workflow. What matters is everything after — reading the suggestion, comparing it to the original, and deciding what actually goes live on Amazon, Shopify, eBay, or Etsy.&lt;/p&gt;

&lt;p&gt;That gap is why we built &lt;a href="https://aiproductpageoptimization.com" rel="noopener noreferrer"&gt;AI Product Page Optimization&lt;/a&gt; around an editor, not a generator.&lt;/p&gt;

&lt;h2&gt;
  
  
  The trust problem with generated text
&lt;/h2&gt;

&lt;p&gt;A generated title is a guess. A reviewed title is a decision. Sellers don't publish what an AI writes — they publish what they approve. So the core UX question isn't "how good is the model?" but "how fast can a seller judge the output?"&lt;/p&gt;

&lt;p&gt;Our answer: every optimization run lands on a web dashboard as a before/after comparison. Original on one side, suggestion on the other. The seller edits, accepts, or discards. Nothing touches the listing until a human says so.&lt;/p&gt;

&lt;h2&gt;
  
  
  The loop: extract → draft → review → publish
&lt;/h2&gt;

&lt;p&gt;The Chrome extension reads the live product page the seller already has open — Amazon, Shopify (including custom domains), eBay, or Etsy — using structured data plus platform-specific selectors. The AI drafts rewrites that respect each channel's constraints: Amazon's mobile truncation, eBay title length, Etsy's handmade tone, Shopify brand voice.&lt;/p&gt;

&lt;p&gt;Then control moves to the dashboard:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Before/after comparison for every field&lt;/li&gt;
&lt;li&gt;History of past runs, reusable across SKUs&lt;/li&gt;
&lt;li&gt;Optional public share links for team feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Paste-ready output, human-approved.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the same pass handles images
&lt;/h2&gt;

&lt;p&gt;Copy alone rarely fixes a weak listing. The same run can enhance product photos or swap backgrounds — and keeping the original image is free. That pricing detail matters more than it sounds: it makes "do nothing" a legitimate choice, which keeps the review loop honest.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Constraints are features.&lt;/strong&gt; Character limits and platform tone rules make suggestions &lt;em&gt;more&lt;/em&gt; useful, not less — they turn generated text into paste-ready text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review speed beats generation speed.&lt;/strong&gt; A suggestion that takes 30 seconds to judge is worth more than three alternatives that take 10 minutes to compare.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;History turns AI output into an asset.&lt;/strong&gt; Sellers who can reopen last month's runs stop treating AI as a slot machine.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you sell across marketplaces and want to see the review-first flow yourself, the extension is free to try — 5 credits on signup, no credit card: &lt;a href="https://aiproductpageoptimization.com" rel="noopener noreferrer"&gt;https://aiproductpageoptimization.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>ux</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Reading any marketplace product page from a Chrome extension: JSON-LD first, selectors second</title>
      <dc:creator>neo xia</dc:creator>
      <pubDate>Thu, 01 Oct 2026 19:35:47 +0000</pubDate>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d/reading-any-marketplace-product-page-from-a-chrome-extension-json-ld-first-selectors-second-c2i</link>
      <guid>https://dev.to/neo_xia_3f4c019330af5fb9d/reading-any-marketplace-product-page-from-a-chrome-extension-json-ld-first-selectors-second-c2i</guid>
      <description>&lt;p&gt;If you have ever tried to build a tool that "reads" a product page — an Amazon listing, a Shopify storefront, an eBay item, an Etsy shop page — you already know the problem: every marketplace renders the same conceptual data (title, bullets, description, images, price) in completely different DOM shapes.&lt;/p&gt;

&lt;p&gt;We ran into this while building &lt;a href="https://aiproductpageoptimization.com" rel="noopener noreferrer"&gt;AI Product Page Optimization&lt;/a&gt;, a Chrome extension that reads the product page you already have open and returns marketplace-ready title, description, and image suggestions in about 30 seconds. This post is the technical breakdown of how the reading step works. (This article is disclosed as AI-assisted; the extraction design and constraints below are from our actual implementation.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with JSON-LD, always
&lt;/h2&gt;

&lt;p&gt;Most marketplaces embed structured data in the page. Before touching a single DOM selector, we look for &lt;code&gt;application/ld+json&lt;/code&gt; blocks and parse them for &lt;code&gt;Product&lt;/code&gt;-shaped objects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ldjson&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;script[type="application/ld+json"]&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why JSON-LD first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It survives layout changes. Amazon can reshuffle its DOM next week; the &lt;code&gt;Product&lt;/code&gt; schema block rarely moves.&lt;/li&gt;
&lt;li&gt;It normalizes the shape. A title is a &lt;code&gt;name&lt;/code&gt;, images are an &lt;code&gt;image&lt;/code&gt; array, and offers carry price/currency regardless of which marketplace you are on.&lt;/li&gt;
&lt;li&gt;It handles encoding edge cases (HTML entities, unicode in internationalized catalogs) better than regex-over-HTML ever will.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But JSON-LD is never the whole story. Marketplaces routinely put &lt;em&gt;richer or more current&lt;/em&gt; data in the DOM than in their structured data: bullet points that are not in any schema field, variant-specific copy, A/B-tested titles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Selectors as a scoped fallback
&lt;/h2&gt;

&lt;p&gt;After JSON-LD, we apply platform-specific DOM selectors to fill the gaps — and the key word is &lt;em&gt;scoped&lt;/em&gt;: we detect the marketplace from the URL first, then load only that platform's selector set.&lt;/p&gt;

&lt;p&gt;The four surfaces we read today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon&lt;/strong&gt; — deep, nested DOM with frequent class-name churn; stable attributes and landmark patterns beat styling hooks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shopify (including custom domains)&lt;/strong&gt; — the most uniform target; Shopify themes share enough structure that extraction is reliable even on stores with custom themes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;eBay&lt;/strong&gt; — item-specific layouts where the description block is seller-authored HTML, which changes the parsing strategy entirely&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Etsy&lt;/strong&gt; — listing copy with a distinct handmade/creative tone that also matters downstream for generation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Constraints matter more than extraction
&lt;/h2&gt;

&lt;p&gt;Reading the page is half the job. The other half is knowing what each marketplace will accept when you write the optimized copy back:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon truncates aggressively on mobile — character limits are hard product constraints, not suggestions&lt;/li&gt;
&lt;li&gt;Shopify storefronts often carry thin manufacturer text that needs brand-voice cleanup rather than keyword stuffing&lt;/li&gt;
&lt;li&gt;eBay titles have a hard length cap, and condition-forward descriptions convert better&lt;/li&gt;
&lt;li&gt;Etsy rewards handmade-tone phrasing with stronger search phrases — generic copy reads as dropshipping&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One more detail that surprised us: output language follows the detected page language. Cross-border catalogs mix English with other locales, and returning English suggestions for a Japanese listing page is worse than useless — it breaks the seller's workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  MV3 practicalities
&lt;/h2&gt;

&lt;p&gt;Two things worth knowing if you build this on Manifest V3:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The extraction needs to run in the page context (JSON-LD and DOM both), so your content script is the workhorse; the service worker only orchestrates.&lt;/li&gt;
&lt;li&gt;Keep the extension stateless about page data — read the live page on demand, send only what the user approves onward. It keeps you compatible with platform policies and keeps the data footprint small.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Review before publish
&lt;/h2&gt;

&lt;p&gt;We deliberately never auto-paste anything. Extracted data and generated suggestions land on a web dashboard with a before/after comparison, history, and optional share links — the seller copies and publishes only what they approve. Optimization is credit-based (text 1 credit, AI-enhanced image 2, keeping an original image is free; a typical product page uses about 5 credits, and new accounts start with 5 free credits).&lt;/p&gt;

&lt;p&gt;If you are building anything that reads product pages — price trackers, feed tools, listing optimizers — the pattern is the same: structured data first, scoped selectors second, platform constraints third, and a human review step before anything goes back to the marketplace.&lt;/p&gt;

&lt;p&gt;Try the extension: &lt;a href="https://aiproductpageoptimization.com" rel="noopener noreferrer"&gt;aiproductpageoptimization.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>extensions</category>
    </item>
    <item>
      <title>Rehearse the conversations you dread: what building an AI practice simulator taught me</title>
      <dc:creator>neo xia</dc:creator>
      <pubDate>Wed, 30 Sep 2026 17:46:17 +0000</pubDate>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d/rehearse-the-conversations-you-dread-what-building-an-ai-practice-simulator-taught-me-4i08</link>
      <guid>https://dev.to/neo_xia_3f4c019330af5fb9d/rehearse-the-conversations-you-dread-what-building-an-ai-practice-simulator-taught-me-4i08</guid>
      <description>&lt;p&gt;Most of us prepare for big conversations by... not preparing. We rehearse a few lines in our heads, maybe mutter them in the shower, then walk into the meeting and freeze.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://cosskill.com" rel="noopener noreferrer"&gt;cosskill&lt;/a&gt; to fix that. It's an AI communication simulator: you rehearse high-stakes conversations — salary negotiations, performance feedback, difficult personal talks — by actually talking with realistic AI personas before they happen.&lt;/p&gt;

&lt;h2&gt;
  
  
  What practicing looks like
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Pick a scenario: asking for a raise, delivering hard feedback, saying no to your boss, or an entirely personal one.&lt;/li&gt;
&lt;li&gt;The AI plays the other person. It pushes back, changes tone, and asks the questions you're afraid of.&lt;/li&gt;
&lt;li&gt;You talk it through, out loud, then look back at what worked and where you got stuck.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Three things I learned building and using it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Rehearsal beats research.&lt;/strong&gt; Reading ten articles about negotiating doesn't help much when the other person says "we'll see." Practicing your counter-move does. A simulator gives you the counter-move.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The second attempt is where the skill is.&lt;/strong&gt; The first run through a scenario is rough. By the third replay the rhythm changes — you stop defending and start steering. That's the whole point of practice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Saying it out loud matters.&lt;/strong&gt; Typing an argument is easy. Speaking it to an AI boss that interrupts and pushes back is a different skill — and the one you actually need in the room.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;cosskill is free to try: a few messages without an account, more after sign-in, all personas and scenarios included. Unlimited use is on Pro.&lt;/p&gt;

&lt;p&gt;If you have a hard conversation coming up, rehearse it first at &lt;a href="https://cosskill.com" rel="noopener noreferrer"&gt;cosskill.com&lt;/a&gt;. Two of our guides go deeper: &lt;a href="https://cosskill.com/guides/how-to-ask-for-a-raise" rel="noopener noreferrer"&gt;how to ask for a raise&lt;/a&gt; and &lt;a href="https://cosskill.com/guides/how-to-give-negative-feedback" rel="noopener noreferrer"&gt;how to give negative feedback&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>softskills</category>
    </item>
    <item>
      <title>How We Built an AI Listing Optimizer for Amazon, Shopify, eBay &amp; Etsy (Chrome Extension Architecture)</title>
      <dc:creator>neo xia</dc:creator>
      <pubDate>Tue, 22 Sep 2026 19:46:39 +0000</pubDate>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d/how-we-built-an-ai-listing-optimizer-for-amazon-shopify-ebay-etsy-chrome-extension-3dn1</link>
      <guid>https://dev.to/neo_xia_3f4c019330af5fb9d/how-we-built-an-ai-listing-optimizer-for-amazon-shopify-ebay-etsy-chrome-extension-3dn1</guid>
      <description>&lt;p&gt;Multi-channel sellers live in a painful loop: copy a listing into ChatGPT or Jasper, get decent text, then spend another 20 minutes reformatting it for Amazon's character limits, eBay's title rules, or Etsy's story style — per SKU, per channel. Amazon-only tools don't follow them to Shopify. Generic AI writers ignore marketplace rules.&lt;/p&gt;

&lt;p&gt;We built &lt;strong&gt;AI Product Page Optimization&lt;/strong&gt; to close that gap, and this post walks through how it works and the architecture behind it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core idea: run on the live page
&lt;/h2&gt;

&lt;p&gt;Instead of another dashboard with CSV imports, the tool is a Chrome extension that runs on the product page you already have open. It:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detects the marketplace from the URL (Amazon, Shopify — including custom domains, eBay, Etsy)&lt;/li&gt;
&lt;li&gt;Extracts title, bullets, body copy, and images using structured data (JSON-LD) plus platform-specific DOM selectors&lt;/li&gt;
&lt;li&gt;Generates rewrites that respect each channel's constraints&lt;/li&gt;
&lt;li&gt;Returns results to a web dashboard for before/after review before anything is published&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A typical run takes about 30–60 seconds per product page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Platform-aware rules, not generic copy
&lt;/h2&gt;

&lt;p&gt;The interesting part isn't the LLM — it's the constraints we bake in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon&lt;/strong&gt;: mobile truncation limits and Rufus-friendly phrasing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shopify&lt;/strong&gt;: brand-voice cleanup for thin manufacturer text&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;eBay&lt;/strong&gt;: title length limits and condition-forward descriptions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Etsy&lt;/strong&gt;: handmade tone with stronger search phrases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Output language follows the detected page language, which matters for cross-border catalogs that mix locales.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Extension&lt;/strong&gt;: Manifest V3, dynamic script injection for live-page extraction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web app&lt;/strong&gt;: Next.js, React, Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Cloudflare Workers, D1 (SQLite), R2 for image storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI&lt;/strong&gt;: LLMs for copy optimization; image models for enhancement or background changes (keeping the original image is free)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth &amp;amp; billing&lt;/strong&gt;: Google sign-in or email magic link; Creem for subscriptions and credit top-ups&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pricing model
&lt;/h2&gt;

&lt;p&gt;Text optimization costs 1 credit; successfully enhanced images cost 2. A typical product page uses about 5 credits. New users get 5 free trial credits with no credit card required; paid plans start at $19.9/month.&lt;/p&gt;

&lt;p&gt;If you sell on any of these marketplaces and want to try the workflow: &lt;a href="https://aiproductpageoptimization.com" rel="noopener noreferrer"&gt;https://aiproductpageoptimization.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback welcome — especially from anyone who maintains listings across multiple platforms.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ecommerce</category>
      <category>chromeextension</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I built an AI simulator for the conversations people avoid</title>
      <dc:creator>neo xia</dc:creator>
      <pubDate>Tue, 22 Sep 2026 17:43:48 +0000</pubDate>
      <link>https://dev.to/neo_xia_3f4c019330af5fb9d/i-built-an-ai-simulator-for-the-conversations-people-avoid-f6i</link>
      <guid>https://dev.to/neo_xia_3f4c019330af5fb9d/i-built-an-ai-simulator-for-the-conversations-people-avoid-f6i</guid>
      <description>&lt;p&gt;The hardest conversations in your life don't get retries. A salary negotiation, critical feedback to a teammate, a breakup, telling your boss you're quitting — you get one take, live, with a real person whose reaction you can't control.&lt;/p&gt;

&lt;p&gt;So most of us rehearse in the shower, say the wrong thing anyway, and then spend weeks replaying it.&lt;/p&gt;

&lt;p&gt;I kept running into this problem as a founder, so I built &lt;a href="https://cosskill.com" rel="noopener noreferrer"&gt;cosskill&lt;/a&gt;: an AI communication simulator where you rehearse high-stakes conversations with realistic AI personas &lt;em&gt;before&lt;/em&gt; they happen. This post is about what the product does, and what I learned building it — including the parts that surprised me.&lt;/p&gt;

&lt;h2&gt;
  
  
  What rehearsing actually looks like
&lt;/h2&gt;

&lt;p&gt;You pick a scenario (negotiate a raise, deliver negative feedback, end a relationship, quit gracefully), pick a persona, and talk. You can type or speak. The AI doesn't roleplay a pushover — it pushes back, interrupts, gets defensive, and responds like an actual person would.&lt;/p&gt;

&lt;p&gt;Then you get an evaluation of the conversation: what landed, what didn't, and how it moved. You can rewind to any point and try the moment again — including the hardest 30 seconds.&lt;/p&gt;

&lt;p&gt;There are 20 personas across operators, strategists, philosophers, and psychologists, plus a mission mode with live meters that track how the conversation is going.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing, plainly:&lt;/strong&gt; it's free to try — 3 messages without an account, 10 after signing in, with all personas and scenarios available. Pro is $12.90/month or $129/year for unlimited.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things building it taught me
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. A roleplay bot that agrees with you is useless
&lt;/h3&gt;

&lt;p&gt;Early versions were too polite. The "other side" folded too easily, and practicing against it trained avoidance, not skill. The single biggest product decision was making personas that genuinely push back. If your rehearsed opener survives a realistic counterparty, it'll survive a real one — or at least you'll know what the counter-move looks like.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The rewind is the feature
&lt;/h3&gt;

&lt;p&gt;Live conversations don't have undo. That's exactly why practice should. Being able to redo the worst moment of a conversation — immediately, with a persona that reacts differently each time — is where most of the learning happens. Repetition builds fluency; fluency is what keeps you articulate when you're actually nervous.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Feedback has to be concrete
&lt;/h3&gt;

&lt;p&gt;"You did great!" is worthless. The evaluation had to name specific moves: you opened with an apology that undercut your ask; you stated your number once and then kept talking; you de-escalated a personal attack without conceding the point. Concrete diagnosis is what you can act on in the retry.&lt;/p&gt;

&lt;h2&gt;
  
  
  A 10-minute rehearsal you can do today
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Pick the conversation you've been avoiding.&lt;/li&gt;
&lt;li&gt;Write down your ask in one sentence, with your number/decision stated once.&lt;/li&gt;
&lt;li&gt;Run the scenario with a persona that will push back.&lt;/li&gt;
&lt;li&gt;When it goes sideways, rewind and redo that moment — don't restart the whole thing.&lt;/li&gt;
&lt;li&gt;Read the evaluation, adjust one thing, run it once more.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want a deeper framework, we published free guides like &lt;a href="https://cosskill.com/guides/how-to-have-a-difficult-conversation" rel="noopener noreferrer"&gt;How to Have a Difficult Conversation&lt;/a&gt; and &lt;a href="https://cosskill.com/guides/how-to-negotiate-salary" rel="noopener noreferrer"&gt;How to Negotiate Your Salary&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;p&gt;An AI persona is not your manager, your partner, or your teammate. It can't predict how a specific person will react, and it shouldn't be a substitute for real advice on legal, medical, or financial decisions. What it &lt;em&gt;can&lt;/em&gt; do is take the edge of panic off — you walk into the real conversation having already heard the pushback, so you're responding instead of improvising.&lt;/p&gt;

&lt;p&gt;That's the whole bet: fluency comes from rehearsal, and hard conversations deserve a rehearsal.&lt;/p&gt;

&lt;p&gt;If you try it, I'd genuinely like to hear what the AI pushed back with — that's the part we iterate on fastest.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;cosskill: &lt;a href="https://cosskill.com" rel="noopener noreferrer"&gt;https://cosskill.com&lt;/a&gt; — free to try, no account needed for the first few messages.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>softskills</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
