Tóm tắt cho người bận rộn
- Vấn đề: dữ liệu từ LLM, log Python, Excel export và vendor webhook không hỏng theo cách sang trọng. Nó hỏng theo cách bắt bạn ngồi sửa từng dấu phẩy.
- Giải pháp: Yellorn — Data Doctor sửa JSON/XML/YAML/CSV bẩn, mock webhook trên Cloudflare Edge, Request Sender lưu template, convert format trong một editor duy nhất.
- Điểm cần nhớ: 29 auto-fix pass ghi nhận minh bạch, webhook publish cần đăng nhập, URL webhook là public capability URL, trang inspection là owner-only.
- Verdict: không thay Postman, không thay backend, không thay kỷ luật dữ liệu. Nhưng thay được 7 tab formatter có quảng cáo casino. Thế cũng là văn minh rồi.
Thuế Vệ Sinh
Sáng thứ Tư. Claude trả về JSON đẹp, trừ việc bọc trong ba dấu backtick và một dòng “Here’s the JSON you requested:”. Tôi copy, paste vào terminal, jq chửi. Đúng rồi, markdown fence.
Xoá fence xong, parse lại. Lần này jq chửi vì trailing comma. À, LLM viết JSON như viết thơ — dấu phẩy cuối là phép lịch sự. Tốn 4 phút. Bằng thời gian pha cà phê, nhưng không ai trả lương cho việc pha cà phê.
Cùng sáng đó: đồng nghiệp gửi CSV qua Slack. Excel trên Windows xuất ra BOM, delimiter là dấu chấm phẩy, quote thì cong cong kiểu typographer. PM cần tôi xác nhận “nó khớp với payload webhook của vendor” — vendor mà server local tôi chưa chạy, còn ngrok thì vừa đổi URL cách đây 4 phút.
Không ai ghi những thứ này vào sprint. Không ai estimate “sửa JSON lởm của Claude: 0.5 story point”. Nhưng nó vẫn thu đều, bằng sự tập trung. Chỉ đủ vụn vặt để phá flow và làm bạn nghi ngờ lựa chọn nghề nghiệp trong 12 giây.
Yellorn trả lại phần thuế đó. Không bằng tuyên ngôn. Bằng một editor biết dọn rác.
Data Doctor
JSON.parse nên khó tính. Nó được sinh ra để máy nói chuyện với máy, không phải để thương lượng với một đoạn text vừa đi qua Slack, Claude, Excel rồi Notion.
Yellorn parse nghiêm túc trước. Nếu fail thì chạy best-effort recovery — 29 auto-fix pass, document rõ ràng. Vài cái rất đời:
- LLM bọc JSON trong markdown fence kèm lời giải thích dài dòng → gỡ fence, gỡ luôn comment.
- Backend log Python dict với
True,False,None,Decimal('3.14'),Timestamp(...)→ normalize. - Excel xuất CSV có BOM, smart quote cong cong, delimiter dấu chấm phẩy → sửa hết.
- XML có ampersand chưa escape, tag mở chưa đóng, YAML có tab thay space → cũng xử.
Tổng cộng 15 pass cho JSON, 5 cho XML, 6 cho YAML, 3 cho CSV. Đủ để giải quyết 90% rác từ clipboard hàng ngày.
Điều quan trọng: Yellorn không âm thầm “tưởng tượng” dữ liệu đúng. Mỗi lần sửa được ghi vào status bar — gỡ fence, đổi quote, auto-close bracket, bạn biết hết. Nếu dữ liệu sai về nghiệp vụ, nó vẫn sai. Công cụ không nên có ảo tưởng cứu rỗi schema.
Mock Webhook
Bạn cần test callback từ Stripe. Hoặc GitHub. Hoặc một con service tên “temporary-integration-v2-final” mà đã tồn tại 14 tháng.
Kịch bản quen: dựng server local, mở tunnel, copy URL vào dashboard, bấm test. Callback không tới. Kiểm tra: tunnel chết. Restart. Copy URL mới. Paste. Test lại. Dashboard vẫn giữ URL cũ vì bạn quên bấm Save. Bạn nhìn màn hình và tự hỏi sao nhân loại đưa người lên Mặt Trăng mà không debug nổi một cái webhook.
Yellorn giải quyết đơn giản: paste payload vào editor, bấm Publish. Kết quả là một HTTPS endpoint:
https://yellorn.com/api/webhook/<slug>
Chạy trên Cloudflare Edge. Publish cần đăng nhập — KV không phải giếng ước nguyện miễn phí, dù Internet thường cư xử như vậy.
URL là public capability URL: ai có slug thì gọi được. Đó là mục đích của webhook. Nhưng trang inspection ở /webhook/<slug> là owner-only — người ngoài bắn request vào được, không được xem log. Nghe hiển nhiên, nhưng lịch sử bảo mật web cho thấy hiển nhiên là tính năng cao cấp.
Portal cho xem method, query params, headers, body, response status. Đổi status code trả về được (200, 401, 429, 500 — simulate failure path). Bản Free: 5 webhook active, payload 512 KB, auto-expire 24 giờ. Pro/Team tăng giới hạn.
Đời dev có nhiều thứ nhục. Dựng nguyên một Express app chỉ để return res.json(payload) là một trong số đó. Yellorn thay thế cái nghi lễ đó bằng một nút Publish.
Không phải production server. Sân bay dã chiến, nhưng có HTTPS và có đèn hạ cánh.
Request Sender
Webhook giải quyết chiều inbound: “vendor bắn callback vào đâu?”. Nhưng debug integration còn chiều ngược: “mình bắn request ra đâu, header gì, auth gì, và lần trước response ra sao?”.
Yellorn có Request Sender ngay trong browser. GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS. Query params, headers, auth Bearer/Basic/custom, body JSON/text/form-urlencoded. Bấm send.
Mở Postman chỉ để nhìn một cục JSON response thì giống lấy Kubernetes để chạy cron job cá nhân. Request Sender không cố thay Postman — nó thay cái tab Postman mà bạn mở rồi không dùng hết 5% tính năng.
Điểm hay là template. Request hay dùng lưu lại theo account: name, method, URL, headers, auth, body. Mỗi lần dispatch ghi execution history — status, timing, response headers, body truncate ở 1 MB. Khi request fail, bạn có thứ để nhìn lại thay vì dựa vào trí nhớ — một hệ thống storage nổi tiếng không ACID, không backup, và có garbage collection rất tích cực sau 2 ly bia.
Hai nửa nối với nhau: từ portal webhook mở URL đó trong Request Sender để bắn thử. Sender có SSRF protection, block private hostname, strip forbidden headers, timeout 15 giây, loop guard bằng X-Yellorn-Internal-Dispatch. Thiết kế để tiện cho debug mà không biến thành “dùng browser của tôi để scan mạng nội bộ” — một business model tệ nếu bạn thích ngủ ngon.
Convert Không Cần Hành Xác
Yellorn hiểu JSON, XML, YAML, CSV và Python literal. Auto-detection chạy trên text change: paste CSV thì biết CSV, paste XML thì biết XML, trừ khi bạn pin format thủ công. Máy vẫn nghe lời người — một chi tiết đáng quý trong năm 2026.
Format là chuyện chính trị. Backend sống trong Python dict. Frontend sống trong JSON. Ops gửi YAML. Business gửi CSV. Một service cũ phun XML vì nó được viết từ thời người ta còn tin SOAP là tương lai. Không ai sai. Người bị kẹp giữa là bạn.
Conversion đi qua canonical parsed value rồi serialize sang format đích. Python emitter sinh datetime.fromisoformat(...) cho ISO date string thay vì để bạn tự nhớ tháng đứng trước hay ngày đứng trước. Các conversion có nguy cơ mất thông tin gắn nhãn lossy — ép mọi thứ vào CSV mà không cảnh báo thì “tiện” theo nghĩa “tiện tay làm hỏng dữ liệu”.
Tool tốt đôi khi chỉ là tool làm giảm số lần bạn phải alt-tab.
Nhìn Dữ Liệu Mà Não Còn Chịu Được
JSON thô nested 6 tầng nhìn trong editor là trải nghiệm tâm linh.
Tree view cho phép đào qua nested objects mà vẫn giữ một chút tự trọng. Table view hợp CSV hoặc dữ liệu dạng rows, đặc biệt file Excel export dùng delimiter lạ. Graph view hiện cấu trúc parent-child thay vì chơi trò đếm ngoặc bằng mắt — một môn thể thao mà Olympic chưa công nhận.
Search hỗ trợ text và JMESPath. Gõ items[?status=='failed'].id để lọc ra đúng phần cần, thay vì search “failed” rồi tự nhặt từng node. JMESPath lazy-load khi dùng, nên trang không kéo thêm runtime chỉ để phục vụ tương lai có thể không xảy ra.
Mấy Thứ Nhỏ Cứu Mạng
Compare Mode: chọn hai tab, mở Monaco diff editor read-only. JSON được sort key trước khi diff — đổi thứ tự key không làm bạn tưởng API vừa có biến động lịch sử. Dùng so response staging/prod, fixture cũ/mới, hoặc hai payload mà ai đó bảo “hình như giống nhau”.
Cloud Backup: đăng nhập, bấm backup, tabs đẩy lên cloud. Sang máy khác restore. Không đồng bộ API key. Có những thứ không nên đi du lịch.
Format ladder: Smart (cứu hộ mạnh tay), Simple (pretty-print có parse), Safe (chỉnh layout, không reparse), Compress (minify). Mỗi cái một mục đích. Gộp hết vào một nút “Format” rồi cầu nguyện cũng được — đó là cách ta có incident retrospective.
Nó Không Phải Cái Gì
Yellorn không thay Postman cho API flow phức tạp. Request Sender là gửi nhanh và lưu template, không phải collaboration suite. Cũng không thay integration test hay việc thống nhất schema giữa team. Nếu tổ chức dùng “final_final_v3.csv” làm contract thì phần mềm chỉ giúp được đến đó.
Nhưng trong những phút rất thật của nghề — sửa JSON bẩn, xem payload webhook, bắn lại request, đổi CSV sang JSON, kiểm tra path bằng JMESPath — Yellorn làm đúng việc đó. Không mê cung quảng cáo. Không splash screen. Không “sign up to continue viewing”.
Bản Free đủ cho debug cá nhân: 5 webhook active, 24 giờ, live request log, Request Sender, Data Doctor, converter. Pro/Team qua Polar nếu cần payload lớn hơn, nhiều webhook hơn, hoặc workflow cho team. Không cần “contact sales”. Chưa đến mức ấy.
Thử tại yellorn.com. Vì sáng thứ Tư tới sẽ lại có một cục JSON bẩn. Bạn biết điều đó. Tôi biết điều đó. Claude cũng biết, nhưng nó vẫn sẽ bọc fence.
Không phải vì nó thông minh. Vì nó bớt ngu.
