Blog
Notes on building modern products.
Practical writing on web apps, SaaS, AI agents and shipping real software — drawn from what I actually build.
Browse by topic: AI engineering · Stripe & SaaS billing · Mexico & LATAM payments · CFDI e-invoicing · All integrations
Jul 24, 2026 · AI NewsClaude Opus 5, explained: what Anthropic shipped, and why it's half the price of Fable 5
A builder's breakdown of Claude Opus 5: $5/$25 pricing, Frontier-Bench v0.1 at 43.3%, DeepSWE 68.8%, CursorBench within 0.5% of Fable 5 at half the cost, the /effort levels, and the new default in Claude Code.
Read →
Jul 24, 2026 · Claude Opus 5Opus 5 vs Fable 5: which Claude should you actually reach for?
Claude Opus 5 vs Fable 5, compared fairly: $5/$25 vs $10/$50, CursorBench within 0.5% at half the cost, OSWorld surpassed, the Mythos-tier ceiling, retention and reroute caveats, and when each model wins.
Read →
Jul 13, 2026 · SAT'Solicitud Aceptada' but nothing downloads: the SAT Descarga Masiva CodEstatus & EstadoSolicitud reference (5000, 5002, 5005)
Your SolicitaDescarga returns 'Solicitud Aceptada' (CodEstatus 5000) and you've waited 48 hours: that code is just the acknowledgment, not a signal the package is ready. To download it you must poll VerificaSolicitud with the IdSolicitud and read EstadoSolicitud (1 Aceptada, 2 EnProceso, 3 Terminada, 4 Error, 5 Rechazada, 6 Vencida) — only Terminada yields the IdsPaquetes. This ES-first engineer's reference decodes every CodEstatus: auth/validation (300 usuario no válido, 301 XML mal formado, 302/303 sello, 304/305 certificado) and request (5002 se agotaron las solicitudes de por vida, 5003 tope máximo, 5004 sin información, 5005 duplicada, 5008 máximo 2 descargas por paquete, 5011 límite por folio/día, 404 error no controlado), each with the concrete fix, the two traps devs hit most (5005 and 5002), a 30-second debugging checklist, and the phpcfdi isFinished()/isRejected()/isExpired() and python-satcfdi helpers. Python.
Read →
Jul 13, 2026 · SATSAT bulk-download in production: a pipeline to pull CFDI for many RFCs (accounting firm), in Python
An accounting firm doesn't bulk-download CFDI for one RFC on a happy-path loop — it pulls dozens of clients, issued and received, metadata and CFDI. This Spanish-first engineering guide models every SAT query as a durable job with a state machine: SolicitaDescarga once, IdSolicitud persisted, VerificaSolicitud with backoff, so you never hit 5005 duplicada or 5002 (lifetime request cap). Incremental sync with a per-RFC watermark, UUID dedup, the 72h window and 5008, and how to spread load across many RFCs. Python job schema and poller. Engineer, not accountant.
Read →
Jul 13, 2026 · SATHow to read a SAT bulk-download package: base64 to ZIP, the tilde-delimited Metadata TXT, and CFDI XML, in Python
Every SAT bulk-download tutorial ends when the package arrives — none tell you how to actually read it. The Descarga `Paquete` comes base64-encoded: decode it and unzip it as a ZIP (in memory). A Metadata request yields a `<UUID>-N.txt` file that is TILDE (`~`) delimited, with a header row and 12 columns (Uuid, RfcEmisor/Receptor, NombreEmisor/Receptor, RfcPac, FechaEmision, FechaCertificacionSat, Monto, EfectoComprobante I/E/N/P/T, Estatus Vigente/Cancelado, FechaCancelacion); a CFDI request yields the signed XML comprobantes instead. The trap (phpcfdi #23): NombreEmisor/NombreReceptor can contain the `~` itself, plus CR/LF and quotes, so a naive `line.split("~")` misaligns the columns — parse defensively with a max-split or a tolerant CSV reader (`delimiter="~"`) and normalize. Engineer's how-to in Python: use Metadata to scope, CFDI to validate.
Read →
Jul 13, 2026 · SATThe SAT portal shows your CFDI but your Descarga Masiva returns an empty package: diagnose it with NumeroCFDIs, in Python
The SAT portal shows CFDI for a date range, yet your Descarga Masiva web service returns an empty package (empty ZIP) or 'never finishes' — a documented, recurring issue (python-satcfdi #49: portal has records but VerificaSolicitud returns NumeroCFDIs 0, IdsPaquetes []). This ES-first engineer's guide splits the problem in 30 seconds with one value: NumeroCFDIs in VerificaSolicitud. If it's 0, your WS query is not the portal query — rfcSolicitante must match RfcEmisor (emitidas/issued) or RfcReceptor (recibidas/received); asking the wrong direction returns 0 silently, and date-only or TZ-shifted ranges exclude every record (send full-day T00:00:00/T23:59:59 in Mexico central time). If the count matches but the ZIP is empty, you saved the base64 string instead of base64.b64decode-ing the Paquete to bytes, and you must only call Descarga on EstadoSolicitud 3 (Terminada). Includes the 30-second test (replicate the exact portal query, request Metadata) and why a symptom shared across identical GitHub issues is the shared mistake, not a library bug. Python. Engineer, not contador.
Read →
Jul 6, 2026 · RAGHow to Build a RAG System with Claude (Voyage Embeddings + pgvector, 2026)
A hands-on, end-to-end tutorial: chunk your docs, embed them with Voyage, store the vectors in pgvector, retrieve the top-k for a question, and have Claude generate a grounded, cited answer. Real Python and SQL you can run.
Read →
Jul 6, 2026 · cuentas por pagarAutomate Accounts Payable in Mexico: Extract Supplier Invoices with Claude, Reconcile Against Received CFDI, and Monitor 69-B (Python, 2026)
A code-first AP pipeline for Mexico: use Claude Structured Outputs to extract typed fields from non-CFDI PDFs and tickets, then reconcile deterministically in Python against the received CFDI XML on UUID, RFC and total — plus a scheduled 69-B monitor.
Read →
Jul 6, 2026 · CFDIValidate a CFDI You Received Before You Deduct It: XSD, Sello, Vigencia and the 69-B Blacklist, in Python
Every CFDI tutorial teaches you to emit. None teach you to trust what lands in accounts payable. Before you deduct a received CFDI, four checks have to pass: the XML validates against the CFDI 4.0 XSD, the sello is a real RSA-SHA256 signature over the cadena original, the SAT says Vigente (not Cancelado), and the emisor RFC is not Definitivo on the 69-B blacklist. Engineer's how-to in Python, with the total-as-string gotcha that silently breaks vigencia checks and the AP gate that rejects or holds on any failure.
Read →
Jul 6, 2026 · ClipIntegrating Clip Payments in Node: Transparent vs Redirected Checkout & Card Token Charges (2026)
Engineer's guide to Clip's online payments API in Node: pick between Transparent, Redirected and Embedded checkout, run the Transparent Card Token to Payments flow, handle the webhook and reconcile — and why there's no sandbox so you test with real MXN$0.01 charges.
Read →
Jul 6, 2026 · ClipDoes Clip Have a Sandbox? Test Cards, Test Credentials, and the Production-Charge Playbook (2026)
Clip's docs contradict each other on sandbox. Here's the verified 2026 answer: which APIs get test credentials + test cards, which don't, and the safe MXN$1 production-charge + refund + idempotency ritual for the rest. Node examples.
Read →
Jul 6, 2026 · FirebaseMigrate Firebase Auth to Supabase Without Forcing a Password Reset
Export your Firebase Auth users and import them into Supabase auth.users keeping the original scrypt password hashes — so every user logs in with the same password, zero resets. Real scripts, the four hash params, UID preservation, and the federated/MFA edge cases.
Read →
Jul 6, 2026 · FirebaseMigrating from Firebase to Supabase: a real app, end to end (Firestore to Postgres, Auth, Storage, RLS)
The one end-to-end Firebase-to-Supabase walkthrough the fragmented docs never give: export Firestore with collections.js/firestore2json.js, model the NoSQL-to-relational shift, denormalize into Postgres tables, import with json2supabase.js, then migrate Auth, Storage, and rewrite Security Rules as RLS.
Read →
Jul 6, 2026 · prompt injectionIndirect Prompt Injection: How an Attacker Hijacks Your Tool-Calling Agent (and the Defense Layers That Actually Stop It, Python 2026)
Indirect prompt injection hides malicious instructions in content your agent reads — a web page, PDF, email, tool output — and hijacks its tools against you. Working attack demo + the defense layers, with Python code and the deterministic tool-call allowlist.
Read →
Jul 6, 2026 · Mercado PagoCharge In-Person with Mercado Pago Point from Your Own System: The Orders API (Node, 2026)
Drive a Mercado Pago Point terminal from your backend with the Orders API: put the terminal in PDV mode, POST /v1/orders with type point, terminal_id and a mandatory idempotency key, then trust the order.processed webhook. Node, code-complete, with the Payment Intents migration note.
Read →
Jul 6, 2026 · Mercado PagoMercado Pago Point webhooks not arriving? The 3 real causes and how to debug them (Node, 2026)
Mercado Pago Point webhooks not showing up? It is almost always one of three things: the terminal is not in PDV mode, your endpoint did not return 200/201 within 22 seconds, or your x-signature validation is wrong. How to debug each one in Node.
Read →
Jul 6, 2026 · meses sin interesesCharge Meses Sin Intereses by API: Stripe, Mercado Pago & Conekta (2026)
Enable meses sin intereses (MSI) by API across Stripe, Mercado Pago and Conekta in Node. The exact params, per-plan minimums, the "MSI don't show up" trap, and who eats the financing fee (you).
Read →
Jul 6, 2026 · RAGChunking Strategies for RAG (and Anthropic's Contextual Retrieval): The Engineer's Guide
How you split documents decides what RAG can ever find — no reranker downstream can recover a badly cut chunk. Start with recursive 512-token chunks and 10-20% overlap, then use Anthropic's Contextual Retrieval (prepend a Claude-generated 50-100-token context before you embed and BM25-index) to cut retrieval failures by up to 67%. With Python.
Read →
Jul 6, 2026 · RAGFix a RAG That Retrieves the Wrong Chunks: Hybrid Search + Reranking (with Before/After Metrics, 2026)
Your RAG retrieves similar-but-wrong chunks. Fix it with hybrid search (dense + BM25), fuse with RRF (k=60), rerank with Voyage rerank-2.5 to top-10 — and prove the lift with Recall@k, MRR, and NDCG in Python.
Read →
Jul 6, 2026 · SATBulk-download your CFDI from the SAT web service with your e.firma, in Python
Engineer's how-to for the SAT Descarga Masiva web service: bulk-pull your issued or received CFDI (or metadata) straight from the SAT with your e.firma (FIEL) — no PAC, no portal scraping. The 4-step SOAP state machine (Autenticacion, SolicitaDescarga, VerificaSolicitud, Descarga), the WS-Security signing (SHA1 digest, RSA-SHA1, BinarySecurityToken, Timestamp), the real v1.5 limits, and Python code. Spanish-first.
Read →
Jul 6, 2026 · SATWhy Your SAT Descarga Masiva Sits at "EnProceso" — and Why the 2,000-CFDI/Day Cap Is a Myth
Your SolicitaDescarga returns EnProceso because SAT processes it asynchronously — you poll VerificaSolicitud until Terminada, then download the packages within 72h. This ES-first, engineer's guide models the request as a state machine (EnProceso/Terminada/Rechazada/Vencida/Error), debunks the "2,000 CFDI/day cap" myth with the real v1.5 limits (200k records/request, 1M metadata, 72h availability, don't-download-an-XML-twice), and shows how to split big date ranges into windows with idempotent, resumable jobs. Python/pseudocode.
Read →
Jul 6, 2026 · prompt injectionSecure an AI Agent That Reads Email or WhatsApp: The Tool-Allowlist Defense (Python, 2026)
Your AI agent reads email or WhatsApp, so attackers send it instructions. Here's the operational defense: keep inbound text out of the instruction channel and gate every tool behind a deterministic allowlist in your code — with runnable Python.
Read →
Jul 6, 2026 · StripeHow to Let an AI Agent Charge with Stripe — Safely — Using the Agent Toolkit and a Restricted Key (rk_)
Giving an AI agent access to your Stripe account is a security decision, not a feature. Install the Stripe Agent Toolkit, gate it with a restricted key (rk_) scoped to exactly the actions it needs, wire it into your framework, and require human approval before money moves — so a prompt-injected agent stays boxed in. Code in TS and Python.
Read →
Jul 6, 2026 · StripeConnect Your Agent to the Hosted Stripe MCP Server (mcp.stripe.com): OAuth, the 14 Tools, and a Safe Setup
Point any MCP client at the hosted Stripe server at mcp.stripe.com, authenticate with OAuth or a restricted rk_ Bearer key, and let your agent create payment links, invoices, and refunds — without writing the tool code yourself. Configs, the tool list, and the safety posture that bounds the blast radius.
Read →
Jul 6, 2026 · StripeStripe Installments (MSI) Not Showing in Mexico? The Automatic Payment Methods Trap and the Fix
You enabled meses sin intereses in the Dashboard but the Payment Element shows nothing. The #1 cause is dynamic/Automatic Payment Methods (stripe-js #454). The fix: set payment_method_options[card][installments][enabled]=true on the PaymentIntent. Node.
Read →
Jul 6, 2026 · vector databaseVector Database for RAG: pgvector vs Pinecone vs Qdrant (2026)
Which vector database should you use for RAG? Decision rule first: already on Postgres → pgvector; want zero-ops managed → Pinecone; open-source self-hostable → Qdrant; quick prototype → Chroma. Trade-offs, not invented benchmarks.
Read →
Jul 6, 2026 · Vercel AI SDKStreaming Chat + Tool Calling with Claude and the Vercel AI SDK 7 (Next.js + TypeScript)
Production TypeScript guide to building a streaming chat with Claude and the Vercel AI SDK 7: install ai + @ai-sdk/anthropic + zod, stream streamText from a Next.js Route Handler to useChat, add tool calling with a Zod inputSchema and execute, and bound the loop with stopWhen. Covers the v7 ESM-only gotcha, the renamed stream helper, model-id caveats, and error/abort handling.
Read →
Jul 6, 2026 · Vercel AI SDKStructured Outputs with the Vercel AI SDK: generateObject + Zod + Claude (TypeScript)
Stop parsing free-text LLM output by hand. Define a Zod schema, call generateObject with anthropic('claude-sonnet-5'), and get back a typed object that matches the schema — with automatic repair on invalid output. Includes streamObject for progressive UI, enums, nested schemas, and real receipt/CFDI extraction. AI SDK 7, TypeScript.
Read →
Jul 1, 2026 · MCPHow to Build Your Own MCP Server in Python (FastMCP, 2026): Expose Your Tools to Any Client
Write one MCP server and any client — Claude Code, Claude for Desktop, the Agent SDK — can use your tools. A code-heavy Python tutorial: FastMCP, @mcp.tool(), resources, transports, connecting it, and security.
Read →
Jul 1, 2026 · Claude Agent SDKClaude Agent SDK: Build Production Agents with Claude Code as a Library (Python Tutorial)
A code-heavy, Spanish-first tutorial for the Claude Agent SDK: install it, write your first agent with query() and ClaudeAgentOptions, use the built-in tools, plug in your own MCP servers, and reach for hooks, subagents, permissions, and sessions — with a clear breakdown of when to use the SDK vs the raw Claude API, the Claude Code CLI, or Managed Agents.
Read →
Jul 1, 2026 · Claude CodeAdvanced Claude Code: Subagents, Hooks, and Slash Commands (2026 Power-User Guide)
Once Claude Code is installed, four features turn it from a helpful assistant into a configured teammate: CLAUDE.md and auto memory, subagents in their own context window, lifecycle hooks, and skills/slash commands. Code- and JSON-heavy engineer's guide with real .claude/agents/ and settings.json examples, plus permissions, plan mode, and MCP. Verified against code.claude.com.
Read →
Jul 1, 2026 · Claude CodeClaude Code in CI: headless with claude -p, --bare and GitHub Actions
Run Claude Code non-interactively in scripts and CI: add -p to any command and it reads stdin and prints a result. Auto-approve tools with --allowedTools and permission-rule syntax, get JSON with total_cost_usd and structured_output, lock down runs with --bare, and wire PR review into GitHub Actions and GitLab CI.
Read →
Jul 1, 2026 · Claude CodeClaude Code Tutorial: Install It, Log In, and Ship Your First Task
Learn what Claude Code is and where it runs, install it with one command, log in, and complete your first real task. A practical, copy-paste getting-started guide for developers.
Read →
Jul 1, 2026 · Claude CodeClaude Code vs Cursor AI (2026): Terminal Agent vs AI-Native IDE — An Honest Comparison
A sourced, engineer's comparison of Claude Code and Cursor AI: what each one is, the model story, real pricing, workflow fit, extensibility, and a decision rule. No universal winner — you can even run Claude Code inside Cursor.
Read →
Jul 1, 2026 · CursorWhat Is Cursor AI and How to Use It (2026): The AI-Native VS Code Fork, Tab to Agent
Cursor is an AI-native code editor — a VS Code fork by Anysphere where your extensions, themes, and keybindings carry over. This engineer's guide covers what it is, install from cursor.com, and how to actually use its four AI surfaces: Tab, Cmd+K inline edit, Cmd+L chat, and Cmd+I Agent — plus @ context, codebase indexing, Rules, model choice, and pricing.
Read →
Jul 1, 2026 · n8nSelf-host n8n in production: Docker Compose, PostgreSQL, HTTPS, and queue mode
A production self-hosting guide for n8n. Why the defaults (SQLite, no TLS, an ephemeral key) break under load, plus a copy-paste docker-compose.yml with PostgreSQL, the env vars that matter (N8N_ENCRYPTION_KEY, WEBHOOK_URL), a reverse proxy for HTTPS, queue mode with Redis workers, backups, updates, and a security checklist.
Read →
Jun 30, 2026 · BanxicoBanxico Circular 9/2026: An Engineer's Deadline-Prep Guide to Homologating Your SPEI/DiMo/CoDi Transfer UX by Dec 14, 2026
Banxico's Circular 9/2026 adds UX Guías that force a standardized mobile transfer experience for SPEI, DiMo, CoDi and QR by Dec 14, 2026. Engineer's audit-and-gap-analysis guide — plus where the binding spec actually lives.
Read →
Jun 30, 2026 · Claude Sonnet 5Build an Autonomous Agent with Claude Sonnet 5: Tool Use, the Agentic Loop, and Self-Verification
A hands-on, engineer's tutorial: build an autonomous tool-using agent on the Claude Messages API with claude-sonnet-5 — tools, the agentic loop, self-verification, cheap.
Read →
Jun 30, 2026 · CFDIHow to Stamp a CFDI de Nómina 4.0 (timbrado) in 2026
Engineer's how-to for stamping a CFDI de Nómina 4.0 with complemento 1.2 Revisión E via a PAC API in 2026. Real XML, the OtrosPagos subsidio fix, Rev E validations, and a pre-timbrado checklist.
Read →
Jun 30, 2026 · CFDICFDI Timbrado Outbox: Never Lose or Double-Stamp an Invoice When Your PAC Fails
Stripe charges, you stamp the CFDI at your PAC, then write the UUID to your DB. Crash between those two writes and you orphan a stamp you paid for — or a naive retry changes the Fecha and mints a duplicate UUID. Fix it with a frozen comprobante, a transactional outbox, and PAC idempotency. ES-first, code-heavy.
Read →
Jun 30, 2026 · Claude APIHow to Use the Claude API: First Call in cURL, Python, TS
A complete getting-started guide to the Claude API: get a key, make your first call in cURL, Python, and TypeScript, pick a model, stream, use tools, and control cost.
Read →
Jun 30, 2026 · Claude APIClaude Fable 5 Refusals: A Developer Fallback Guide
Claude Fable 5 redeploys July 1 with new safety classifiers that raise false positives in routine coding. On the raw API a block is a stop_reason of "refusal", not an auto-fallback. Copy-paste routing to Opus 4.8, detection, and monitoring.
Read →
Jun 30, 2026 · ClaudeClaude Sonnet 5: What's New, What It Costs, and How to Switch Your Agents
Claude Sonnet 5 launched June 30, 2026: the most agentic Sonnet, near-Opus at lower cost. The model id, intro pricing, specs, and how to switch your agents.
Read →
Jun 30, 2026 · Claude APIClaude Fable 5 Costs After July 7: API vs Subscription
Claude Fable 5's "included first week" is a subscription perk, not an API discount. On the Claude API, Fable 5 is metered at $10/$50 per MTok as always. A developer cost-planning guide: usage credits after July 7, capping spend, and defaulting to Opus 4.8.
Read →
Jun 30, 2026 · ClaudeClaude Fable 5 Free Week: Included Through July 7, Explained
Claude Fable 5 is included on Pro, Max, Team and select Enterprise plans for up to 50% of your weekly usage limits through July 7 — then it stays available via usage credits. It does not disappear on July 8. Billing explainer.
Read →
Jun 30, 2026 · ClaudeClaude Fable 5 Is Back July 1: What Actually Changed
Claude Fable 5 redeploys globally on July 1, 2026. A neutral, sourced explainer on the new safety classifiers, the Opus 4.8 fallback, the Glasswing severity framework, and what it means for users and developers.
Read →
Jun 30, 2026 · CFDIAutomate the Factura Global Inside the 24-Hour SAT Window: The Daily Job the PAC Blogs Skip
Sell to público en general? You aggregate sales into one CFDI global (regla 2.7.1.21 RMF 2026) and timbrar it within 24h of the close. Here's the daily job.
Read →
Jun 30, 2026 · LFPDPPPComply with Mexico's new LFPDPPP 2025 in your SaaS: hash-chained audit log, ARCO as a state machine, and verifiable deletion (an engineer's guide, with code)
The new LFPDPPP (DOF March 20, 2025) is enforced by the Secretaría de Anticorrupción, not INAI. Skip the law-firm summaries: build a hash-chained audit log, an ARCO state machine with the 20-business-day SLA, and verifiable deletion with mandatory bloqueo. Code-heavy (SQL/pseudo). And no, there's no data-localization mandate.
Read →
Jun 30, 2026 · paymentsMulti-Rail Payment Reconciliation in Mexico: Squaring Stripe, Mercado Pago, SPEI and OXXO Against One Ledger You Control
A Spanish-first engineer's how-to for reconciling Stripe, Mercado Pago, SPEI and OXXO against one ledger you own — so you can answer: did we get every peso?
Read →
Jun 30, 2026 · n8nSelf-Host n8n + Claude: Build Your First AI Agent
Self-host n8n with Docker and build your first AI automation powered by Claude: Anthropic credential, AI Agent + tool, system prompt, costs and the honest privacy truth.
Read →
Jun 30, 2026 · network tokensNetwork Tokens + Card Account Updater on Stripe (Mexico): stop reissued cards from silently killing recurring revenue
A Spanish-first operational runbook for Mexican SaaS: how Stripe network tokens (a PAN substitute that survives reissues) and Card Account Updater keep subscription cards current, how to turn them on with off_session, how to sync stored card metadata via the payment_method.updated webhook (with code), and how to measure the real uplift on YOUR data — no fake global percentages.
Read →
Jun 30, 2026 · Claude Sonnet 5Tune Claude Sonnet 5 for Cost and Quality: Effort, Prompt Caching and the Batch API
A Spanish-first playbook to get more quality per peso from Claude Sonnet 5: the effort parameter, prompt caching, the Batch API, and routing — with real Python.
Read →
Jun 30, 2026 · Claude Sonnet 5Take Your Claude Sonnet 5 Integration to Production: Streaming, Stop Reasons, Retries and Errors
The happy-path Claude Sonnet 5 call breaks in prod. Harden it with streaming, every stop_reason, typed-exception retries, idempotency and queues — real Python.
Read →
Jun 30, 2026 · stripeOut-of-Order Stripe Webhooks: Fixing the "Active but Incomplete" Subscription Bug
Stripe doesn't guarantee webhook order, so subscription.updated can land before created and freeze your DB at "incomplete." The robust fix: re-fetch, dedupe, guard on time.
Read →
Jun 30, 2026 · 3DS23DS2 in Mexico Is Not PSD2: An Engineer's Guide to 3-D Secure Without the EU SCA Rules
Wire 3DS2 into a Mexican checkout without copying EU PSD2/SCA rules. Why Mexico has no SCA mandate and no EEA exemptions, why you still use 3DS2 for the liability shift, and how to trigger it per-PaymentIntent on Stripe/Conekta/MP with pseudo-code. Engineering guidance, not legal advice.
Read →
Jun 30, 2026 · CFDIValidate an RFC Without the Constancia de Situación Fiscal
Engineer's tutorial to validate a customer's tax identity at signup without the Constancia de Situación Fiscal. Post SAT Comunicado 04/2026, demanding the CSF to invoice is a finable infracción. Validate RFC format + check digit locally, collect CP/régimen/uso via dropdowns, and verify via a PAC web service.
Read →
Jun 30, 2026 · contracargosWinning Chargebacks in Mexico: Build the Reason-to-Evidence Pipeline for Conekta and Mercado Pago
Build the engineer's pipeline to fight contracargos in Mexico: map each dispute reason to evidence, log it at checkout, and submit per rail (MP, Conekta) before the deadline.
Read →
Jun 27, 2026 · CFDIDon't Cancel the CFDI — Issue a Nota de Crédito: Automating the CFDI de Egreso for Stripe & Mercado Pago Refunds
When you refund a payment in Mexico you don't cancel the original CFDI — you issue a CFDI de Egreso (nota de crédito) related to it. A builder's guide to automating it.
Read →
Jun 27, 2026 · claude-apiCut Your Claude Agent's Token Bill with Prompt Caching: A Practical Tutorial (2026)
Step-by-step: stop re-paying full input price every turn. Where to put cache_control, the per-model minimums, read vs write economics, and how to verify a cache hit.
Read →
Jun 27, 2026 · CoDiHow to Accept CoDi (and the Truth About DiMo) in Your App: A Mexican Engineer's Integration Guide
The operational how-to bank pages skip: accept CoDi via an aggregator, verify the RSA-SHA512 signed webhook, reconcile by clave de rastreo, and the honest truth about DiMo.
Read →
Jun 27, 2026 · CFDIAutomate the Complemento de Pago (REP) from Stripe & Mercado Pago — Plus the RMF 2026 Cancellation Trap
When you invoice as PPD in Mexico the payment webhook is your fiscal trigger. Wire Stripe & Mercado Pago to stamp the REP — plus the RMF 2026 cancellation trap.
Read →
Jun 27, 2026 · SATMexico's 2026 Marketplace Tax Withholding: An Engineer's Guide to Retenciones (ISR + IVA) and the Retención CFDI
From Jan 1 2026, if your Mexican marketplace pays third-party sellers you may be the retenedor: withhold ISR 2.5% + IVA 8%, net it, issue the CFDI.
Read →
Jun 27, 2026 · PresidioRedact CURP, RFC and CLABE Before They Reach the LLM: A Presidio Tutorial for Mexican AI Agents
Step-by-step: redact CURP, RFC, CLABE and MX phones before your AI agent sends text to an LLM. Build custom Presidio recognizers and wire them as middleware.
Read →
Jun 26, 2026 · AI agentsThe Minimum Eval Harness for a Production AI Agent (Most Teams Skip This)
89% of teams watch their AI agents but only 37% grade them. Here is the minimum eval harness a solo builder can ship this week — Spanish-first.
Read →
Jun 26, 2026 · agentic commerceVisa Intelligent Commerce vs Mastercard Agent Pay vs Stripe ACP: Which Agent-Payment Layer Do You Actually Integrate?
Three agent-payment launches hit in June 2026. They're not competing rails — they're different layers. Here's what each is and the one primitive you actually integrate.
Read →
Jun 26, 2026 · AstroWhy This Bilingual Blog Runs on Astro 7: A First-Person Engineering Note
Why I run my EN/ES blog on Astro, and what Astro 7 (released Jun 22, 2026) changes: a Rust compiler, 15–61% faster builds, plus real migration gotchas.
Read →
Jun 26, 2026 · BanxicoBanxico's Nivel 2 Bis + the 4-Step Transfer Rule: What Your Checkout and Cobros App Must Change Before Dec 14, 2026
Banxico's mid-2026 rules add a no-RFC Nivel 2 Bis account for micro-merchants and cap mobile transfers at 4 steps. Engineer's guide to onboarding + checkout.
Read →
Jun 26, 2026 · authBetter Auth vs Clerk vs Supabase Auth for a Mexican SaaS (2026): The Honest Decision
A decisive 2026 auth comparison through a Mexican/LATAM-SaaS lens: data residency, cost at 100k MAU, multi-tenancy, and who owns breach response.
Read →
Jun 26, 2026 · Carta PorteCarta Porte 3.1: A Developer's Guide to Stamping the SAT Freight Complement (Mexico, 2026)
A vendor-neutral, code-first guide to issuing a Carta Porte 3.1 in Mexico: CFDI de Traslado vs Ingreso, the four complement blocks, PAC stamping, and 2026 gotchas.
Read →
Jun 26, 2026 · CFDIThe June 2026 CFDI Catalog Update (c_NumPedimentoAduana): Your Code Doesn't Change — But Your Pipeline Must
On June 19, 2026 the SAT added mandatory entries to the CFDI 4.0 catalog c_NumPedimentoAduana. The XSD didn't change — so your code doesn't, but your pipeline must.
Read →
Jun 26, 2026 · Claude APIClaude Structured Outputs in Production: Schema-Guaranteed JSON for CFDI Extraction and Webhook Routing
Claude Structured Outputs went GA Feb 4, 2026. The exact API (output_config.format), and two payments jobs it fixes: CFDI extraction and Stripe/Mercado Pago webhook routing.
Read →
Jun 26, 2026 · CFDICFDI Hydrocarbons Complement: Stamp Fuel Invoices Without SAT Rejecting Them (April 2026)
Engineer how-to for the SAT Complemento de Hidrocarburos y Petrolíferos, in force April 24, 2026: 5 attributes, L_CNE permit check, fines $17k-97k.
Read →
Jun 26, 2026 · conektaConekta Subscriptions: Recurring Payments Done Right — Plans, Webhooks & Dunning
Build recurring billing with Conekta end to end: create a Plan, subscribe a Customer with a card source, handle pause/resume/cancel, RSA-verify webhooks, and survive dunning.
Read →
Jun 26, 2026 · facturación electrónicaE-invoicing Across LATAM in 2026: The Developer's Map (MX, AR, BR, CO, CL)
A developer's orientation map to e-invoicing across Mexico, Argentina, Brazil, Colombia and Chile: authority, format, clearance model and the 2026 changes you must ship before.
Read →
Jun 26, 2026 · MCPMigrate Your MCP Server to the 2026-07-28 Stateless Spec (Before It Ships)
MCP's 2026-07-28 spec goes stateless: the initialize handshake is gone, capabilities ride in _meta per request. The migration plan, the breaking changes, the timeline.
Read →
Jun 26, 2026 · pix-automaticoWhat Brazil's Pix Automático Teaches Mexican Recurring-Billing Builders (2026)
Brazil's Pix Automático (live June 2025) is LATAM's cleanest recurring-payment mandate. What MX builders can copy — and why it's "learn from Brazil," not "use Pix here."
Read →
Jun 26, 2026 · MCPHow to Secure an MCP Server: A Builder's Hardening Checklist (2026 CVEs Included)
A narrow, operational checklist to harden the MCP servers you connect to your agents — real 2026 CVEs, the 5 attack families, and what to lock down before any tool touches payments.
Read →
Jun 26, 2026 · StripeStripe Bought Metronome: Usage-Based Billing Goes Native (and What It Does to Your CFDI)
Stripe completed its Metronome acquisition Jan 14 2026. Usage-based billing is now native in the Stripe Dashboard. Here is what shipped — and the CFDI reconciliation nobody mentions.
Read →
Jun 26, 2026 · StripeStripe Shared Payment Tokens: How a Seller Accepts an Agent-Made Payment (2026)
Stripe expanded Shared Payment Tokens in 2026 so AI agents pay on a customer's behalf without seeing the card. Here's what you, the seller, actually build.
Read →
Jun 26, 2026 · stablecoinsStripe Stablecoins Are Coming to LATAM: What Mexican SaaS Builders Should Prepare in 2026
Stripe pushed stablecoin infra at Sessions 2026 with Privy and Bridge, and LATAM is next. The engineer's guide to what a Mexican freelancer or SaaS can actually build today.
Read →
Jun 24, 2026 · CFDIAuto-Invoice CFDI 4.0 the Moment a Payment Lands: A Developer's Guide to Stripe & Mercado Pago in Mexico (2026)
A vendor-neutral, code-first guide to auto-stamping a CFDI 4.0 from a verified Stripe or Mercado Pago webhook in Mexico: PAC, CSD, RFC, PUE vs PPD.
Read →
Jun 24, 2026 · ConektaConekta Integration in Node: Cards, OXXO & SPEI With Webhooks That Don't Lie (2026)
End-to-end Conekta guide for Node: Orders & charges for cards, OXXO and SPEI, plus async confirmation via webhooks with RSA signature verification and the raw-body gotcha.
Read →
Jun 24, 2026 · GPT-5.5GPT-5.5 vs Gemini 3.1 Pro: Which Should You Actually Build On?
A builder's decision guide: GPT-5.5 wins agentic coding and real long-context recall; Gemini 3.1 Pro is ~2.5x cheaper plus stronger reasoning and multimodal.
Read →
Jun 24, 2026 · GPT-5.5GPT-5.5 vs Gemini 3.1 Pro: an honest head-to-head for builders
A fair, builder-first comparison of GPT-5.5 and Gemini 3.1 Pro: coding, reasoning, multimodal, pricing, and the 1M context-recall gotcha. Route by task.
Read →
Jun 24, 2026 · mercado-pagoHow to Integrate Mercado Pago Into Your App (2026): Checkout Pro, Bricks, and Webhooks That Don't Lie
Integrate Mercado Pago the right way in 2026: pick Checkout Pro, Bricks or the Checkout API, wire the preference-to-webhook flow, support OXXO/SPEI/MSI, and verify before granting.
Read →
Jun 24, 2026 · Mercado PagoMercado Pago Split Payments: Build a LATAM Marketplace with Seller Payouts (the Stripe Connect Most People Can't Use)
Stripe Connect can't pay out sellers in much of LATAM. Here's the end-to-end production guide to Mercado Pago Split Payments: OAuth, tokens, application_fee, fee traps.
Read →
Jun 24, 2026 · Mercado PagoMercado Pago Subscriptions Done Right: Preapproval, Webhooks & Failed Payments (2026)
End-to-end Mercado Pago recurring billing: plan vs /preapproval, card-token subscriptions, the two webhook topics, and the failed-payment + cancel-sync handling the docs skip.
Read →
Jun 24, 2026 · saas metricsSaaS Billing Metrics That Actually Run the Business: MRR, Churn, LTV & NRR (and How to Pull Them From Stripe) (2026)
The SaaS metrics that actually run a business: MRR and its components, logo vs revenue churn, LTV and NRR — plus how to pull them from Stripe without fooling yourself.
Read →
Jun 24, 2026 · entitlementsSaaS Entitlements & Usage Limits: Turn a Stripe Plan Into Enforced Features and Quotas (2026)
A code-first, vendor-neutral guide to the entitlements layer: feature gates with Stripe Entitlements, usage quotas with meters and atomic counters, plus the middleware.
Read →
Jun 24, 2026 · stripe connectMarketplace Payments with Stripe Connect: Account Types, Charges & Payouts (2026)
Build a marketplace that pays out sellers with Stripe Connect: pick Standard/Express/Custom, onboard sellers (KYC), choose direct vs destination charges, and take your cut.
Read →
Jun 24, 2026 · stripe connectStripe Connect in Production: Onboarding, KYC, Payouts & Reserves (2026)
Run Stripe Connect for real: onboard sellers with Account Links, clear KYC and capabilities, configure payout schedules and instant payouts—and survive reserves.
Read →
Jun 24, 2026 · StripeStripe Disputes, Chargebacks & Fraud: Fight Them and Prevent Them with Radar (2026)
How Stripe disputes and chargebacks really work in 2026: the lifecycle, the fee math, fighting with evidence off charge.dispute.created, and preventing with Radar and 3DS.
Read →
Jun 24, 2026 · StripeFailed Payments and Dunning: Recover the Subscription Revenue You're Quietly Losing (Stripe, 2026)
A full Stripe playbook for involuntary churn: Smart Retries, dunning emails, Card Account Updater, the self-serve portal, and the past_due state machine. With code.
Read →
Jun 24, 2026 · stripeUsage-Based Billing for AI SaaS with Stripe: Meters, Tokens, and Your Margins
Flat pricing quietly kills AI margins. Here's how to wire usage-based billing with Stripe Billing Meters: meter events, per-unit/tiered prices, idempotency and margin guardrails.
Read →
Jun 24, 2026 · stripeStripe vs Paddle vs Lemon Squeezy: Who Handles Your SaaS Sales Tax? (2026)
Stripe vs Paddle vs Lemon Squeezy in 2026: who is the Merchant of Record and files your sales tax/VAT? Real fees, the effective-cost gap, and a pick-by-stage verdict.
Read →
Jun 24, 2026 · stripeStripe Webhook Signature Verification Failed? Every Cause and Fix (Node, Next.js, Python, 2026)
No signatures found matching the expected signature for payload? The cross-framework fix for Express, Next.js, Flask and FastAPI — plus idempotency and replay protection.
Read →
Jun 24, 2026 · WhatsAppBuild a Task-Specific WhatsApp AI Agent (Cloud API + Claude + RAG, 2026)
Meta banned general-purpose chatbots on WhatsApp. Here's how to build the kind it allows: a task-specific, RAG-grounded business agent with Cloud API and Claude.
Read →
Jun 23, 2026 · AI agentsHow to Build an AI Agent with Python: A 2026 Hands-On Guide
Build a working AI agent in Python in ~40 lines, then make it production-safe. The honest 2026 guide: the agent loop, frameworks, real costs, and when not to.
Read →
Jun 23, 2026 · AI agentsAI Agents vs Automation (n8n, Zapier, Make): When to Use Which in 2026
A practitioner's honest guide to AI agents vs automation in 2026: when to use n8n, Zapier, or Make, when to add one AI step, and when you truly need an agent.
Read →
Jun 23, 2026 · AI chatbotsHow to Add an AI Chatbot to Your Website That Doesn't Hallucinate (2026)
A practitioner's guide to adding a grounded AI chatbot that answers only from your real content, cites sources, says "I don't know," and escalates to a human.
Read →
Jun 23, 2026 · AI costHow Much Does It Cost to Add AI to Your App? (2026 Guide)
An honest 2026 breakdown of what it costs to add AI to your app: one-time build bands, ongoing per-request run cost, real model prices, and a worked example.
Read →
Jun 23, 2026 · Claude Fable 5Claude Fable 5 Is Already Here: Where It Runs, the Model ID, and What It Really Costs
People search "when is Claude Fable 5 available" — but it shipped June 9, 2026. Here's where it runs, the model ID, $10/$50 pricing, the free-window cutoff, and a cost playbook.
Read →
Jun 23, 2026 · AI NewsClaude Fable 5, explained: what Anthropic actually shipped (and the caveats)
A builder's breakdown of Claude Fable 5: the new Mythos-class tier, SWE-Bench Pro at 80.3%, $10/$50 pricing, 1M context, and the Opus 4.8 safety fallback.
Read →
Jun 23, 2026 · Claude Fable 5Claude Fable 5: The Best Model Anthropic Told Us Not to Build
Fable 5 is the strongest public Claude yet — 80.3% SWE-Bench Pro, a 50M-line Stripe migration in a day. It's also Anthropic shipping its most powerful model days after warning the industry to slow down, with mandatory retention and a fallback that bills Fable prices for Opus answers.
Read →
Jun 23, 2026 · Claude TagClaude Tag, explained: the AI teammate you @-tag into Slack
Anthropic launched Claude Tag today, June 23 2026: an AI teammate you @-tag into Slack. How it works, the admin controls, what it replaces, and the honest caveats.
Read →
Jun 23, 2026 · Claude TagHow to Set Up Claude Tag for Your Team (and Keep It on a Leash)
Claude Tag launched today (June 23, 2026) in beta for Enterprise/Team on Slack. A practical admin guide: add @Claude, scope its access, set token caps, and migrate.
Read →
Jun 23, 2026 · Claude TagClaude Tag is a great teammate that never forgets your Slack. That's the problem.
Claude Tag, Anthropic's new Slack AI teammate, launched today. It's genuinely useful — and it persistently learns your whole company from your Slack, with no clear retention story. Read this before you enable it.
Read →
Jun 23, 2026 · GPT-5.5Codex (GPT-5.5) vs Claude Fable 5 for coding: which is actually worth paying for?
Fable 5 wins SWE-Bench Pro 80.3% vs 58.6%, but GPT-5.5 is half the price and token-efficient. A builder's verdict on cost-per-solved-task, routing, and the fallback gotcha.
Read →
Jun 23, 2026 · GPT-5.5Codex (GPT-5.5) vs Claude Fable 5: A Builder's Honest Head-to-Head
GPT-5.5 in Codex vs Claude Fable 5, compared fairly: SWE-Bench Pro 80.3% vs 58.6%, pricing $10/$50 vs $5/$30, token efficiency, caveats, and when each wins.
Read →
Jun 23, 2026 · MCPHow to Connect an AI Agent to Your Data and Tools: MCP + APIs (2026)
Give an AI agent your real data and the power to act: RAG for knowledge, tool calling for live data and actions, and MCP — the open standard any agent can use.
Read →
Jun 23, 2026 · llm-productionPutting an LLM in Production: Cost, Latency, and Guardrails (2026 Guide)
The demo worked, then production broke. A practitioner's deep guide to running an LLM in production in 2026: cost levers, latency, guardrails, evals, and ops.
Read →
Jun 23, 2026 · paymentsPayment Gateways in Mexico 2026: Stripe vs Mercado Pago vs Conekta
A practitioner's 2026 guide to choosing a payment gateway in Mexico: MSI, OXXO, SPEI, fees with IVA, payout timing, and which provider fits your business.
Read →
Jun 23, 2026 · RAGRAG vs Fine-Tuning: Which Does Your Business Need? (2026)
RAG gives a model current facts; fine-tuning shapes behavior. A practical 2026 guide to deciding between RAG, fine-tuning, both, or just a better prompt.
Read →
Jun 23, 2026 · shopifyShopify ERP Integration: Sync Inventory & Orders (2026 Guide)
Sync Shopify with your ERP in 2026: source of truth per entity, the six data flows, the webhook + reconciliation pattern, idempotency, SKU mapping, and connector vs custom.
Read →
Jun 23, 2026 · stripeHow to Integrate Stripe Into Your SaaS in 2026 (Subscriptions Done Right)
Integrate Stripe subscriptions the right way: webhook-as-source-of-truth, the full lifecycle (trials, dunning, proration), real 2026 fees, and the bugs to avoid.
Read →
Jun 23, 2026 · webhooksWebhooks vs Polling vs API: How to Choose an Integration Pattern (2026)
Webhooks vs polling vs API in 2026: real trade-offs in latency, reliability and cost, the gotchas of each, a decision framework, and the hybrid pattern that ships.
Read →
Jun 22, 2026 · SaaSHow Much Does It Cost to Build a SaaS MVP? (2026)
What a SaaS MVP really costs in 2026: $15K–$85K by complexity, what drives the number, and freelancer vs agency vs nearshore — from a dev who's shipped fintech SaaS.
Read →
Jun 20, 2026 · ShopifyHow Much Does a Custom Shopify Store Cost? (2026)
What a custom Shopify store really costs in 2026: theme work $3K–$9K, custom build $7.5K–$30K, headless $10K+ — plus plan, app, and migration costs, from a dev who's shipped 100+ stores.
Read →
Jun 19, 2026 · app developmentHiring an App Developer in Mexico: Rates & Process
What it costs to hire an app developer in Mexico in 2026 — real USD/MXN rates, the nearshore advantage for US founders, and how to vet one. From a Puebla-based dev.
Read →
Jun 17, 2026 · AI agentsWhat Is an AI Agent? A Builder's Plain-English Guide
A clear, jargon-free definition of an AI agent — agent vs chatbot vs LLM call vs workflow, how the loop/tools/memory work, real ROI use cases, and when you actually need one.
Read →
Jun 15, 2026 · React NativeReact Native vs Flutter in 2026: Which Should You Choose?
An honest React Native vs Flutter comparison for 2026: performance, hiring, ecosystem, web code-sharing, and when each one wins — from a dev who ships RN.
Read →
Jun 12, 2026 · hiring developersHow to Hire an App Developer in 2026 (Cost & Process)
How to hire an app developer in 2026: real rates by model (freelancer, agency, in-house, nearshore), the hiring process, red flags, and how to write a brief — from a dev.
Read →