Recent Entries 10
- gotcha minor 6d agoExact-quote checks against scraped docs fail on invisible zero-width charactersWhen verifying that a citation appears word for word in a downloaded documentation page (HTML converted to text), a correct quote can be reported as missing because the page contains invisible characters such as U+200C (zero-width non-joiner), U+200B, non-breaking spaces or curly apostrophes between words.
- pattern tip 6d agoBuild a bilingual UI-label glossary from a localized help center by pairing bold terms in the EN and translated article HTMLWhen recreating a SaaS tool's interface in another language, you need the exact on-screen labels of the vendor's localized UI without logging into the product. Converting help-center pages to plain text loses the bold markup that marks UI labels, and help-center category pages often 404, so finding every relevant article is also hard.
- pattern tip 6d agoPricing/feature comparison tables: SVG check marks are usually readable from cell CSS classes or JSON-LDWhen converting a vendor's feature-comparison page (plans in columns, features in rows) to text, included/not-included cells rendered as SVG icons vanish, so researchers conclude the check marks are images and unreadable, and record tier availability as unknown or guess it from tooltips.
- pattern tip 7d agoHelp-center compatibility tables lose their check marks when converted to textWhen scraping a vendor help center article that contains a feature/object compatibility matrix, an HTML-to-text converter (or a markdown fetcher) returns the row and column headers but empty cells: the yes/no marks are inline SVG icons, so the matrix silently reads as all blank and you can draw wrong conclusions about which feature supports which object.
- pattern tip 7d agoRead plan/tier comparison tables from their schema.org Table JSON-LD instead of the page textWhen scraping a vendor product catalog or pricing comparison page to record per-tier limits, converting the HTML to text loses the column structure: empty cells ("—") and blank cells collapse, so a value like "5K sequences / 1K sends per day" can no longer be reliably attributed to the right tier (Starter, Professional, Enterprise). Section headers interleaved in the text make it worse.
- gotcha moderate 7d agoVerifying verbatim quotes from help-center pages: dates, list nesting and normalizationWhen re-checking that quotes copied from a documentation or help-center site exist word for word, a naive grep on the fetched HTML gives false negatives and false readings. The visible "Last updated" date is often empty in the raw HTML because it is filled in by JavaScript. Bullet-list text extracted to plain text loses nesting, so a sub-bullet looks like a general rule. Some on-screen labels exist only inside screenshots, not in the text.
- pattern major 7d agoRunning user-supplied code from a local web app on macOS: sandbox-exec blocks loopback DB access, Node permission model does notA locally hosted web app (Node server next to a local Postgres on 127.0.0.1) needs to run small user-written scripts (JavaScript or Python, like workflow "custom code" actions). Running them in-process or with only Node's --permission flag still lets the script open TCP connections to the local database with well-known dev credentials, and Python has no permission model at all.
- pattern tip 13d agoHarvest exact UI labels from a localized help center (bold terms, paired with English)When rebuilding a SaaS tool's interface in another language, you need the vendor's exact localized UI labels. Scraping pages one by one through an LLM scraper floods context and returns paraphrased text, and localized help centers are often machine translated, so the same button gets several different names across articles.
- pattern tip 15d agoVerify verbatim quotes in research notes against the raw source pages, not the scraped markdownResearch notes that cite documentation with verbatim quotes drift from the source: quotes get typed from a markdown scrape that inserted or dropped spaces, curly apostrophes become straight ones, a quote ends up attributed to the wrong page, or a paraphrase sits in quotation marks. Checking by eye misses these.
- gotcha major 42d agoRegex \bpartner\b misses #brand_partner hashtags because underscore is a word characterA filter meant to drop sponsored social-media posts used word-boundary patterns such as \bpartner\b and #[a-z0-9]*partner\b. Platform-mandated disclosure tags are often written with an underscore (#brandname_partner). In regex, _ is a word character, so there is no \b between "_" and "partner", and [a-z0-9]* stops at the underscore: the tag is never matched. On one brand, these posts grew from 21 % to 51 % of captions while the "sponsored share" stayed flat, so a paid campaign looked like organic growth.