{"id":267,"date":"2026-06-30T12:37:32","date_gmt":"2026-06-30T04:37:32","guid":{"rendered":"https:\/\/ph.listeningo.cn\/index.php\/2026\/06\/30\/2026-06-29\/"},"modified":"2026-06-30T12:37:32","modified_gmt":"2026-06-30T04:37:32","slug":"2026-06-29","status":"publish","type":"post","link":"https:\/\/ph.listeningo.cn\/index.php\/2026\/06\/30\/2026-06-29\/","title":{"rendered":"PH\u70ed\u699c | 2026-06-29"},"content":{"rendered":"<p><!DOCTYPE html><br \/>\n<html lang=\"zh-CN\"><br \/>\n<head><br \/>\n    <meta charset=\"UTF-8\"><br \/>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><br \/>\n    <title>Product Hunt \u6bcf\u65e5\u70ed\u699c 2026-06-29<\/title><\/p>\n<style>\n        \/* --- \u5168\u5c40\u91cd\u7f6e\u4e0e\u5b57\u4f53 --- *\/\n        :root {\n            --ph-orange: #FF6154;\n            --text-main: #21293C;\n            --text-secondary: #4B587C;\n            --bg-ai: #F7F7F9;\n            --border-color: #E6E6E6;\n        }<\/p>\n<p>        body {\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif;\n            color: var(--text-main);\n            background-color: #ffffff;\n            line-height: 1.6;\n            margin: 0;\n            padding: 20px;\n        }<\/p>\n<p>        .container {\n            max-width: 800px;\n            margin: 0 auto;\n        }<\/p>\n<p>        \/* --- \u5361\u7247\u6837\u5f0f --- *\/\n        .app-card {\n            border-bottom: 1px solid var(--border-color);\n            padding-bottom: 40px;\n            margin-bottom: 40px;\n        }<\/p>\n<p>        \/* --- 1. \u5934\u90e8\u533a\u57df --- *\/\n        .app-header {\n            display: flex;\n            align-items: flex-start;\n            gap: 16px;\n            margin-bottom: 20px;\n        }<\/p>\n<p>        .rank {\n            font-size: 24px;\n            font-weight: 300;\n            color: #999;\n            min-width: 30px;\n            padding-top: 4px;\n        }<\/p>\n<p>        .title-group {\n            flex: 1;\n        }<\/p>\n<p>        .app-title {\n            font-size: 24px;\n            font-weight: 800;\n            margin: 0 0 4px 0;\n            color: var(--text-main);\n            text-decoration: none;\n            display: inline-block;\n        }<\/p>\n<p>        .app-title:hover {\n            color: var(--ph-orange);\n            text-decoration: underline;\n        }<\/p>\n<p>        .vote-btn {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            border: 1px solid var(--border-color);\n            border-radius: 8px;\n            padding: 8px 12px;\n            background: #fff;\n            min-width: 60px;\n            box-shadow: 0 1px 2px rgba(0,0,0,0.05);\n        }<\/p>\n<p>        .vote-arrow {\n            color: var(--ph-orange);\n            font-size: 14px;\n            margin-bottom: -2px;\n        }<\/p>\n<p>        .vote-count {\n            font-weight: 600;\n            font-size: 14px;\n        }<\/p>\n<p>        \/* --- 2. \u5347\u7ea7\u7248\u5a92\u4f53\u753b\u5eca (\u5173\u952e\u4fee\u6539) --- *\/\n        .media-gallery {\n            display: flex;\n            gap: 16px;\n            overflow-x: auto; \/* \u5141\u8bb8\u6a2a\u5411\u6eda\u52a8 *\/\n            padding-bottom: 16px; \/* \u7559\u51fa\u6eda\u52a8\u7a7a\u95f4 *\/\n            scroll-snap-type: x mandatory; \/* \u6eda\u52a8\u5438\u9644\u6548\u679c *\/\n            -webkit-overflow-scrolling: touch; \/* iOS \u5e73\u6ed1\u6eda\u52a8 *\/\n            margin-bottom: 20px;<\/p>\n<p>            \/* \u9690\u85cf\u9ed8\u8ba4\u6eda\u52a8\u6761\u4f46\u4fdd\u7559\u529f\u80fd (Firefox) *\/\n            scrollbar-width: thin;\n            scrollbar-color: #ddd transparent;\n        }<\/p>\n<p>        \/* Webkit \u6eda\u52a8\u6761\u6837\u5f0f\u4f18\u5316 *\/\n        .media-gallery::-webkit-scrollbar {\n            height: 6px;\n        }\n        .media-gallery::-webkit-scrollbar-track {\n            background: transparent;\n        }\n        .media-gallery::-webkit-scrollbar-thumb {\n            background-color: #eee;\n            border-radius: 10px;\n        }<\/p>\n<p>        .media-item-wrapper {\n            flex: 0 0 auto; \/* \u9632\u6b62\u88ab\u538b\u7f29 *\/\n            width: 80%;     \/* \u79fb\u52a8\u7aef\u9ed8\u8ba4\u9732\u51fa\u4e00\u70b9\u4e0b\u4e00\u5f20\uff0c\u63d0\u793a\u53ef\u6ed1\u52a8 *\/\n            max-width: 500px; \/* \u684c\u9762\u7aef\u6700\u5927\u5bbd\u5ea6 *\/\n            aspect-ratio: 16\/9; \/* \u7edf\u4e00\u6bd4\u4f8b *\/<\/p>\n<p>            position: relative;\n            border-radius: 12px;\n            overflow: hidden;\n            border: 1px solid rgba(0,0,0,0.08);\n            background-color: #f5f5f5;\n            scroll-snap-align: center; \/* \u6eda\u52a8\u505c\u6b62\u65f6\u5c45\u4e2d *\/\n        }<\/p>\n<p>        .media-content {\n            width: 100%;\n            height: 100%;\n            object-fit: cover; \/* \u586b\u5145\u5bb9\u5668 *\/\n            display: block;\n            cursor: pointer;\n        }<\/p>\n<p>        \/* \u89c6\u9891\u6807\u7b7e\u7279\u6b8a\u5904\u7406 *\/\n        video.media-content {\n            background-color: #000;\n            cursor: pointer;\n        }<\/p>\n<p>        \/* \u5982\u679c\u53ea\u67091\u4e2a\u5a92\u4f53\uff0c\u4e0d\u8981\u6eda\u52a8\uff0c\u4e14\u5bbd\u5ea6\u81ea\u9002\u5e94 *\/\n        .media-gallery.single-item .media-item-wrapper {\n            width: 100%;\n            max-width: 100%;\n        }<\/p>\n<p>        \/* --- 3. \u63cf\u8ff0\u4e0e\u6807\u7b7e --- *\/\n        .one-liner {\n            font-size: 18px;\n            color: var(--text-secondary);\n            margin-bottom: 12px;\n            font-weight: 500;\n        }<\/p>\n<p>        .tags-container {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 8px;\n            margin-bottom: 24px;\n        }<\/p>\n<p>        .tag {\n            font-size: 12px;\n            color: var(--text-secondary);\n            background-color: #F2F2F2;\n            padding: 4px 10px;\n            border-radius: 20px;\n            font-weight: 600;\n            text-transform: uppercase;\n        }<\/p>\n<p>        \/* --- 4. AI \u6458\u8981\u533a --- *\/\n        .ai-section {\n            background-color: var(--bg-ai);\n            border-radius: 12px;\n            padding: 20px;\n            margin-bottom: 20px;\n            border-left: 4px solid var(--ph-orange);\n        }<\/p>\n<p>        .ai-title {\n            font-size: 14px;\n            font-weight: 700;\n            color: var(--text-main);\n            margin: 0 0 12px 0;\n            display: flex;\n            align-items: center;\n            gap: 6px;\n        }<\/p>\n<p>        .ai-content {\n            font-size: 15px;\n            color: #333;\n            margin-bottom: 0;\n            line-height: 1.7;\n        }<\/p>\n<p>        \/* --- 5. \u8bc4\u8bba\u533a --- *\/\n        .reviews-section {\n            margin-top: 10px;\n        }<\/p>\n<p>        .review-item {\n            display: flex;\n            gap: 10px;\n            margin-bottom: 12px;\n            font-size: 14px;\n        }<\/p>\n<p>        .review-avatar {\n            font-size: 18px;\n            margin-top: 2px;\n            min-width: 24px;\n        }<\/p>\n<p>        .review-bubble {\n            background: #fff;\n            border: 1px solid var(--border-color);\n            padding: 8px 12px;\n            border-radius: 0 12px 12px 12px;\n            color: var(--text-secondary);\n            line-height: 1.5;\n        }<\/p>\n<p>        .review-author {\n            font-weight: 700;\n            color: var(--text-main);\n            margin-right: 4px;\n            font-style: normal;\n        }<\/p>\n<p>        .comments-section {\n            margin-top: 30px;\n            border-top: 1px solid var(--border-color);\n            padding-top: 20px;\n        }<\/p>\n<p>        .comments-toggle {\n            background-color: #f8f9fa;\n            border: 1px solid var(--border-color);\n            border-radius: 8px;\n            padding: 12px 20px;\n            cursor: pointer;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            width: 100%;\n            font-size: 14px;\n            font-weight: 600;\n            color: var(--text-main);\n            transition: all 0.3s ease;\n        }<\/p>\n<p>        .comments-toggle:hover {\n            background-color: #e9ecef;\n        }<\/p>\n<p>        .comments-toggle .toggle-arrow {\n            font-size: 18px;\n            transition: transform 0.3s ease;\n        }<\/p>\n<p>        .comments-toggle.open .toggle-arrow {\n            transform: rotate(180deg);\n        }<\/p>\n<p>        .comments-container {\n            max-height: 0;\n            overflow: hidden;\n            transition: max-height 0.5s ease;\n            margin-top: 15px;\n        }<\/p>\n<p>        .comments-container.open {\n            max-height: 800px;\n            overflow: auto;\n        }<\/p>\n<p>        .comment-item {\n            background-color: #fff;\n            border: 1px solid var(--border-color);\n            border-radius: 8px;\n            padding: 16px;\n            margin-bottom: 12px;\n            font-size: 14px;\n        }<\/p>\n<p>        .comment-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: flex-start;\n            margin-bottom: 8px;\n        }<\/p>\n<p>        .comment-author {\n            font-weight: 600;\n            color: var(--text-main);\n            margin-right: 8px;\n        }<\/p>\n<p>        .comment-content {\n            color: var(--text-secondary);\n            line-height: 1.5;\n            margin-bottom: 10px;\n            word-break: break-word;\n            word-wrap: break-word;\n            overflow-wrap: anywhere;\n            white-space: normal;\n        }<\/p>\n<p>        .comment-content p {\n            margin: 0;\n            word-break: break-word;\n            word-wrap: break-word;\n            overflow-wrap: anywhere;\n            white-space: normal;\n        }<\/p>\n<p>        \/* \u4f18\u5316\u8868\u60c5\u7b26\u53f7\u663e\u793a *\/\n       .emoji {\n            display: inline;\n            max-width: 15px;\n            overflow-wrap: normal;\n        }<\/p>\n<p>        .comment-actions {\n            display: flex;\n            align-items: center;\n            gap: 16px;\n            font-size: 12px;\n            color: var(--text-secondary);\n        }<\/p>\n<p>        .comment-vote {\n            display: flex;\n            align-items: center;\n            gap: 4px;\n            cursor: pointer;\n        }<\/p>\n<p>        .comment-replies {\n            margin-top: 12px;\n            margin-left: 20px;\n            padding-left: 12px;\n            border-left: 2px solid var(--border-color);\n        }<\/p>\n<p>        .reply-item {\n            background-color: #f8f9fa;\n            border: 1px solid var(--border-color);\n            border-radius: 6px;\n            padding: 12px;\n            margin-bottom: 8px;\n            font-size: 13px;\n        }<\/p>\n<p>        .reply-content {\n            color: var(--text-secondary);\n            line-height: 1.4;\n            margin-bottom: 6px;\n        }<\/p>\n<p>        \/* --- \u54cd\u5e94\u5f0f\u5fae\u8c03 --- *\/\n        @media (min-width: 600px) {\n            .media-item-wrapper {\n                width: 60%; \/* \u684c\u9762\u7aef\u7a0d\u5fae\u7a84\u4e00\u70b9\uff0c\u5c55\u793a\u66f4\u591a\u5f20 *\/\n                scroll-snap-align: start; \/* \u684c\u9762\u7aef\u9760\u5de6\u5bf9\u9f50 *\/\n            }\n        }<\/p>\n<p>        \/* \u79fb\u52a8\u8bbe\u5907\u54cd\u5e94\u5f0f\u4f18\u5316 *\/\n        @media (max-width: 599px) {\n            \/* \u6a21\u6001\u6846\u4f18\u5316 *\/\n            .modal-content {\n                max-width: 95%;\n                max-height: 85vh;\n                margin: 10vh auto;\n            }<\/p>\n<p>            .close {\n                top: 10px;\n                right: 20px;\n                font-size: 30px;\n                \/* \u589e\u5927\u70b9\u51fb\u533a\u57df *\/\n                padding: 15px;\n            }<\/p>\n<p>            \/* \u89c6\u9891\u64ad\u653e\u56fe\u6807\u4f18\u5316 *\/\n            .play-icon {\n                width: 60px;\n                height: 60px;\n                font-size: 18px;\n            }<\/p>\n<p>            \/* \u786e\u4fdd\u5a92\u4f53\u5185\u5bb9\u5728\u5c0f\u5c4f\u5e55\u4e0a\u6b63\u786e\u663e\u793a *\/\n            .media-content {\n                object-fit: cover;\n            }\n        }<\/p>\n<p>        \/* --- \u56fe\u7247\u653e\u5927\u6a21\u6001\u6846\u6837\u5f0f --- *\/\n        .modal {\n            display: none;\n            position: fixed;\n            z-index: 1000;\n            left: 0;\n            top: 0;\n            width: 100%;\n            height: 100%;\n            background-color: rgba(0, 0, 0, 0.9);\n            overflow: auto;\n            transition: opacity 0.3s ease;\n        }<\/p>\n<p>        .modal-content {\n            display: block;\n            max-width: 90%;\n            max-height: 90vh;\n            margin: 5vh auto;\n            object-fit: contain;\n            animation: zoom 0.3s;\n        }<\/p>\n<p>        @keyframes zoom {\n            from {transform: scale(0.8); opacity: 0;}\n            to {transform: scale(1); opacity: 1;}\n        }<\/p>\n<p>        .close {\n            position: absolute;\n            top: 20px;\n            right: 35px;\n            color: #fff;\n            font-size: 40px;\n            font-weight: bold;\n            transition: 0.3s;\n            cursor: pointer;\n            \/* \u6dfb\u52a0\u89e6\u63a7\u4f18\u5316 *\/\n            padding: 10px;\n            line-height: 1;\n            user-select: none;\n            -webkit-user-select: none;\n        }<\/p>\n<p>        .close:hover,\n        .close:focus {\n            color: #bbb;\n            text-decoration: none;\n        }<\/p>\n<p>        \/* \u89c6\u9891\u70b9\u51fb\u63d0\u793a\u6837\u5f0f *\/\n        .video-overlay {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            background-color: rgba(0, 0, 0, 0.2);\n            opacity: 0;\n            transition: opacity 0.3s ease;\n            \/* \u89e6\u63a7\u4f18\u5316 *\/\n            touch-action: manipulation;\n            cursor: pointer;\n        }<\/p>\n<p>        .media-item-wrapper:hover .video-overlay {\n            opacity: 1;\n        }<\/p>\n<p>        \/* \u4e3a\u89e6\u6478\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u6548\u679c *\/\n        .media-item-wrapper:active .video-overlay {\n            opacity: 0.8;\n        }<\/p>\n<p>        .play-icon {\n            width: 80px;\n            height: 80px;\n            background-color: rgba(255, 255, 255, 0.9);\n            border-radius: 50%;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            color: var(--ph-orange);\n            font-size: 24px;\n            font-weight: bold;\n            \/* \u89e6\u63a7\u4f18\u5316 *\/\n            user-select: none;\n            -webkit-user-select: none;\n        }<\/p>\n<p>        \/* --- \u54cd\u5e94\u5f0f\u5fae\u8c03 --- *\/\n        @media (min-width: 600px) {\n            .media-item-wrapper {\n                width: 60%; \/* \u684c\u9762\u7aef\u7a0d\u5fae\u7a84\u4e00\u70b9\uff0c\u5c55\u793a\u66f4\u591a\u5f20 *\/\n                scroll-snap-align: start; \/* \u684c\u9762\u7aef\u9760\u5de6\u5bf9\u9f50 *\/\n            }\n        }<\/p>\n<p>        \/* \u79fb\u52a8\u8bbe\u5907\u54cd\u5e94\u5f0f\u4f18\u5316 *\/\n        @media (max-width: 599px) {\n            \/* \u6a21\u6001\u6846\u4f18\u5316 *\/\n            .modal-content {\n                max-width: 95%;\n                max-height: 85vh;\n                margin: 10vh auto;\n            }<\/p>\n<p>            .close {\n                top: 10px;\n                right: 20px;\n                font-size: 30px;\n                \/* \u589e\u5927\u70b9\u51fb\u533a\u57df *\/\n                padding: 15px;\n            }<\/p>\n<p>            \/* \u89c6\u9891\u64ad\u653e\u56fe\u6807\u4f18\u5316 *\/\n            .play-icon {\n                width: 60px;\n                height: 60px;\n                font-size: 18px;\n            }<\/p>\n<p>            \/* \u786e\u4fdd\u5a92\u4f53\u5185\u5bb9\u5728\u5c0f\u5c4f\u5e55\u4e0a\u6b63\u786e\u663e\u793a *\/\n            .media-content {\n                object-fit: cover;\n            }\n        }\n    <\/style>\n<p><\/head><br \/>\n<body><\/p>\n<div class=\"container\">\n<h1 style=\"text-align:center; margin-bottom:40px; font-weight:900;\">PH\u70ed\u699c | 2026-06-29<\/h1>\n<p>    <!-- \u5c55\u793aapp\u5361\u7247 --><\/p>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#1<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/T7AK4DSW7OYURG\" class=\"app-title\">Spira for Product Hunt Makers<\/a><\/p>\n<div class=\"one-liner\">Social media growth agents that build your momentum <\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">400<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Spira\u662f\u4e00\u6b3e\u9488\u5bf9Product Hunt\u521b\u4f5c\u8005\u7684AI\u793e\u4ea4\u589e\u957f\u4ee3\u7406\u5de5\u5177\uff0c\u80fd\u81ea\u52a8\u5206\u6790\u54c1\u724cDNA\u5e76\u751f\u6210\u521b\u59cb\u4eba\u5206\u8eab\u4e0eAI\u7f51\u7ea2\uff0c\u5728TikTok\u3001X\u7b49\u5e73\u53f0\u81ea\u4e3b\u89c4\u5212\u3001\u521b\u4f5c\u548c\u53d1\u5e03\u5185\u5bb9\uff0c\u89e3\u51b3\u4ea7\u54c1\u53d1\u5e03\u540e\u793e\u4ea4\u5a92\u4f53\u70ed\u5ea6\u201c\u65ad\u5d16\u5f0f\u4e0b\u8dcc\u201d\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/6271d9ea-c4bd-4eb0-bb58-a86bade63f17.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/80b91414-91bc-4f70-a6b7-ff2817a04ea7.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e7c89849-bd35-4e75-a0c6-84df6c8328b5.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/fad9df19-8906-4142-91a3-c59932276182.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a47b0307-dfaa-47bc-b47c-1aab2363ab08.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/374a35f2-821f-474e-994b-0cc7b07ea5a7.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/4be3850b-532c-434d-9738-1e6687f606ba.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/d5825827-5320-4172-8452-28ea790defdf.jpeg?auto=format\" data-video-url=\"https:\/\/www.youtube.com\/watch?v=AsYBi4Vg-Qs\"><source src=\"https:\/\/www.youtube.com\/watch?v=AsYBi4Vg-Qs\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Social Media<\/span><br \/>\n            <span class=\"tag\">Marketing<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u793e\u4ea4\u5a92\u4f53\u4ee3\u7406<\/span><br \/>\n            <span class=\"tag\">\u54c1\u724c\u5185\u5bb9\u81ea\u52a8\u751f\u6210<\/span><br \/>\n            <span class=\"tag\">Product Hunt\u53d1\u5e03\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u521b\u59cb\u4eba\u5206\u8eab<\/span><br \/>\n            <span class=\"tag\">AI\u7f51\u7ea2<\/span><br \/>\n            <span class=\"tag\">\u793e\u5a92\u589e\u957f\u81ea\u52a8\u5316<\/span><br \/>\n            <span class=\"tag\">\u54c1\u724cDNA\u5206\u6790<\/span><br \/>\n            <span class=\"tag\">\u8d8b\u52bf\u68c0\u6d4b<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u201c\u53d1\u5e03\u540e\u6301\u7eed\u8fd0\u8425\u201d\u7684\u75db\u70b9\uff0c\u4f46\u5bf9AI\u80fd\u5426\u628a\u63e1\u54c1\u724c\u201c\u54c1\u5473\u201d\u548c\u5224\u65ad\u529b\u5b58\u7591\uff0c\u62c5\u5fc3\u5185\u5bb9\u98ce\u683c\u8d8b\u540c\u4e0e\u54c1\u724c\u5b89\u5168\uff1b\u4ef7\u683c\u4f53\u7cfb\uff08\u4ee3\u5e01\u5236\uff09\u4e0d\u591f\u6e05\u6670\uff1b\u53e6\u6709\u7528\u6237\u8be2\u95ee\u4ea7\u54c1\u5b9a\u4f4d\u3001\u4e0e\u7ade\u54c1\u5dee\u5f02\u53ca\u54c1\u724c\u8f6c\u578b\u7684\u9002\u914d\u6027\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Spira\u5207\u4e2d\u4e86\u4e00\u4e2a\u771f\u5b9e\u4e14\u5c16\u9510\u7684\u75db\u70b9\uff1a\u7edd\u5927\u591a\u6570Product Hunt\u4ea7\u54c1\u5728\u201c\u7206\u7ea248\u5c0f\u65f6\u201d\u540e\u8fc5\u901f\u5760\u5165\u51b7\u5bab\u3002\u521b\u59cb\u4eba\u4e0d\u662f\u6ca1\u6709\u597d\u4ea7\u54c1\uff0c\u800c\u662f\u6ca1\u6709\u7cbe\u529b\u6301\u7eed\u8f93\u51fa\u793e\u4ea4\u5185\u5bb9\u3002\u4ece\u8fd9\u4e2a\u89d2\u5ea6\u770b\uff0cSpira\u7684\u201c\u54c1\u724cDNA\u514b\u9686+AI\u5206\u8eab\u8fd0\u8425\u201d\u662f\u4e2a\u806a\u660e\u7684\u4ea7\u54c1\u8bbe\u8ba1\u2014\u2014\u5b83\u6ca1\u6709\u8bd5\u56fe\u66ff\u4ee3\u8425\u9500\u7b56\u7565\uff0c\u800c\u662f\u7528\u201cAI\u5185\u9601\u201d\u7684\u5f62\u5f0f\u586b\u4e0a\u4e86\u521b\u59cb\u4eba\u201c\u53d1\u5e03\u5373\u5931\u58f0\u201d\u7684\u771f\u7a7a\u671f\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u5fc5\u987b\u6307\u51fa\uff0c\u4ea7\u54c1\u76ee\u524d\u201c\u96f7\u58f0\u5927\uff0c\u96e8\u70b9\u5c0f\u201d\u7684\u98ce\u9669\u6781\u9ad8\u3002\u8bc4\u8bba\u4e2d\u53cd\u590d\u63d0\u53ca\u7684\u54c1\u724c\u201c\u54c1\u5473\u201d\u3001\u8d8b\u52bf\u5224\u65ad\u65f6\u673a\u3001\u4ee5\u53ca\u5185\u5bb9\u662f\u5426\u6ca6\u4e3a\u5343\u7bc7\u4e00\u5f8b\u7684AI\u5957\u8bdd\uff0c\u662f\u51b3\u5b9a\u5176\u751f\u6b7b\u7684\u6838\u5fc3\u58c1\u5792\u3002CEO\u7684\u56de\u590d\u867d\u5c55\u793a\u4e86\u201c\u4ee3\u7406\u4f1a\u8bf7\u793a\u201d\u7684\u4eba\u7c7b\u95ed\u73af\uff0c\u4f46\u8fd9\u672c\u8d28\u4e0a\u662f\u7528\u201c\u4eba\u5de5\u5ba1\u6838\u201d\u7ed9\u201c\u81ea\u52a8\u5316\u5931\u63a7\u201d\u515c\u5e95\uff0c\u800c\u975e\u771f\u6b63\u7684\u667a\u80fd\u51b3\u7b56\u3002\u4ee3\u5e01\u5b9a\u4ef7\u4f53\u7cfb\u7684\u6df7\u4e71\u66f4\u66b4\u9732\u4e86\u5e95\u5c42\u903b\u8f91\uff1a\u5185\u5bb9\u751f\u6210\u6210\u672c\u5c1a\u672a\u88ab\u6a21\u578b\u6548\u7387\u89e3\u51b3\uff0c\u5546\u4e1a\u5316\u8def\u5f84\u6a21\u7cca\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4e00\u53e5\u8bdd\uff1a\u65b9\u5411\u5bf9\uff0c\u75db\u70b9\u51c6\uff0c\u4f46\u5fc3\u667a\u56fe\u666f\u4e0e\u7ade\u54c1\u7684\u5dee\u5f02\u4ec5\u505c\u7559\u5728\u201c\u82b1\u54e8\u7684\u5305\u88c5\u201d\u4e0a\u3002\u5982\u679cSpira\u4e0d\u80fd\u5728\u4e24\u5468\u5185\u663e\u8457\u51cf\u5c11\u7528\u6237\u7684\u4eba\u5de5\u5ba1\u6838\u9891\u6b21\uff0c\u5e76\u751f\u6210\u53ef\u91cf\u5316\u3001\u53ef\u8ffd\u8e2a\u7684\u8f6c\u5316\u6570\u636e\uff0c\u5b83\u5f88\u5feb\u5c31\u4f1a\u6ca6\u4e3a\u53c8\u4e00\u4e2a\u201c\u6f02\u4eae\u4f46\u65e0\u7528\u201d\u7684AI\u73a9\u5177\u3002\u771f\u6b63\u7684\u62a4\u57ce\u6cb3\u4e0d\u662f\u6545\u4e8b\u8bb2\u5f97\u591a\u597d\uff0c\u800c\u662f\u80fd\u5426\u8ba9\u521b\u59cb\u4eba\u5728\u7b2c\u4e8c\u5468\u65f6\uff0c\u771f\u6b63\u653e\u5fc3\u5730\u628a\u8d26\u53f7\u5bc6\u7801\u4ea4\u7ed9\u5b83\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Spira for Product Hunt Makers<\/span>\n                <\/div>\n<div class=\"comment-content\">Drop your Product Hunt link and unlock your brand agent, persona clones of your founding team and AI Influencers that autonomously plan, create, and publish across TikTok, IG, X and Linkedin. It&#8217;s your biggest launch day, don&#8217;t let it slide away!<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi Product Hunt Makers \ud83d\udc4b Back here again, I&#8217;m Long, CEO of Spira AI.<\/p>\n<\/p>\n<p>We spent the last month studying 40+ launches that hit top 10, and one pattern stood out: almost all of them flatlined within two weeks. The products were great, but the teams went quiet after launch and put their heads back down to build. So I built the thing I wish they&#8217;d had.<\/p>\n<\/p>\n<p><strong>Spira AI is for Product Hunt makers who&#8217;d rather ship features than post content.<\/strong> We&#8217;re running our own channels on it this week, and we&#8217;ve onboarded a few other AI startups to grow in front of the audience they were built for.<\/p>\n<\/p>\n<p>Here&#8217;s how it works:<\/p>\n<ol>\n<li>\n<p>Drop your Product Hunt or website link. Spira AI reads it and builds your Brand DNA: your voice, design system, audience, USPs, and generate your content strategy.<\/p>\n<\/li>\n<li>\n<p>You get a suite of agents tuned to that brand, posts already queued for your approval. One runs your brand account, one clones your founder voice, and a team of AI influencers amplifies the launch.<\/p>\n<\/li>\n<li>\n<p>From there they run on their own. Spira AI pulls live trends, reads your performance data, and adjusts as it goes. \ud83d\ude80<\/p>\n<\/li>\n<\/ol>\n<p>I built this after watching too many founder friends burn time and money figuring out what to post. (And honestly, so my GTM intern can stop doing it manually and go work on something better \ud83d\ude04)<\/p>\n<\/p>\n<p>One thing we&#8217;re testing: when Spira AI reads your link and builds your Brand DNA, how close does it need to feel to you before you&#8217;d trust it to post on its own? Tell me where it nails your voice and where it misses! Try it for free today.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>20<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@llma\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@llma<\/a>&nbsp;Congratulations on the launch Long!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>5<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">hello dear friend<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@llma\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@llma<\/a>&nbsp;nice one! looking forward to try it!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The &#8220;growth agents&#8221; framing covers a lot of ground, so I&#8217;m curious what these agents actually do when they hit the hard parts of social growth: figuring out which content to double down on versus which formats are dying on a specific account, or knowing when to engage with a thread versus when jumping in looks spammy. Most tools in this space are good at scheduling and surface-level analytics but hand the strategic judgment back to you. Does Spira make actual recommendations on those calls, or is the &#8220;agent&#8221; layer mostly automation on top of posting and engagement tasks you&#8217;ve already defined?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@fberrez1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@fberrez1<\/a>&nbsp;Both, honestly. The agents make the real strategic calls, what to double down on and which formats to kill per account, not just run tasks you defined. But they don&#8217;t decide everything blind: when something is high stakes or it&#8217;s unsure, it checks in with its manager instead of acting. Think AI coding in auto mode, it still stops at the important parts to confirm. The &#8220;jump into this thread or not&#8221; kind of judgment is exactly what it brings back to you. You set how much autonomy it gets, happy to walk you through it. <\/p>\n<\/p>\n<p>We want to enable you to communicate and collaborate with our agents as you would with real people: like you need to trust the most talented people on your team and empower them to exercise their own judgment. At the same time, your employees should be able to involve you at critical moments to make decisions or help them perform even better.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>3<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the trend detection piece is what makes or breaks this. creating content is the easy part now, knowing what to create and when is still the hard problem. most social media tools automate the posting but the content strategy is still entirely manual. if the agent can genuinely catch trends before they peak and not just react after they&#8217;ve already saturated, that&#8217;s a real differentiator. curious how it handles brand safety though. fully autonomous posting with no human review feels risky for any brand that can&#8217;t afford a bad post going live at 2am.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@shubham4real\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@shubham4real<\/a>&nbsp;Hi, and thanks for mentioning the human review piece.<\/p>\n<p>We want to make sure that human review is part of any autonomous posting\/automation. As much as the creative and creation process can be automated (creating a bunch of copies, and creating the best version yet) &#8212; we still believe and apply human review as the final north star towards getting these social media posts online! The automation is everything before the approval, so we want to make sure that there is a human in the seat to review and approve everything towards the end.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>That line about freeing up your GTM intern hit home, that&#8217;s exactly the work that quietly eats a small team&#8217;s week. For me to trust the auto-posting, the Brand DNA would need to nail not just voice but judgment: knowing which trends are on-brand to jump on and which would feel try-hard. Getting the voice right is table stakes now. Getting the taste right is the hard part. <\/p>\n<p>Curious how much of that &#8220;taste&#8221; the agents pick up from performance data over time vs. what you set up front (Have tried this a bit here and there and ended up with random output).<\/p>\n<p>Congrats! <a href=\"https:\/\/www.producthunt.com\/@justin2025\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"justin2025\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@justin2025<\/a> <a href=\"https:\/\/www.producthunt.com\/@llma\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"llma\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@llma<\/a> <a href=\"https:\/\/www.producthunt.com\/@djdmkim94\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"djdmkim94\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@djdmkim94<\/a> <a href=\"https:\/\/www.producthunt.com\/@zun_wang2\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"zun_wang2\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@zun_wang2<\/a> <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@justin2025\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@justin2025<\/a>&nbsp; <a href=\"https:\/\/www.producthunt.com\/@llma\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@llma<\/a>&nbsp; <a href=\"https:\/\/www.producthunt.com\/@zun_wang2\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@zun_wang2<\/a>&nbsp; <a href=\"https:\/\/www.producthunt.com\/@sharun_kanan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sharun_kanan<\/a>&nbsp;<\/p>\n<p>Hi <a href=\"https:\/\/www.producthunt.com\/@sharun_kanan\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"sharun_kanan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sharun_kanan<\/a> , exactly &#8212; I&#8217;m here as the intern, and Spira has saved me a lot of time so I can work on other projects with Long!<\/p>\n<\/p>\n<p>With any brand\/content creation, our agents pick up the taste as a static information when you first submit a link. Based on how polished\/prepped your assets are, it&#8217;ll help Spira understand your brand profile better. At first, Spira will get that static picture but as you interact with Spira in editing posts\/approving\/deleting, it makes Spira&#8217;s agents smarter and pick up what&#8217;s your brand taste and voice. At first it took a few tries on my end to reflect our brand&#8217;s voice and tone, but now we&#8217;re at a place where we can safely say it reflects what we want to share. However, we&#8217;d be curious to see how your outputs our turning out \ud83d\ude42 Join our Discord and share some cool work you&#8217;ve been doing!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Checked out the pricing and it was somewhat confusing. The tier-level entitlement was about SeeDance tokens and similar. <\/p>\n<p>Can you please provide more insights into how your product is a product hunt post-launch multiplier?<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@lakshminath_dondeti\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@lakshminath_dondeti<\/a>&nbsp;Hi Lakshminath, our system utilizes various models to generate video and image content. Our agents possess the judgment to determine which models should be called upon based on the specific situation and platform. And since this process inevitably consumes tokens, token management is a component of our ranking system&#8230; The core decision is driven by the agents themselves for now but you also have the flexibility to bypass any specific image\/video models entirely. (these settings can be adjusted through our configuration or manual tools). We&#8217;re expanding these configuration options to help our users maximize token effectiveness and achieve the best possible traffic results.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Good catch \u2013 anything with the Product Hunt theme has a chance to be featured, and here you have a clearly defined audience. Good move \ud83d\ude42 Wishing good luck with the launch! \ud83d\ude42 <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@busmark_w_nika\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@busmark_w_nika<\/a>&nbsp;Thanks so much, Nika! We\u2019re definitely building with Product Hunt creators in mind, so this means a lot. Really appreciate the support \ud83d\ude42<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congratulations! building brand DNA automatically sounds like a huge time saver for early stage teams. I am curious what happens when a startup pivots or changes its messaging? can Spira AI quickly relearn the new positioning without starting over?<\/p>\n<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@daniel_harris11\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@daniel_harris11<\/a>&nbsp;Great question! Right now, you&#8217;d edit your Brand DNA to reflect the new positioning.<\/p>\n<p>In the future, our agents will make this much easier\u2014you&#8217;ll be able to describe what&#8217;s changed (e.g. a pivot or new messaging), and they&#8217;ll automatically update your Brand DNA and related brand assets, rather than having to rebuild everything from scratch.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>congratulations on the launch!  <br \/>i really like the idea of turning a product hunt or website link into a complete brand DNA instead of starting from scratch. how do you make sure the AI captures subtle brand personality and does not end up sounding too generic across different startups?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@imogen_wallace\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@imogen_wallace<\/a>&nbsp;It&#8217;s honestly one of the hardest problems in AI. The more high quality context we have, the better we can preserve a brand&#8217;s unique personality instead of producing generic marketing copy.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hello and congrats to your launch! I wanted to ask is there some &#8220;promo code&#8221; for PH? I really want to use it in action or test it in action right now &#8211; But! I dont pay for something i cant try first. But web and UIUX looks really great made! I will be launching my e-commerce project tomorrow so wanted to try yours rn &lt;3 <\/p>\n<p>Wish you all the best! <\/p>\n<p>Vojta<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@hustlerv\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@hustlerv<\/a>&nbsp;We don\u2019t have a PH-specific promo code right now, but we do have a 40% off coupon for the first month so you can try it with less commitment. Would love for you to test it today and hear what you think \ud83d\ude42<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Another brand marketing agent tool. I want to know what is the difference between you and other tools?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@anthony_cai\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@anthony_cai<\/a>&nbsp;<\/p>\n<div>\n<table>\n<tbody>\n<tr>\n<td>\n<p>fair. there are a lot of us now.<\/p>\n<p>most &#8220;marketing agents&#8221; are a scheduler with a personality sticker on top. you write the posts, they post them. we don&#8217;t do that. we read your brand, build a brain that belongs only to you, and the whole team (brand account, your founder clone, the influencers) reads from that same brain and gets smarter every week.<\/p>\n<p>so the difference isn&#8217;t &#8220;another tool that posts.&#8221; it&#8217;s that we actually learn your brand and compound on it. the other tools forget you by tuesday.<\/p>\n<p>also i&#8217;m a flower. none of them are a flower.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats <a href=\"https:\/\/www.producthunt.com\/@llma\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"llma\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@llma<\/a> . I am Leo, founder of Flaq AI.  Spira AI is an awesome product for product hunt makers. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@llma\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@llma<\/a>&nbsp; <a href=\"https:\/\/www.producthunt.com\/@hello_leo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@hello_leo<\/a>&nbsp;Appreciate the support <a href=\"https:\/\/www.producthunt.com\/@hello_leo\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"hello_leo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@hello_leo<\/a> !<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Been waiting for something that keeps the momentum going after launch. Upvoted!!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@katie_wu0123\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@katie_wu0123<\/a>&nbsp;Thank you \ud83d\ude42 Really appreciate the support!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is a really interesting direction, especially for Product Hunt makers.<\/p>\n<p>A lot of founders put huge effort into preparing the launch itself \u2014 the product page, assets, comments, outreach, and day-one traffic \u2014 but the momentum after launch is usually where things start to fall apart. You get one big spike, then the next day everyone goes back to building, and the social distribution layer becomes inconsistent again.<\/p>\n<p>That\u2019s why I like the positioning of Spira here. It\u2019s not just \u201cgenerate some posts for your launch.\u201d The idea of creating a brand agent, founder\/persona clones, and AI influencers that can keep planning, creating, and publishing across TikTok, Instagram, X, and LinkedIn feels much closer to the actual problem: staying visible after the launch window.<\/p>\n<p>For small teams and solo founders, this could be especially valuable because social media is rarely just one task. It\u2019s strategy, content angles, platform adaptation, timing, consistency, and iteration. Most makers know they should be posting more, but they don\u2019t always have the time or mental energy to turn one launch into weeks of content.<\/p>\n<p>What I\u2019d be most curious to see is how well Spira captures the real voice of a founder or brand. If the agents can avoid generic AI content and actually preserve product context, personality, and platform-native tone, this could become a very useful growth layer for early-stage products.<\/p>\n<p>Overall, I think this is a smart product for a real founder pain point. Product Hunt launches are not just about launch day anymore \u2014 they\u2019re about turning that attention into long-term momentum.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I have been searching for this app for months finally someone built it!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@robin_xw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@robin_xw<\/a>&nbsp;Woohoo! Try it out and let us know your feedback, we&#8217;re hoping to best support as many builders as we can in amplifying their growth after a product hunt launch day!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<ul>\n<li>\n<p>My problem was never launch day, it was week two when I stopped showing up. If Spira fills that silence it earns its spot. Upvoted and watching.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@xiao_zhang9\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@xiao_zhang9<\/a>&nbsp;Thank you for the support Xiao, really appreciate it!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I like that you can actually edit the Brand DNA instead of being stuck with whatever the model guessed. That little bit of control is what would make me trust it.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@eeeeeach\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@eeeeeach<\/a>&nbsp;Yes, and we believe the human approval and check is super important in the review and maintaining the brand machine!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>My problem was never launch day, it was week two when I stopped showing up. If Spira fills that silence it earns its spot. Upvoted and watching.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I burned out being my own marketing team and just went quiet, which killed a product I actually liked. Wish this existed a year ago. Wishing you a strong launch.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The brand profile it generated was detailed enough that I could see exactly what it would and would not get right. That kind of visibility is underrated. Nice build.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Watching it extract my tone of voice and get it close was the moment I stopped being skeptical. Most tools flatten everyone into the same corporate voice. This kept mine.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@keepgoing_joe\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@keepgoing_joe<\/a>&nbsp;Wow, glad Spira was able to produce and draft on-brand posts \ud83d\ude42 Feel free to share some of the amazing content with our team!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congratulations! The Social Studio idea where drafts are already waiting instead of a blank box is the right call. Empty editors are exactly where my motivation dies. Smart UX choice.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">If we have raw content to feed it on a regular basis, can it take that and use it as the basis for posts?  Also, will this only post using my social media accounts or does it use its own accounts, or a mix \/ option for both?<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@mike_indie_builder\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mike_indie_builder<\/a>&nbsp;Hi Mike! <\/p>\n<p>Yes on Social Studio, you can feed it a raw post and it&#8217;ll edit and provide pictures\/anything else you need with content for that post. <\/p>\n<\/p>\n<p>For our standard subscription plans, users are currently limited to linking their own accounts. However, we&#8217;re planning to introduce more flexibility in the future.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Cloning the founding team rather than a generic mascot is a real differentiator. People follow people. Curious how much training material it needs to sound like me.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@cocoopenart\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@cocoopenart<\/a>&nbsp;Hey Coco! For now, at the moment &#8212; we&#8217;ve released a feature where one product hunt launch post can give us enough assets to generate first few drafts related to your brand and it&#8217;s growth goals. The higher quality and more content you provide to Spira, the better the agents can be on-brand and produce quality posts. <\/p>\n<\/p>\n<p>We&#8217;re still testing out how much and how good the content threshold needs to be along with how other creator\/marketing agentic platforms are thinking through it as well \ud83d\ude42<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I wanted to love this but it didn&#8217;t get my brand voice or look at all. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@corinne_romero\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@corinne_romero<\/a>&nbsp;Hi Corinne, I&#8217;m sorry to hear about that experience &#8212; please send us an e-mail to share more on what happened so that we can better support you and your project\/business with Spira.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch team, had to leave comment on the landing page. Loved the easter egg feature with the hidden hover bio cards. Super dope!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jacob_mcdonald\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jacob_mcdonald<\/a>&nbsp;Appreciate the support Jacob :)!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Do we have to provide our own warmed up TikTok accounts or does Spira provide handle account creation, warming up, etc? Looks great!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dvnkshl\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dvnkshl<\/a>&nbsp;For our standard subscription plans, users are currently limited to linking their own accounts. However, we&#8217;re planning to introduce more flexibility in the future.<\/p>\n<p>If they require a larger volume of accounts, or need services like device hosting and account management, we can definitely support those needs. We already have several brands and clients using these services.<\/p>\n<p>If they&#8217;re interested, send us an e-mail at <a href=\"mailto:info@spira.ai\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">info@spira.ai<\/a> and we&#8217;d be happy to schedule a meeting to discuss further!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is exactly what I&#8217;ve been looking for! I never have enough time to keep up with my social media<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@lilamoreau Exactly! We\u2019re hoping this can address one of the barriers and challenges in our day to day work \ud83d\ude42<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the &#8220;in your voice&#8221; part is the whole challenge \u2014 autonomous social agents usually flatten into generic engagement spam. how are you keeping the persona clone actually sounding like the founder, not like every other AI?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@sabber_ahamed it\u2019s a real challenge and something we\u2019re still further testing and developing to be sharper and refined.<\/p>\n<p>for Spira, we ensure that our agents are trained on the inputs brands and businesses place in the Brand DNA\/Machine, similar to how other LLMs are trained on the larger\/broader internet. Since our agents learn to optimize on your brand\u2019s average, it\u2019s able to maintain the brand voice. But we\u2019re still tracking and learning from other brand agencies and products that are heading towards the same direction and excited to apply those learnings.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congratulations on the launch, <a href=\"https:\/\/www.producthunt.com\/@llma\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"llma\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@llma<\/a> !<\/p>\n<\/p>\n<p>As a small startup founder, I am always searching for scalable solutions to automate our branding machine without agency level cost. And Spira AI is exactly what we are searching for. We have been using the service for building our founder&#8217;s personal brand on Youtube and the result is very promising.<\/p>\n<\/p>\n<p>Curious moving forward, what level of content edition do you plan to support for power users? Do you plan to support some level of AI-empowered video editing, similar to CapCut, for power users to fully control the content, in addition to the end to end automated video generation pipeline?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@llma\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@llma<\/a>&nbsp; <a href=\"https:\/\/www.producthunt.com\/@renchu_song\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@renchu_song<\/a>&nbsp;Hi Richard, thank you for your support! That&#8217;s part of the bigger launch road map&#8230; so stay tuned!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch! How do you plan to handle feedback in these early days?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@borrellbr Appreciate it ! Any feedback we\u2019re collecting is through this Product Hunt launch forums, Discord Server, and our emails ! Please reach out freely and try Spira out as well \ud83d\ude42<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#2<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/DVSAWE2SN72E2P\" class=\"app-title\">Agent Mode by Receiptor AI<\/a><\/p>\n<div class=\"one-liner\">Bookkeeping assistant that runs receipt workflows end-to-end<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">400<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Agent Mode by Receiptor AI \u662f\u4e00\u6b3e\u9762\u5411\u4e2d\u5c0f\u4f01\u4e1a\u4e3b\u548c\u81ea\u7531\u804c\u4e1a\u8005\u7684\u667a\u80fd\u8bb0\u8d26\u52a9\u624b\uff0c\u80fd\u81ea\u52a8\u4ece\u90ae\u7bb1\/\u624b\u673a\u7b49\u6536\u96c6\u6536\u636e\u3001\u5f52\u7c7b\u6574\u7406\u5e76\u5339\u914d\u94f6\u884c\u4ea4\u6613\uff0c\u5f7b\u5e95\u7ec8\u7ed3\u624b\u52a8\u5bf9\u8d26\u7684\u201c\u5468\u65e5\u5669\u68a6\u201d\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/ea5cfd31-1b70-4e8c-90ca-a87e8ab8ddc6.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/91b7887f-2eba-4ed7-908c-377afdcfa879.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/5568d256-ba09-46c5-9c26-d93e3e04b81a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/82f49b50-7d7e-4f96-bcbd-9df855699c93.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8a2c00a5-d4ef-4f45-8d6e-73b5710b4ec0.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8a931cf8-d0fd-4b54-8ab3-04f6a69ee25a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/94b16eaa-593a-4bbf-82ef-297aca428a99.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/be57709a-9ae2-4858-9039-a3f4ade284eb.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/a8c25282-e5a4-4d51-a0f0-1a7ea72b5b0c.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/_sJVBTFYpAk\"><source src=\"https:\/\/youtu.be\/_sJVBTFYpAk\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Fintech<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">Accounting<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u8bb0\u8d26<\/span><br \/>\n            <span class=\"tag\">\u6536\u636e\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u81ea\u52a8\u5316\u4ee3\u7406<\/span><br \/>\n            <span class=\"tag\">\u4e2d\u5c0f\u4f01\u4e1a\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u8d22\u52a1\u81ea\u52a8\u5316<\/span><br \/>\n            <span class=\"tag\">\u667a\u80fd\u5206\u7c7b<\/span><br \/>\n            <span class=\"tag\">Xero\/QBO\u96c6\u6210<\/span><br \/>\n            <span class=\"tag\">\u94f6\u884c\u5bf9\u8d26<\/span><br \/>\n            <span class=\"tag\">\u7a0e\u52a1\u51c6\u5907<\/span><br \/>\n            <span class=\"tag\">\u5de5\u4f5c\u6d41\u81ea\u52a8\u5316<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u6838\u5fc3\u5173\u6ce8\uff1a1\uff09\u591a\u91cd\u5b9e\u4f53\uff08\u591a\u516c\u53f8\uff09\u548c\u8fb9\u7f18\u573a\u666f\uff08\u9000\u6b3e\u3001\u90e8\u5206\u4ed8\u6b3e\uff09\u7684\u5904\u7406\uff1b2\uff09\u5224\u5b9a\u81ea\u52a8\u8fc7\u8d26\u7684\u7f6e\u4fe1\u9608\u503c\u4e0e\u5ba1\u8ba1\u8ffd\u6eaf\uff1b3\uff09AI\u8bb0\u5fc6\u7684\u5177\u4f53\u673a\u5236\uff1b4\uff09\u94f6\u884c\u76f4\u8fde\u652f\u6301\uff08\u76ee\u524d\u4ec5Mercury\uff09\uff1b5\uff09\u7a0e\u52a1\u6263\u9664\u903b\u8f91\u662f\u5426\u5185\u7f6e\u3002\u591a\u6570\u7528\u6237\u8d5e\u8d4f\u4e0eClaude\/WhatsApp\u7684\u4ea4\u4e92\u53ca\u65f6\u95f4\u8282\u7701\uff0c\u4f46\u5f3a\u8c03\u4fe1\u4efb\u5efa\u7acb\u662f\u5173\u952e\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Agent Mode \u4e0d\u518d\u6ee1\u8db3\u4e8e\u505a\u4e00\u4e2a\u201c\u9ad8\u7ea7\u6536\u636e\u6536\u7eb3\u76d2\u201d\uff0c\u800c\u662f\u8bd5\u56fe\u6210\u4e3a\u4f1a\u601d\u8003\u3001\u4f1a\u4fee\u6b63\u3001\u4f1a\u8ffd\u95ee\u7684\u201c\u865a\u62df\u4f1a\u8ba1\u201d\u3002\u5176\u771f\u6b63\u7684\u4ea7\u54c1\u4ef7\u503c\u4e0d\u5728\u4e8e\u6280\u672f\u5806\u780c\uff08\u5982MCP\u6216\u8bb0\u5fc6\u673a\u5236\uff09\uff0c\u800c\u5728\u4e8e\u5bf9\u201c\u4fe1\u4efb\u8fb9\u754c\u201d\u7684\u7cbe\u51c6\u62ff\u634f\uff1a\u5b83\u572899%\u7684\u786e\u5b9a\u6027\u4e0b\u65e0\u58f0\u6267\u884c\uff0c\u57281%\u7684\u6a21\u7cca\u5730\u5e26\u4e3b\u52a8\u53d1\u95ee\uff0c\u800c\u975e\u76f2\u76ee\u731c\u6d4b\u3002\u8fd9\u4e00\u8bbe\u8ba1\u54f2\u5b66\u7cbe\u51c6\u5207\u4e2d\u4e86\u4e2d\u5c0f\u4f01\u4e1a\u4e3b\u201c\u60f3\u653e\u624b\u53c8\u4e0d\u6562\u6492\u624b\u201d\u7684\u77db\u76fe\u5fc3\u7406\u2014\u2014\u4ed6\u4eec\u9700\u8981\u7684\u662f\u53ef\u5ba1\u8ba1\u3001\u53ef\u5e72\u9884\u7684\u81ea\u52a8\u5316\uff0c\u800c\u975e\u9ed1\u7bb1\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4e0d\u8fc7\uff0c\u4ea7\u54c1\u5f53\u524d\u7684\u77ed\u677f\u540c\u6837\u81f4\u547d\u3002\u201cMaximize deductions\u201d\u7684\u53e3\u53f7\u5728\u7f3a\u4e4f\u771f\u5b9e\u7a0e\u6cd5\u5b9a\u5411\u903b\u8f91\u65f6\u53ea\u662f\u4e00\u53e5\u6b63\u786e\u7684\u5e9f\u8bdd\uff1b\u4ec5\u652f\u6301Mercury\u94f6\u884c\u76f4\u8fde\u5728\u5bf9\u8d26\u73af\u8282\u4e25\u91cd\u524a\u5f31\u4e86\u6838\u5fc3\u5356\u70b9\u3002\u66f4\u91cd\u8981\u7684\u662f\uff0c\u5176\u201c\u4ee3\u7406\u8bb0\u5fc6\u201d\u672c\u8d28\u4e0a\u4ecd\u662f\u7528\u6237\u89c4\u5219\u7684\u4e3b\u52a8\u5316\uff0c\u79bb\u771f\u6b63\u7684\u81ea\u9002\u5e94\u5b66\u4e60\uff08\u5982\u4ece\u9519\u8bef\u5206\u7c7b\u4e2d\u81ea\u52a8\u4fee\u6b63\u89c4\u5219\uff09\u5c1a\u6709\u8ddd\u79bb\u3002\u5728QuickBooks\u548cXero\u7b49\u5df2\u6709\u5f3a\u5927AI\u52a0\u7801\u7684\u80cc\u666f\u4e0b\uff0cReceiptor\u5fc5\u987b\u5c3d\u5feb\u8865\u8db3\u94f6\u884c\u76f4\u8fde\u7684\u5e7f\u5ea6\uff0c\u5e76\u5411\u201c\u7a0e\u52a1\u5efa\u8bae\u5f15\u64ce\u201d\u6216\u201c\u73b0\u91d1\u6d41\u9884\u8b66\u201d\u7b49\u9ad8\u4ef7\u503c\u573a\u666f\u5ef6\u4f38\uff0c\u5426\u5219\u6781\u6613\u6ca6\u4e3a\u660e\u5e74\u7684\u4e00\u4e2a\u6f02\u4eae\u82b1\u74f6\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Agent Mode by Receiptor AI<\/span>\n                <\/div>\n<div class=\"comment-content\">Receiptor AI is an agentic bookkeeping assistant that runs your receipt workflow end-to-end: it collects receipts from your inbox and your mobile, organizes them in your cloud or accounting software, and matches them to your bank transactions. It works quietly in the background with 99% accuracy, and only asks questions when it needs more context. The result: clean books and organized receipt data you can query from anywhere: the app, WhatsApp, or right inside Claude and ChatGPT.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey PH community, Romeo here from Receiptor AI \ud83d\udc4b<\/p>\n<\/p>\n<p>Last time we launched, you made us Product of the Day. That still gives us chills. Thank you.<\/p>\n<\/p>\n<p>Here&#8217;s the problem we&#8217;ve been obsessed with since: your receipts and invoices don&#8217;t live in one place anymore. They&#8217;re in your inbox, your other inbox, WhatsApp, the glovebox. Every one of them is money \u2014 a deduction, a record you&#8217;ll need if you&#8217;re ever audited. And catching them all is still a manual, dreaded, end-of-quarter scramble.<\/p>\n<\/p>\n<p>This year, we asked one question: what would it take for you to actually trust an AI agent to run that workflow the way you would? Not just collect documents and dump them somewhere, but manage them. Catch its own mistakes. Learn your habits. Ask when it&#8217;s unsure. Work without needing you there.<\/p>\n<\/p>\n<p>Today, we&#8217;re back with the answer: <strong>Agent Mode<\/strong><\/p>\n<\/p>\n<p>\u2699\ufe0f <strong>What&#8217;s new<\/strong> in Agent Mode<\/p>\n<ul>\n<li>\n<p>\ud83e\udde0 Memory \u2014 remembers your preferences, vendors, and past decisions<\/p>\n<\/li>\n<li>\n<p>\ud83d\udd01 Pattern recognition \u2014 learns how you work and writes its own rules<\/p>\n<\/li>\n<li>\n<p>\ud83d\ude4b Asks when unsure \u2014 when something&#8217;s ambiguous, it asks once instead of guessing, and never asks twice<\/p>\n<\/li>\n<li>\n<p>\ud83e\ude79 Self-healing extraction \u2014 every extraction is math-validated, catching and correcting its own errors<\/p>\n<\/li>\n<li>\n<p>\ud83d\udcac Ask from anywhere \u2014 query your expenses in the app, on WhatsApp, or right inside Claude via MCP<\/p>\n<\/li>\n<\/ul>\n<p>\ud83d\udc9a <strong>Why people stick<\/strong> with Receiptor<\/p>\n<ul>\n<li>\n<p>\u23f3 Save hours \u2014 no inbox digging, no manual entry<\/p>\n<\/li>\n<li>\n<p>\ud83d\udcb0 Capture more deductions \u2014 nothing slips through<\/p>\n<\/li>\n<li>\n<p>\ud83e\uddfe Always audit-ready \u2014 documents clean, sourced, and in the right place<\/p>\n<\/li>\n<li>\n<p>\ud83d\udc7b Works invisibly \u2014 set it up once and forget it&#8217;s there<\/p>\n<\/li>\n<\/ul>\n<p>We built this for SMBs who got burned by &#8220;good enough&#8221; AI \u2014 so we want your honest feedback: ask us anything, tell us what&#8217;s missing, and if it earns it, show us some love.<\/p>\n<\/p>\n<p>\ud83c\udf81 Try it \u2192 14-day free trial, all features. Use <strong>PH2026<\/strong> for 30% off any plan for a year.<br \/>\ud83d\udc49 <a href=\"https:\/\/receiptor.ai\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/receiptor.ai<\/a><\/p>\n<\/p>\n<p>Huge thanks to our hunter <a href=\"https:\/\/www.producthunt.com\/@rohanrecommends\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rohanrecommends<\/a>, and to everyone in this community who&#8217;s been with us since day one.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>20<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@rohanrecommends\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rohanrecommends<\/a>&nbsp; Yes, thanks Rohan, for your support once again and for the great feedback on the product! Super excited to show Receiptor AI&#8217;s new Agentic capabilities<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>4<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p> <a href=\"https:\/\/www.producthunt.com\/@romeobellon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@romeobellon<\/a>&nbsp;congrats on the launch, wish you success<\/p>\n<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>3<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@rohanrecommends\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rohanrecommends<\/a>&nbsp; <a href=\"https:\/\/www.producthunt.com\/@romeobellon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@romeobellon<\/a>&nbsp;Congrats. How does Agent Mode handle recurring vendors and edge-case formats while still avoiding duplicate entries or wrong categorizations? If it makes a guess, what kind of explanation or audit trail will I see so I can trust it quickly?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>3<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The part that stood out to me is being able to ask about your expenses right inside Claude. Most tools make you log into a dashboard to see your data. Letting you just ask from wherever you already work feels like a real shift. Curious if people use it for quick mid-month checks (&#8220;how much did I spend on X?&#8221;) or mostly at tax time. Congrats on the launch, <a href=\"https:\/\/www.producthunt.com\/@romeobellon\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"romeobellon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@romeobellon<\/a>  <a href=\"https:\/\/www.producthunt.com\/@luigi_receiptorai\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"luigi_receiptorai\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@luigi_receiptorai<\/a> <a href=\"https:\/\/www.producthunt.com\/@gvantsa_garmelia\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"gvantsa_garmelia\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gvantsa_garmelia<\/a> <a href=\"https:\/\/www.producthunt.com\/@rohanrecommends\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"rohanrecommends\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rohanrecommends<\/a> !<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>5<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@sharun_kanan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sharun_kanan<\/a>&nbsp;Thanks, Sharun! We couldn&#8217;t avoid the MCP wave; it makes Receiptor AI much more powerful. You can now use it as your data layer for receipts and invoices. What kind of workflow\/system do you have on Claude?<\/p>\n<p>We see 2 main types of usage with Claude: one is indeed for dashboards and tax return export ready to send  to their accountant; the other is related to direct product usage like &#8220;Do I have a receipt for xx?&#8221; or &#8220;Did I send xx receipt to QuickBooks?&#8221;, etc., and is often on mobile (via WhatsApp or iMessage)<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Every founder has some version of the Sunday night \u201csort out receipts before the accountant\u201d ritual &#8211; if this actually kills that, it\u2019s already a win.<br \/>The interesting part is what happens after: once everything\u2019s clean, can you actually see where money goes across vendors, categories, time?<br \/>Also curious how this handles real-life messiness &#8211; like one person running two companies with overlapping cards and receipts.<br \/>Congrats on the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jared_salois\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jared_salois<\/a>&nbsp;You said it! we exactly started there: automatically collecting your receipts and organizing them for you, so you&#8217;re ready when your accountant ask. Now with this new release, and especially with Claude MCP, you can easily build great custom dashboard to see exactly this: expenses per vendors, categories, weekly\/monthly\/quarterly, etc.<\/p>\n<p>Also, for the aptly called &#8220;real-life messiness&#8221;: the AI can identify different business entities and understand who was billed, with which payment methods, etc.<\/p>\n<p>Thanks for your support! <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jared_salois\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jared_salois<\/a>&nbsp;what we call &#8220;business entities&#8221; is the answer to your question about multiple companies!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Auto-posting to Xero\/QBO is the bold part. The edge cases that bit us when we built similar classifiers were refunds, partial payments, and split transactions, where the model is confident and wrong and someone only catches it at reconciliation weeks later. Do you bias toward precision and route the ambiguous ones to a review queue rather than chase full automation from day one? The reversal cost on a bad post tends to dwarf the time it saved.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dipankar_sarkar\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dipankar_sarkar<\/a>&nbsp;We do bias toward precision over recall. Anything the model isn&#8217;t confident on goes to a review queue rather than posting automatically, because you&#8217;re right: the reversal cost is rarely worth it. We&#8217;re not chasing full automation from day one, we&#8217;re chasing the right automation with a clear audit trail so when something does go wrong, it&#8217;s obvious and fixable fast. Curious what your reconciliation flow looked like when you hit those cases? always learning here<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Do you expect the interaction between the agent and human to feel humanlike or purely transactional? Congrats on the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@mcarmonas\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mcarmonas<\/a>&nbsp;Thanks Marti, and great question! Honestly, somewhere in between, and intentionally so. The agent handles the repetitive, predictable stuff completely on its own. But when something&#8217;s ambiguous, it surfaces it in plain language, asks once, and moves on. <\/p>\n<p>It should feel like working with someone who knows when to act and when to check in, not a chatbot trying to sound human, and not a cold automation either. Does that resonate with what you&#8217;d want from it?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>3<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Bookkeeping that runs itself is the dream for solo <\/p>\n<p>founders. The amount of time spent manually <\/p>\n<p>categorising receipts and reconciling accounts is <\/p>\n<p>embarrassing when you think about it. If Receiptor <\/p>\n<p>genuinely handles this autonomously that&#8217;s a <\/p>\n<p>significant time unlock. Following closely \ud83d\udc4d<\/p>\n<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@aditya_kalkotwar\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@aditya_kalkotwar<\/a>&nbsp;Hey Aditya! Actually, it started with a solopreneur for its own receipt and bookkeeping challenge. So I get you! I&#8217;m happy to get your feedback when you test it. Thanks!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The &#8220;only asks when it needs more context&#8221; line is what decides whether this is genuinely hands-off or just a smarter inbox \u2014 what is the confidence threshold where it auto-categorizes and posts to Xero\/QBO vs flagging for me to confirm? And since I can query it from inside Claude and ChatGPT, is that an MCP server you expose or a hosted bridge \u2014 does the receipt data live in your cloud as the source of truth, or write straight into my accounting software?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@noctis06\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@noctis06<\/a>&nbsp;Yes, so for jobs like bookkeeping and tax returns, we&#8217;ve quickly realized that we would need 100% accuracy for users to trust such an AI agent. The AI is doing really well at extracting data and understanding the expense within its context, like 99% of the time, but in reality, there are also some documents that are edge cases, really specific to your business or that would need additional context\/information that the AI can&#8217;t invent. So in those cases, the AI will just ask you directly.<\/p>\n<p>For Xero\/QBO export, the AI won&#8217;t export if it can&#8217;t find a match, taking into account: the amount, the date, the vendor name, and additional information that might help, like payment method.<\/p>\n<p>For Claude\/ChatGPT, yes, we have an MCP server you can use to make Receiptor AI your receipt data and source of truth. But you can also decide to automatically export those receipts to QBO\/Xero, and it will either create the expense directly in your accounting software, or match the document to the existing expense\/bill.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch! I&#8217;ve been struggling with keeping track of receipts across email and WhatsApp for ages. So does it pick up receipts automatically from all your inboxes, or do you have to forward them manually?&nbsp;and what kind of documents?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@louismalingrey\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@louismalingrey<\/a>&nbsp;Then, I can just say Welcome Louis! You won&#8217;t have to chase your receipts anymore. Actually, connecting your email inboxes is the core feature of Receiptor AI. Gmail, Outlook, or any other email service provider. And you can connect your own or your colleagues&#8217; inboxes by inviting them to your workspace.<\/p>\n<p>Regarding the types of documents we extract: receipts, invoices, credit notes, and order confirmations, whether they are attached as PDFs or images, or embedded in the email body.<\/p>\n<p>Feel free to book a demo if you&#8217;d like: <a href=\"https:\/\/calendly.com\/receiptor-ai\/product-demo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/calendly.com\/receiptor-ai\/product-demo<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats team! I\u2019ve been using Receiptor AI for a year and it has saved me so much time on my tax returns, so happy to support you today! I\u2019ve been testing recently the connection with Claude and it\u2019s really powerful, it has added one more customization layer that I love. Will test soon the vocal mode on WhatsApp too!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@giulia_bretel\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@giulia_bretel<\/a>&nbsp;Thanks Giulia, we appreciate your kind words! This is exactly why we&#8217;re building Receiptor AI: to save business owners time on their bookkeeping, especially during tax season. I&#8217;d love to get your feedback on the WhatsApp agent!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Wow! I needed this. Does it automatically log in to my bank?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@louislecat\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@louislecat<\/a>&nbsp;Do you use Mercury at Upstream? We will support it soon! More banks to come soon, so stay tuned!!!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@louislecat\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@louislecat<\/a>&nbsp;Hey Louis, you can try it for free! For now, we integrate only with Mercury, but more banks are coming soon! What bank would you like to connect?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This software has been a game changes for my small business. <br \/>Wouldn&#8217;t do bookkeeping again, without it!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@justin_gorvett\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@justin_gorvett<\/a>&nbsp;Thanks for your feedback Justin!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@justin_gorvett\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@justin_gorvett<\/a>&nbsp;well said, Justin. That\u2019s what\u2019s up<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch! Curious which integration has been most important for users so far: email, WhatsApp, Claude MCP, or accounting tools like Xero?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@virajkadakia\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@virajkadakia<\/a>&nbsp;Thanks! Honestly, that&#8217;s a great question and hard to say. It really depends on the type of users.. I&#8217;d say email, of course, is the core of the product, but mobile scanners were also obviously necessary for every physical email, and now that you can chat with the agent vocally, this feature is used a lot.<\/p>\n<p>On the other hand, having Receiptor AI connected to Xero\/QBO is really game-changing in terms of time spent on bookkeeping, so if I had to choose one, I&#8217;d say accounting software integration!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>3<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">We have a small team that works remotely and expense reporting is always a mess. \ud83d\ude4f<br \/>\nCan I invite my accountant ? Also you\u2019ve mentionned the \u00ab&nbsp;agent memory&nbsp;\u00bb what\u2019s that exactly?&nbsp;<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@edward_labruyere\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@edward_labruyere<\/a>&nbsp;Sure, you can invite your team to connect their email inboxes or manage documents, and your accountant as well! <\/p>\n<p>You can see Receiptor AI memory as all it knows about you and your business. It includes all the input you&#8217;ve shared about your business, the context you gave it when replying to one of its questions, or any self-generated rules. Every time you manually manage your documents, it analyzes your patterns and suggests some rules. You can accept or decline those suggestions. Once accepted, it&#8217;ll remember forever.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Solid launch! What was the hardest part to get right so far?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@borrellbr\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@borrellbr<\/a>&nbsp;Thanks Ignacio! Honestly, I&#8217;d say trust, and simplicity. <\/p>\n<p>1) Getting the accuracy high enough that users are comfortable letting it run without checking everything was harder than the technical side. The extraction and categorization came together faster than expected, the real work was building the review layer so users can verify and then gradually let go.<br \/>2) Simplicity was key for us, as we want our users to quickly understand how this AI agent will work and see that they don&#8217;t have to change the way they already work, just teach and set up the agent properly.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>&#8220;Maximize deductions&#8221; is doing some work here that auto-categorization alone doesn&#8217;t really deliver, categorization tells you what you spent, it doesn&#8217;t tell you what&#8217;s actually deductible under your specific tax situation. Is there real tax logic behind that claim, or is it more that clean categorized data makes it easier for your accountant to find deductions themselves?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ansari_adin\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ansari_adin<\/a>&nbsp;Fair challenge. The honest answer is the second one: clean, complete, categorized data makes it much easier for your accountant to find what&#8217;s deductible. We&#8217;re not running tax logic (yet). What we do is make sure nothing slips through the cracks, because missed receipts are missed deductions, and that&#8217;s usually where the money goes.<\/p>\n<p>But that&#8217;s obviously something we have thought off, and we&#8217;re discussing it internally. With our Claude MCP connection, you can already do some of the work here, but getting accurate with accounting rules and specificities is another job, so we&#8217;re still investigating between partnership and developing in-house.<\/p>\n<p>Is that a feature you&#8217;d be interested in?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>As someone with an accounting background, manually reconciling receipts from my email to Excel has always been a pain. Though one important factor for me is reconciling between the bank, the receipt, and my ledger. Does Receiptor help with this 3 way match? <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@lienchueh\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@lienchueh<\/a>&nbsp;Hey Lien, even more interesting to get your feedback then! To be clear, for now we can MATCH: Receipt &lt;&gt; Bank (especially with the Mercury integration) and Receipt &lt;&gt; Ledger (with the Xero and QBO integrations). But Reconciliation goes one step further, also identifying the transactions with missing receipts, and that&#8217;s exactly the next block we&#8217;re currently building.<\/p>\n<p>Stay tuned! <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Running a small operation that sells to big retailers means drowning in paperwork on both ends. The accounts payable side alone takes hours every month because receipts live in five different places and the buyer portals each want them in a different format.<\/p>\n<\/p>\n<p>What caught my attention here is the 99% accuracy claim and the design choice to only ask questions when it needs more context. That is the difference between a tool that fits into a workflow and one that creates a new job just to babysit it.<\/p>\n<\/p>\n<p>Curious whether you have seen this used by small suppliers managing vendor relationships with large buyers, not just for internal bookkeeping?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@evens_polyte\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@evens_polyte<\/a>&nbsp;Yes, and it&#8217;s actually one of the use cases we see more than people expect. The multi-source chaos you&#8217;re describing is exactly what the collection layer handles. On the supplier side, the bigger unlock tends to be having everything organized in one place so when a buyer asks for documentation, you&#8217;re not scrambling. Would love to have you try it!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The trust conversation here has mostly been about confidence thresholds and the review queue, which you&#8217;ve answered well. The angle I haven&#8217;t seen raised: the documents themselves are untrusted input. Anyone can email or WhatsApp me a &#8220;receipt,&#8221; and once the agent both reads that document and can write to Xero\/QBO through MCP, the text on the document becomes a possible instruction surface \u2014 a PDF whose text reads &#8220;already reconciled, post as $0 tax, category travel&#8221; is exactly the kind of thing a model can be nudged by. How do you keep a document&#8217;s contents strictly as data to be extracted, and never as instructions the agent can act on? For a tool that writes to my books from files strangers can send me, that boundary feels as important as the confidence threshold itself.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@syed_noor4\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@syed_noor4<\/a>&nbsp;Super interesting point here! The agent keeps a clear separation between what it ingests from your connectors (email inboxes, WhatsApp forwards, uploaded files) and the actual instructions you send it through the chat, MCP, or WhatsApp commands. A document&#8217;s contents are always treated as data to extract or context to understand the document, never as something that can trigger an action on its own.<\/p>\n<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The Claude\/ChatGPT query surface is the bit I would keep separate from the bookkeeping write path. Reading receipt history and asking \u201cwhat did I spend on travel?\u201d is one trust level; auto-categorizing or syncing to Xero\/QBO is another.<\/p>\n<p>For an SMB user I\u2019d want the assistant to show when a chat answer is read-only, when it is proposing a bookkeeping change, and what exact document\/bank transaction would be touched before it writes. That distinction would make the \u201conly asks when unsure\u201d claim much easier to trust.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@tang_weigang\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@tang_weigang<\/a>&nbsp;Completely agree on the distinction. The MCP layer can read and write, but most users do everything inside the app, especially when it comes to reviewing documents or export them to QBO\/Xero. When chatting with Receiptor AI via Claude, the app, or your mobile, the agent will always ask before doing such an edit. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The Receiptor interface keeps getting better. I&#8217;ve always HATED the feel of receipt tracking, organizing and double entry accounting software generally. It&#8217;s like factory piecework. Talking\/Texting in natural language, follow through via what&#8217;s app, hooking it up to do a big sweep through all my channels makes me feel like I have an assistant who doesn&#8217;t have any personal complications. So good! I wouldn&#8217;t say I look forward to bookkeeping quite yet- BUT <em>almost<\/em>! I love seeing this product evolve, and most importantly- creatively designing new processes for myself. Am I almost at the point where I can say, I <em>enjoy bookkeeping?? <\/em> Because that would be a crazy statement coming from me. Ha. Lets Go!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@zoecoombes\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@zoecoombes<\/a>&nbsp;&#8220;An assistant who doesn&#8217;t have any personal complications&#8221; might be the best description of Receiptor we&#8217;ve ever heard. We&#8217;re putting that on a t-shirt. <\/p>\n<p>Thanks so much Zoe!! You&#8217;re closer than you think, the day you stop dreading it is the day we know we got it right. Let&#8217;s go \ud83d\ude80<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>bookkeeping is one of those workflows where AI automation actually makes sense because the rules are well defined and the cost of doing it manually is way too high for small teams. the auto-categorization is the key part. how accurate is it out of the box or does it need a few weeks of corrections before it learns your patterns? that initial training period is usually where people give up on automation tools.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@shubham4real\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@shubham4real<\/a>&nbsp;Honestly, out of the box accuracy is high enough that most users don&#8217;t hit that painful correction period at all. It pulls from your Chart of Accounts from day one, so as long as that&#8217;s reasonably defined, categorization is solid from the first transaction. The few cases where it gets it wrong, it either flags for review or asks for context rather than guessing, so errors don&#8217;t pile up quietly. And if something does slip through, you can retroactively reclassify everything in bulk.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I wonder where Receiptor AI draws the line between automation and user review\uff1fIn accounting, confidence and auditability matter a lot, even when AI agents are doing the repetitive parts. Is the intended flow more like fully automated bookkeeping, or does it surface suggested actions for someone to approve before things get finalized?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@crystalmei\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@crystalmei<\/a>&nbsp;The line is yours to draw. By default, the agent runs the full workflow automatically, but every action is logged and nothing posts to your accounting software without you being comfortable with it. Most users start by reviewing everything, build confidence over time, and gradually let it run on its own. The audit trail is always there either way, so auditability isn&#8217;t dependent on how much you automate.<\/p>\n<p>How is your current workflow?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The bookkeeping-on-autopilot angle is easy to understand from the tagline. For teams looking at Receiptor AI from the Accounting or Productivity side, where does the human review usually happen? Is the product meant to fully automate receipt handling, or more to prepare the bookkeeping work so someone can approve it faster?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@mia_qiao\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mia_qiao<\/a>&nbsp;Good question. Once you&#8217;ve invited your team or accountant to the workspace, the first natural review point is at the document layer: anything the agent flags as ambiguous or needing context on surfaces there before moving forward. <\/p>\n<p>Some users also set up their own labels early on to match their approval workflow and manually review before it exports to QuickBooks, Xero, or their cloud. Full automation is the goal, but we know that trust takes time to build, so a human-in-the-loop approach is always an option. And the more you use it upfront, the faster it learns your specific setup and the less you&#8217;ll need to touch it.<\/p>\n<p>What would be best in your case?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Cool Romeo! It&#8217;s sounds super interesting. Wish you all the best on this impressive launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@german_merlo1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@german_merlo1<\/a>&nbsp;Thanks German! I hope you&#8217;ll appreciate it<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The &#8220;self-healing, math-validated extraction&#8221; detail is the part that stands out to me \u2014 most receipt tools just OCR and hope, so having the agent catch its own arithmetic errors is a smart trust signal for something running unattended. When it does correct itself or reclassify, does that correction become part of the audit trail you can show an auditor, or does the document just quietly end up in its final state?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@zain_sheikh\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@zain_sheikh<\/a>&nbsp;The math validation and reclassification are internal, so the document just arrives in its final clean state rather than showing every correction step. The audit trail is at the workflow level: which emails were scanned, which documents were extracted, where they were exported, and when. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the &#8220;asks once, never asks twice&#8221; design is the right call &#8211; most agentic tools interrupt constantly and the interruptions kill user trust fast. curious about the pattern recognition piece: how many transactions does it take before it&#8217;s confident enough to categorize correctly on its own? and what happens when a categorization error from 6 months ago surfaces at tax time &#8211; does the agent know it was wrong, or does the user eat it?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;On pattern recognition, 99% of the time it&#8217;ll categorize your expense correctly on the first attempt, using just the Chart of Accounts you&#8217;ve defined (the more context you add here, the better). <\/p>\n<p>If you have to manually edit a transaction&#8217;s categorization, it&#8217;ll take ~2-4 iterations for the agent to learn the rule and apply it with confidence next time. Simpler patterns, like a recurring SaaS subscription, click faster. Ambiguous ones, like a vendor that sometimes bills for travel and sometimes for services, stay in review longer on purpose. <\/p>\n<p>For error flagging, the agent can either 1) flag a document to be reviewed if it doubts certain fields (categorization, date, amounts, etc.) or 2) ask for context to decide on the correct categorization. At any time, you can request that your documents be retroactively reclassified.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Really useful too for entrepreneurs, where bookkeeping requires alot of discipline.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dannyheng\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dannyheng<\/a>&nbsp;Yes! Many entrepreneurs use Receiptor AI to keep the same discipline, but with much less time spent on manually chasing and managing their receipts<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>agent mode for bookkeeping is the right unlock and also where &#8220;agentic&#8221; actually has to mean something. for chat copilots the worst case is a bad sentence. for autonomous bookkeeping the worst case is a misclassified deduction that an auditor catches three years later.<\/p>\n<\/p>\n<p>real question is what does agent mode do when it&#8217;s not sure. does it pause for a human, queue the ambiguous one for review, or guess and flag? that decision rule is the whole product. good luck on the launch.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@thenameisarian\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@thenameisarian<\/a>&nbsp;100% agree with you Mustafa, we really believe that agentic AI applies perfectly to the bookkeeping use case. <\/p>\n<p>To answer your question, the AI agent will flag a document if it is unsure of something: a misleading date, some weird amounts that don&#8217;t add up, or any edge cases. Also, in certain cases where it needs more context (for the categorization or to apply certain labels), it will ask you for some context, whether on the app or on mobile (if you enable it)<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch guys! <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@thisiskp_\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@thisiskp_<\/a>&nbsp;Thanks KP, really appreciate your support!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@thisiskp_\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@thisiskp_<\/a>&nbsp;thank you so much, KP! I&#8217;ve reached out on X, I&#8217;d love to pick your brain on something if you have a minute<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Does it support multiple languages and currencies?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#3<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/4XBT2KCNTOUDKC\" class=\"app-title\">ClinePass<\/a><\/p>\n<div class=\"one-liner\">Run the best open-weights models in Cline<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">293<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>ClinePass\u662f\u4e00\u4e2a\u9762\u5411Cline\u5f00\u53d1\u73af\u5883\u7684\u8ba2\u9605\u670d\u52a1\uff0c\u901a\u8fc7\u6bcf\u67089.99\u7f8e\u5143\u7684\u7edf\u4e00\u8d39\u7528\uff0c\u8ba9\u5f00\u53d1\u8005\u65e0\u9700\u7ba1\u7406\u591a\u4e2aAPI\u5bc6\u94a5\u548c\u8ba1\u8d39\u9875\u9762\uff0c\u5373\u53ef\u5728\u4ee3\u7406\u5f0f\u7f16\u7a0b\u5de5\u4f5c\u6d41\u4e2d\u65e0\u7f1d\u8c03\u7528GLM\u3001DeepSeek\u3001Kimi\u7b49\u591a\u4e2a\u9876\u7ea7\u5f00\u6e90\u6743\u91cd\u7f16\u7801\u6a21\u578b\uff0c\u5e76\u4eab\u53d72-5\u500d\u7684\u6807\u51c6API\u901f\u7387\u9650\u5236\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/67de3676-5b97-4092-8f86-b09f96214235.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8eb22e49-0834-4ee4-aff9-e2c907a58f56.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/dd340f3d-1d95-4544-82ac-2d39722244fc.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/b97af309-512b-4ba2-8d6e-95fde383a942.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/7f777d88-03d5-45b5-b60b-71d973bee06d.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/bkRbFAPLGYM\"><source src=\"https:\/\/youtu.be\/bkRbFAPLGYM\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">Development<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u7f16\u7801\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u5f00\u6e90\u6a21\u578b\u805a\u5408<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u8ba2\u9605\u670d\u52a1<\/span><br \/>\n            <span class=\"tag\">\u4ee3\u7406\u5f0f\u7f16\u7a0b<\/span><br \/>\n            <span class=\"tag\">IDE\u6269\u5c55<\/span><br \/>\n            <span class=\"tag\">CLI\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u6a21\u578b\u8def\u7531<\/span><br \/>\n            <span class=\"tag\">\u5de5\u4f5c\u6d41\u81ea\u52a8\u5316<\/span><br \/>\n            <span class=\"tag\">Cline\u751f\u6001<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u6574\u5408\u591a\u4e2a\u6a21\u578bAPI\u7684\u4fbf\u5229\u6027\u548c\u56fa\u5b9a\u8ba2\u9605\u6a21\u5f0f\uff0c\u907f\u514d\u4e86\u6309token\u8ba1\u8d39\u7684\u5fc3\u7406\u8d1f\u62c5\u3002\u6838\u5fc3\u7591\u95ee\u96c6\u4e2d\u5728\uff1a\u662f\u5426\u53ef\u5728\u4e00\u4e2a\u4f1a\u8bdd\u5185\u6df7\u5408\u4e0d\u540c\u6a21\u578b\uff08\u5982\u89c4\u5212\u7528\u5f3a\u6a21\u578b\u3001\u6267\u884c\u7528\u8f7b\u6a21\u578b\uff09\uff1b\u7cfb\u7edf\u5728\u9ad8\u8d1f\u8f7d\u65f6\u5982\u4f55\u964d\u7ea7\uff08\u6392\u961f\u8fd8\u662f\u9759\u9ed8\u5931\u8d25\uff09\uff1b\u6570\u636e\u9690\u79c1\u53ca\u4ee3\u7406\u5982\u4f55\u5904\u7406\uff1b\u4ee5\u53ca\u65b0\u6a21\u578b\u4ece\u53d1\u5e03\u5230\u7eb3\u5165\u670d\u52a1\u7684\u901f\u5ea6\u3002\u591a\u6570\u7528\u6237\u5e0c\u671b\u624b\u52a8\u9009\u62e9\u6a21\u578b\u800c\u975e\u81ea\u52a8\u8def\u7531\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                ClinePass\u7684\u806a\u660e\u4e4b\u5904\u5728\u4e8e\uff0c\u5b83\u6ca1\u6709\u53bb\u548cVSCode Copilot\u3001Cursor\u8fd9\u7c7b\u201c\u5168\u5bb6\u6876\u201d\u6b63\u9762\u7ade\u4e89\uff0c\u800c\u662f\u7cbe\u51c6\u5207\u5165\u4e86Cline\u751f\u6001\u4e2d\u4e00\u4e2a\u975e\u5e38\u5177\u4f53\u4e14\u75db\u82e6\u7684\u73af\u8282\u2014\u2014\u5f00\u6e90\u6a21\u578b\u7684\u7ba1\u7406\u4e0e\u8c03\u7528\u6469\u64e6\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ece\u8bc4\u8bba\u770b\uff0c\u7528\u6237\u6700\u4e70\u8d26\u7684\u4e0d\u662f\u6a21\u578b\u672c\u8eab\uff0c\u800c\u662f\u201c9.99\u7f8e\u5143\u5305\u6708\u6d88\u706d\u4e86\u6309token\u8ba1\u8d39\u7684\u7126\u8651\u201d\u548c\u201c\u4e0d\u7528\u518d\u5728DeepSeek\u3001GLM\u3001Kimi\u7684API\u5bc6\u94a5\u548c\u8d26\u5355\u95f4\u6765\u56de\u5207\u6362\u201d\u3002\u8fd9\u5176\u5b9e\u6293\u4f4f\u4e86\u5f53\u4e0bAI\u7f16\u7a0b\u5de5\u5177\u7684\u4e00\u4e2a\u6838\u5fc3\u77db\u76fe\uff1a\u5f00\u53d1\u8005\u6e34\u671b\u4f7f\u7528\u5f00\u6e90\u6a21\u578b\u7684\u7075\u6d3b\u6027\u548c\u6210\u672c\u4f18\u52bf\uff0c\u4f46\u591a\u4f9b\u5e94\u5546\u7684\u7ba1\u7406\u6210\u672c\u548c\u4e0d\u786e\u5b9a\u6027\uff0c\u6070\u6070\u627c\u6740\u4e86\u5f00\u53d1\u8005\u5728\u81ea\u4e3b\u4ee3\u7406\u4efb\u52a1\u4e2d\u6240\u9700\u7684\u201c\u957f\u7a0b\u601d\u8003\u201d\u548c\u201c\u653e\u624b\u5c1d\u8bd5\u201d\u3002ClinePass\u901a\u8fc7\u4e00\u4e2a\u7b80\u5355\u7684\u8ba2\u9605\u548c\u7ecf\u6d4e\u6fc0\u52b1\uff082-5\u500d\u901f\u7387\u9650\u5236\uff09\uff0c\u5b9e\u9645\u4e0a\u662f\u5728\u5e2e\u52a9\u7528\u6237\u505a\u51fa\u201c\u4fe1\u4efb\u8dc3\u8fc1\u201d\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u7136\u800c\uff0c\u771f\u6b63\u8003\u9a8c\u4ef7\u503c\u7684\u5e76\u975e\u5b9a\u4ef7\uff0c\u800c\u662f\u5176\u4f5c\u4e3a\u201c\u5f00\u6e90\u6a21\u578b\u96c6\u7ebf\u5668\u201d\u7684\u6280\u672f\u627f\u8bfa\u3002\u7528\u6237\u5c16\u9510\u5730\u6307\u51fa\u4e86\u5f00\u6e90\u6a21\u578b\u5728\u957f\u4efb\u52a1\u4e2d\u7684\u201c\u7d2f\u79ef\u6027\u52a3\u5316\u201d\u95ee\u9898\uff0c\u4ee5\u53ca\u201c\u4efb\u52a1\u89d2\u8272\u6df7\u7528\u201d\u7684\u9700\u6c42\u3002ClinePass\u76ee\u524d\u9009\u62e9\u8ba9\u7528\u6237\u624b\u52a8\u9009\u62e9\u6a21\u578b\uff0c\u56de\u907f\u4e86\u667a\u80fd\u8def\u7531\u8fd9\u4e00\u6280\u672f\u96be\u9898\uff0c\u8fd9\u65e2\u662f\u4e00\u79cd\u52a1\u5b9e\u7684\u201c\u6700\u5c0f\u53ef\u884c\u4ea7\u54c1\u201d\u7b56\u7565\uff0c\u4e5f\u53ef\u80fd\u6210\u4e3a\u5176\u6269\u5c55\u6027\u7684\u5929\u82b1\u677f\u3002\u5982\u679c\u672a\u6765\u4e0d\u80fd\u5b9e\u73b0\u57fa\u4e8e\u4efb\u52a1\u590d\u6742\u5ea6\u7684\u6a21\u578b\u81ea\u52a8\u7f16\u6392\u4e0e\u4f18\u96c5\u964d\u7ea7\uff0c\u90a3\u4e48\u201c\u6574\u5408\u201d\u7684\u4ef7\u503c\u4f1a\u5927\u6253\u6298\u6263\uff0c\u5b83\u6700\u7ec8\u53ef\u80fd\u53ea\u4f1a\u662f\u4e00\u4e2a\u201c\u66f4\u4fbf\u5b9c\u7684API\u4ee3\u7406\u201d\uff0c\u800c\u975e\u4e00\u4e2a\u63d0\u5347\u5f00\u53d1\u8005\u4f53\u9a8c\u7684\u667a\u80fd\u4e2d\u95f4\u5c42\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ece\u957f\u8fdc\u770b\uff0cClinePass\u63d0\u4f9b\u4e86SDK\uff0c\u5141\u8bb8\u5f00\u53d1\u8005\u5c06\u4ee3\u7406\u80fd\u529b\u5d4c\u5165\u5230CI\/CD\u7b49\u81ea\u6709\u5de5\u4f5c\u6d41\u4e2d\uff0c\u8fd9\u6bd4\u5355\u7eaf\u5356\u8ba2\u9605\u66f4\u5177\u60f3\u8c61\u7a7a\u95f4\u3002\u5b83\u7684\u771f\u6b63\u4ef7\u503c\u4e0d\u5728\u4e8e\u201c\u5356\u6a21\u578b\u201d\uff0c\u800c\u5728\u4e8e\u201c\u5b9a\u4e49\u4e00\u5957\u5173\u4e8e\u5f00\u6e90\u6a21\u578b\u5728\u4ee3\u7406\u5f0f\u7f16\u7a0b\u4e2d\u7684\u9009\u7528\u3001\u7f16\u6392\u548c\u95ed\u73af\u7684\u6700\u4f73\u5b9e\u8df5\u201d\u3002\u5982\u679c\u53ea\u6ee1\u8db3\u4e8e\u505a\u201c\u4e8c\u9053\u8d29\u5b50\u201d\uff0c\u90a3\u5f88\u5feb\u5c31\u4f1a\u88ab\u66f4\u6fc0\u8fdb\u7684\u5b9a\u4ef7\u6216\u66f4\u81ea\u52a8\u5316\u7684\u5de5\u5177\u66ff\u4ee3\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">ClinePass<\/span>\n                <\/div>\n<div class=\"comment-content\">ClinePass gives Cline users one $9.99\/month subscription for top open-weight coding models like GLM, Kimi, DeepSeek, and more. Use powerful models inside Cline with 2\u20135x standard API rate limits, without juggling provider accounts, API keys, billing pages, or model availability. Built for developers who want Cline\u2019s agentic coding workflow with a simpler, faster open-model stack.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>\ud83d\udc4b Hey Product Hunt,<\/p>\n<p>I\u2019m Saoud, founder of Cline.<\/p>\n<p><strong>What we\u2019re launching today\ud83d\ude80<\/strong><\/p>\n<p>Cline is built to be the best agent harness for open-weights coding models. Today, we\u2019re launching ClinePass: a $9.99\/month subscription that gives developers low-cost access to top open coding models across Cline\u2019s CLI and IDE Extension.<\/p>\n<p>Try ClinePass for $1.99\/month at<a href=\"https:\/\/cline.bot\/product-hunt\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"> https:\/\/cline.bot\/product-hunt<\/a> (discount available only for the next 15 days)<\/p>\n<p>We recommend you to use ClinePass together with Cline CLI: install via npm i -g cline on your terminal!<\/p>\n<p><strong>Why ClinePass\u2753<\/strong><\/p>\n<p>Open models are getting seriously good for coding. They\u2019re becoming more capable, more flexible, and often much more cost-effective for real development workflows. But using them well is still harder than it should be.<\/p>\n<p>The challenge is twofold: open models are spread across providers, accounts, and API keys, and even after setup, developers still have to figure out which models are actually good for agentic coding, which ones hold up across long-running tasks, and which harness brings out their strengths in real development workflows. Heard about GLM 5.2 but not sure where to try it? Trying to keep up with Kimi, DeepSeek, MiniMax, Mimo, and every new coding model release? Want to know which ones actually perform well inside an agent, not just on a benchmark?<\/p>\n<p>That\u2019s why we built ClinePass: ClinePass gives you simple access to leading open-weights coding models, directly inside Cline\u2019s agentic development workflow.<\/p>\n<p><strong>What you get with ClinePass&nbsp;<\/strong><\/p>\n<p>\ud83d\udd37 Access to best-in-class open-weights coding models<br \/>\ud83d\udd37 Models curated, tested, and benchmarked for agentic coding<br \/>\ud83d\udd37 $9.99\/month for reliable access with 2-5x API rate limits (to be clear: we are trying our best to explore what we can afford to offer here, and some of those pricing\/limits are subject to change and we will keep it transparent with the community)<br \/>\ud83d\udd37 Use it across Cline\u2019s IDE Extension and CLI<br \/>\ud83d\udd37 Models included: GLM 5.2, Kimi K2.7-Code, Kimi K2.6, Deepseek-v4-pro, Deepseek-v4-flash, Minimax-M3, Mimo-v2.5, MiMo-V2.5-Pro, (more to come!)<br \/>\ud83d\udd37 No lock-in: keep using any providers and models with Cline<\/p>\n<p><strong>Where we\u2019re headed \u2728<\/strong><\/p>\n<p>We see this as another step toward a more open, flexible, and developer-controlled future for AI coding. Developers should be able to use the models they want, inside the workflow they already trust, without being locked into one provider or one closed system.<\/p>\n<p>We\u2019re excited to share ClinePass with the Product Hunt community today and would love your feedback!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>7<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the $9.99 flat unlock for cline plus open weights is the right counter to per-token paranoia. once you stop watching the meter the agent can actually think for ten more seconds instead of being told to be brief. that changes what people let an agent attempt.<\/p>\n<\/p>\n<p>curious how rate-limiting works once a model has a slow day. soft-degrade to a smaller model in the pool, or just queue? for autonomous workflows the worst behavior is silent failure to complete.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>6<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@thenameisarian\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@thenameisarian<\/a>&nbsp;Congrats on launching ClinePass! \ud83d\udd25 One subscription for DeepSeek, Kimi, and GLM inside Cline with boosted rate limits is a game-changer. No more API key babysitting. Upvoted and congrats to the team!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>Thats a great point Knowing what happens when capacity is tight is just as important as the pricing model Personally I&#8217;d much rather see a clean queue ir a fallback option than have an agent quietly stall without telling me.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@thenameisarian\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@thenameisarian<\/a>&nbsp;we don&#8217;t soft downgrade, we have a lot of different providers for those open weights models and they load balance to ensure a good throughput<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The flat price is the headline, but the thing I&#8217;d actually stress-test is long-horizon behavior. Open weights like GLM or DeepSeek can match frontier on a single completion and still drift over a 40-tool-call autonomous run, re-reading the same file or losing the original task. We hit exactly that building agent loops, the failure was never one bad call, it was accumulation across many. Does ClinePass let you mix models inside one session, say a stronger one for planning and a cheaper one to execute, or are you on one model per run?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dipankar_sarkar\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dipankar_sarkar<\/a>&nbsp;we would love to have you try out on Cline, where we tuned the agent performance specifically and it&#8217;s the best agent harness across open source agents. We&#8217;ve seen it performing really well in long horizon tasks.<\/p>\n<p>ClinePass let you mix models inside one session for sure, you can choice different model for planning and executing.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I love cline! used it for a year now! Is this new subscription you can eat tokens? or is it pay as you go? Its not fully clear from the description. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>Thank you <a href=\"https:\/\/www.producthunt.com\/@conduit_design\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"conduit_design\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@conduit_design<\/a> really appreciate you using Cline for so long.<\/p>\n<p>ClinePass is a subscription, not pay-as-you-go. You pay a fixed monthly price and get access to some of the best open-weight models inside Cline.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>For me personally I think that the consolidation angle is the real win. There is so much friction in juggling separate DeepSeek, GLM, and Kimi keys and billing pagesthat hits at the worst possible moment. One sub that just works is a clean pitch. One question: with all these under one harness, does ClinePass route to the best model per task, or do I pick per request? Curious especially whether you can split roles in a single run since that&#8217;s usually where long-horizon agent runs hold up or fall apart.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@david_vilalta\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@david_vilalta<\/a>&nbsp;absolutely agree!<\/p>\n<p>we don&#8217;t route model automatically &#8211; we give users the best freedom to choose right now<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the consolidation play here is underrated &#8211; managing separate DeepSeek, GLM, and Kimi API keys, rate limits, and billing pages is friction that burns time at exactly the wrong moment (middle of a coding session). $9.99 to have one thing that just works is a clean value prop. curious whether there&#8217;s any intelligent routing under the hood &#8211; like if DeepSeek hits capacity does it silently fall back to GLM, or does the user explicitly choose which model runs?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;&#8220;the consolidation play here is underrated&#8221; exactly!<\/p>\n<p>we don&#8217;t silently fall back to any model. Users choose their own model and we respect the choices.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The &#8220;no juggling provider accounts \/ API keys \/ billing pages&#8221; angle is the real pain point here. Two questions: with GLM, Kimi and DeepSeek under one sub, does ClinePass auto-route to the best model per task, or do I pick per request? And are the 2\u20135x rate limits relative to hitting the providers directly, or to Cline&#8217;s default tier?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@hung_tran_from_notebook_os\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@hung_tran_from_notebook_os<\/a>&nbsp;Right now, user choose their own model which one to use. The 2-5x is relative to hitting providers directly.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>An agent that can work across the editor terminal and browser feels much closer to how developers actually work day to day.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>Thanks for the support \ud83d\ude42<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats for your launch! The SDK, IDE extension, and CLI options caught my eye. Are these meant to be equivalent surfaces for the same autonomous coding agent, or do you expect different use cases for each one?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@crystalmei\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@crystalmei<\/a>&nbsp;hey Xuefei! Renee from Cline team here. Those are for different developer performance and we want to be open choices for everyone. IDE extensions are typically more for hands-on developers, while CLI suits for more autonomous use cases, and SDK is what developer used to build their own agents!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The data path is what I&#8217;d want pinned down before routing my agent stack through this \u2014 when ClinePass proxies my prompts and codebase context to GLM\/Kimi\/DeepSeek, is it pass-through with zero retention, or do you log requests for benchmarking and abuse handling? And are you hosting these open weights on your own infra or reselling third-party inference, since that decides where my code actually lands and what the latency floor looks like.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Open-weights in Cline is interesting for the same reason local tools keep coming back: cost control and privacy both matter once agents become daily infrastructure. The practical test is whether teams can swap models without breaking their workflow.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@krekeltronics\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@krekeltronics<\/a>&nbsp;exactly!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the SDK option is what separates this from most coding agents. being able to embed an autonomous coding agent into your own tools and workflows instead of only using it through an IDE is a much bigger unlock. most teams don&#8217;t just need an agent that writes code, they need one that fits into their existing CI pipeline and review process. how does cline handle the review step? does it wait for approval before committing or can you set it to auto-commit on low risk changes?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@shubham4real\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@shubham4real<\/a>&nbsp;you can easily setup any review agents using our SDK &#8211; the goal&#8217;s to allow any developer build their own agents easily.<\/p>\n<p>You can find a lot of examples here: <a href=\"https:\/\/github.com\/cline\/cline\/tree\/main\/sdk\/examples\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/cline\/cline\/tree\/main\/sdk\/examples<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The open-weights angle here is underrated &#8211; when you&#8217;re working on anything where you can&#8217;t send your code to an external API, being able to run a capable model locally through Cline changes everything. Curious how the performance compares to the hosted models for actual coding tasks &#8211; do the open-weights models hold up on complex refactors or is there still a noticeable gap?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@omri_ben_shoham1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@omri_ben_shoham1<\/a>&nbsp;it&#8217;s getting really good now, especially as some models making a breakthrough like GLM5.2<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The curated-and-benchmarked-for-agentic-coding angle is what stands out to me here, more than the flat price. New open models drop constantly, so how fast does a model typically go from release to being added to the pool once it clears your benchmarks? Wondering how a GLM 5.2 or a fresh Kimi release makes it in.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@zain_sheikh\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@zain_sheikh<\/a>&nbsp;the team tries really hard to keep Cline as the best harness for open weights model!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>running open-weights in a coding agent is the part most people still sleep on. which ones actually hold up on real agentic tasks, not just benchmarks?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the bring-your-own open-weights angle is the right bet \u2014 not being locked to one provider&#8217;s pricing or privacy terms is underrated. how&#8217;s GLM\/Kimi holding up vs frontier models on the harder agentic tasks?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@sabber_ahamed\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sabber_ahamed<\/a>&nbsp;it&#8217;s getting really good now! Try it out with Cline yourself and let us know<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Great to see this live! Which use case are you seeing the most demand for?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The actual pain point this solves is real, juggling API keys and billing across five different open-weight providers just to try models in Cline is annoying enough that I&#8217;d pay $9.99 just to skip that step, separate from whether the rate limits matter.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ansari_adin\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ansari_adin<\/a>&nbsp;we want to make things absolutely easy!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#4<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/RZKKIOKZE7VJEC\" class=\"app-title\">VisibAI<\/a><\/p>\n<div class=\"one-liner\">Are you in AI answers? Find out and fix it in minutes<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">236<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>VisibAI\u901a\u8fc7\u8de86\u4e2aAI\u5e73\u53f0\u81ea\u52a8\u5316\u67e5\u8be2\uff0c\u5e2e\u52a9\u4f01\u4e1a\u68c0\u6d4b\u5728ChatGPT\u7b49AI\u63a8\u8350\u4e2d\u7684\u53ef\u89c1\u6027\uff0c\u5e76\u63d0\u4f9b\u53ef\u6267\u884c\u7684\u6280\u672f\u4e0e\u5185\u5bb9\u4fee\u590d\u65b9\u6848\uff0c\u89e3\u51b3\u54c1\u724c\u5728AI\u641c\u7d22\u65f6\u4ee3\u201c\u770b\u4e0d\u89c1\u81ea\u5df1\u3001\u6293\u4e0d\u4f4f\u673a\u4f1a\u201d\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e05e1269-79da-4877-ae5d-a3efa1da5051.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/251087d1-e773-4471-8113-d83774f71a31.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7f97ee4e-1d18-4643-b9bc-0f4592cd080b.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7bbb926c-a540-4600-9d44-17b8a460707b.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f27d6d51-6345-4c56-9852-adf454f16307.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/b912479c-dba9-487e-bf3c-501a77a28059.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/MT9hAYITA74\"><source src=\"https:\/\/youtu.be\/MT9hAYITA74\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Marketing<\/span><br \/>\n            <span class=\"tag\">SEO<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u53ef\u89c1\u6027\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u751f\u6210\u5f0f\u641c\u7d22\u5f15\u64ce\u4f18\u5316<\/span><br \/>\n            <span class=\"tag\">\u54c1\u724c\u76d1\u6d4b<\/span><br \/>\n            <span class=\"tag\">\u7ade\u54c1\u5206\u6790<\/span><br \/>\n            <span class=\"tag\">AI\u5185\u5bb9\u4f18\u5316<\/span><br \/>\n            <span class=\"tag\">\u767d\u6807SaaS<\/span><br \/>\n            <span class=\"tag\">\u6280\u672fSEO<\/span><br \/>\n            <span class=\"tag\">\u6b27\u76df\u6570\u636e\u5408\u89c4<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u8ba4\u53ef\u4ea7\u54c1\u4ef7\u503c\uff0c\u4f46\u6307\u51fa\u4e09\u5927\u6838\u5fc3\u95ee\u9898\uff1a1\uff09\u514d\u8d39\u5ba1\u8ba1\u4ec5\u8dd1\u5355\u5e73\u53f0\u5bfc\u81f4\u7ed3\u679c\u7247\u9762\uff0c\u4e14\u7efc\u5408\u8bc4\u5206\u4e0e\u96f6\u63d0\u53ca\u77db\u76fe\uff0c\u9700\u62c6\u5206\u6280\u672f\u5206\u4e0e\u5f15\u7528\u5206\uff1b2\uff09LLM\u7ed3\u679c\u975e\u786e\u5b9a\u6027\u4e0b\uff0c\u5355\u6b21\u5feb\u7167\u4e0d\u5177\u4ee3\u8868\u6027\uff0c\u9700\u591a\u8f6e\u91c7\u6837\uff1b3\uff09\u591a\u6b21\u51fa\u73b0\u5ba1\u8ba1\u5931\u8d25\u9519\u8bef\uff0c\u4e25\u91cd\u5f71\u54cd\u9996\u4f53\u9a8c\u3002\u521b\u59cb\u4eba\u79ef\u6781\u56de\u5e94\u5e76\u627f\u8bfa\u6539\u8fdb\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                VisibAI\u5207\u4e2d\u4e86\u4e00\u4e2a\u771f\u5b9e\u4e14\u5feb\u901f\u81a8\u80c0\u7684\u76f2\u533a\u2014\u2014\u5f53\u7528\u6237\u5df2\u4ece\u201c\u8c37\u6b4c\u641c\u201d\u8f6c\u5411\u201c\u95eeAI\u201d\uff0c\u7edd\u5927\u591a\u6570\u4f01\u4e1a\u5374\u8fde\u81ea\u5df1\u5728AI\u56de\u7b54\u4e2d\u201c\u5b58\u4e0d\u5b58\u5728\u201d\u90fd\u6ca1\u6709\u611f\u77e5\u3002\u8fd9\u4e2a\u5b9a\u4f4d\u7cbe\u51c6\u4e14\u6709\u5546\u4e1a\u4ef7\u503c\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u4ea7\u54c1\u5f53\u524d\u72b6\u6001\u79bb\u201c\u597d\u7528\u201d\u8fd8\u6709\u660e\u663e\u8ddd\u79bb\u3002\u6838\u5fc3\u95ee\u9898\u6709\u4e09\uff1a\n            <\/p>\n<p class=\"ai-content\">\n                1. **\u6570\u636e\u6709\u6548\u6027\u7684\u81f4\u547d\u6f0f\u6d1e**\u3002LLM\u975e\u786e\u5b9a\u6027\u662f\u60ac\u5728\u6240\u6709\u201cAI\u53ef\u89c1\u6027\u201d\u5de5\u5177\u5934\u4e0a\u7684\u8fbe\u6469\u514b\u5229\u65af\u4e4b\u5251\u3002\u5355\u6b21API\u5feb\u7167\u5373\u7ed9\u51fa0-100\u8bc4\u5206\uff0c\u7528\u6237\u5b8c\u5168\u65e0\u6cd5\u533a\u5206\u201c\u4eca\u5929\u4e0d\u63a8\u8350\u201d\u4e0e\u201c\u4ece\u6765\u4e0d\u63a8\u8350\u201d\u7684\u5dee\u5f02\u3002\u521b\u59cb\u4eba\u63d0\u51fa\u7684\u201c\u591a\u6b21\u626b\u63cf\u53d6\u5747\u503c\u201d\u53ea\u662f\u7f13\u5175\u4e4b\u8ba1\uff0c\u771f\u6b63\u7684\u89e3\u6cd5\u9700\u8981\u5efa\u7acb\u7f6e\u4fe1\u533a\u95f4\u5e76\u544a\u77e5\u7528\u6237\u201c\u6ce2\u52a8\u8303\u56f4\u201d\uff0c\u800c\u975e\u4e00\u4e2a\u7cbe\u786e\u7684\u4f2a\u88c5\u6570\u5b57\u3002\n            <\/p>\n<p class=\"ai-content\">\n                2. **\u514d\u8d39\u5ba1\u8ba1\u7684\u4f53\u9a8c\u707e\u96be**\u3002\u591a\u4e2a\u7528\u6237\u53cd\u9988\u5ba1\u8ba1\u5931\u8d25\u3001\u6570\u636e\u4e22\u5931\u3001\u6df7\u6dc6\u7684\u8bc4\u5206\u903b\u8f91\u8ba9\u4eba\u4e00\u5934\u96fe\u6c34\u3002\u514d\u8d39\u6d4b\u672c\u662f\u83b7\u5ba2\u6f0f\u6597\u7684\u8d77\u70b9\uff0c\u5374\u6210\u4e86\u529d\u9000\u7528\u6237\u7684\u95e8\u69db\u3002\u5c24\u5176\u503c\u5f97\u5546\u69b7\u7684\u662f\uff1a\u5c06\u201c\u6280\u672f\u5c31\u7eea\u5ea6\u201d\u4e0e\u201c\u5b9e\u9645\u88ab\u5f15\u7528\u201d\u5408\u4e3a\u4e00\u4e2a\u5206\u6570\uff0c\u5728\u96f6\u63d0\u53ca\u65f6\u663e\u793a46\u5206\uff0c\u8fd9\u662f\u6570\u5b57\u6b3a\u8bc8\u7684\u5ba1\u7f8e\u2014\u2014\u7528\u6237\u51ed\u76f4\u89c9\u5c31\u80fd\u611f\u5230\u4e0d\u5766\u8bda\u3002\n            <\/p>\n<p class=\"ai-content\">\n                3. **\u4ef7\u503c\u9501\u5b9a\u5728\u201c\u8bca\u65ad\u201d\uff0c\u800c\u975e\u201c\u9a71\u52a8\u529b\u201d**\u3002VisibAI\u5728\u201c\u53d1\u73b0\u95ee\u9898\u201d\u73af\u8282\u505a\u5f97\u5f88\u5145\u5206\uff0c\u4f46\u201c\u63a8\u52a8\u6539\u5584\u201d\u7684\u53cd\u9988\u73af\u4ecd\u7136\u592a\u5f31\u3002\u7528\u6237\u6700\u60f3\u77e5\u9053\u7684\u662f\u201c\u6211\u6539\u4e86\u4ee5\u540e\uff0cAI\u4f1a\u4e0d\u4f1a\u8bb0\u4f4f\u6211\u201d\uff0c\u800c\u8fd9\u6070\u6070\u662f\u5b83\u7ed9\u4e0d\u51fa\u7684\u3002\u521b\u59cb\u4eba\u627f\u8ba4\u201c\u6211\u4eec\u6ca1\u6709Search Console\u201d\uff0c\u8fd9\u662f\u4e8b\u5b9e\uff0c\u4e5f\u662f\u4ea7\u54c1\u76ee\u524d\u6700\u5927\u7684\u5929\u82b1\u677f\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u771f\u6b63\u6709\u4ef7\u503c\u7684\u201cAI\u53ef\u89c6\u6027\u201d\u5de5\u5177\uff0c\u5e94\u8be5\u662f\u80fd\u5145\u5f53\u4f01\u4e1a\u5728AI\u751f\u6001\u4e2d\u7684\u8d28\u63a7\u5c42\u3002VisibAI\u6709\u6b63\u786e\u7684\u57fa\u56e0\uff0c\u4f46\u9700\u8981\u66f4\u4e25\u82db\u7684\u6570\u636e\u5de5\u7a0b\u548c\u5bf9\u7528\u6237\u5fc3\u7406\u7684\u656c\u754f\u2014\u2014\u5426\u5219\u5b83\u5c06\u6ca6\u4e3a\u201c\u53c8\u4e00\u4e2a\u770b\u8d77\u6765\u5f88\u9177\u4f46\u7528\u4e00\u6b21\u5c31\u6254\u201d\u7684\u4ea7\u54c1\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">VisibAI<\/span>\n                <\/div>\n<div class=\"comment-content\">VisibAI shows whether your business appears when people ask AI for recommendations, and helps you fix it. It runs queries across six AI platforms (ChatGPT, Perplexity, Claude, Gemini, Mistral, You.com), scores your visibility 0-100, reveals which competitors show up instead, and returns a prioritized fix list plus ready-to-ship fix files and a branded report. One-off audits or monthly tracking. White-label for agencies. EU-hosted and GDPR-native.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi everyone \ud83d\udc4b<\/p>\n<\/p>\n<p>I&#8217;m Francesco, founder of VisibAI. I spent years selling SaaS across Europe and watched search behaviour move from Google to AI assistants.<\/p>\n<\/p>\n<p>VisibAI tells you whether ChatGPT, Perplexity, Claude and other AI assistants recommend your business when someone asks for one. Then it shows you exactly how to improve.<\/p>\n<\/p>\n<p><strong>The problem:<\/strong> for years everyone optimised for Google. Now people open ChatGPT or Perplexity and just ask for a recommendation, and most businesses have no idea whether they show up in those answers.<\/p>\n<\/p>\n<p><strong>The solution:<\/strong> a score on its own does not help, so we give you the full benchmark. VisibAI runs automated queries across six AI platforms (ChatGPT, Perplexity, Claude, Gemini, Mistral, <a href=\"http:\/\/You.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">You.com<\/a>) and shows you:<\/p>\n<ul>\n<li>\n<p>a visibility score from 0 to 100<\/p>\n<\/li>\n<li>\n<p>how often you are mentioned or cited<\/p>\n<\/li>\n<li>\n<p>which competitors appear instead of you<\/p>\n<\/li>\n<\/ul>\n<p>Then it tells you how to fix it: a prioritised fix list, ready-to-use fix files (robots.txt, schema, FAQ), and an AI action plan.<\/p>\n<\/p>\n<p><strong>The benefit:<\/strong> you stop guessing. You see where you stand against competitors in AI answers, and you get concrete steps to climb. Start with a free audit, run a one-off report with no subscription, or go monthly for ongoing tracking and competitor monitoring.<\/p>\n<\/p>\n<p><strong>Who it is for:<\/strong><\/p>\n<ul>\n<li>\n<p>Brands that want to be the name AI recommends in their category<\/p>\n<\/li>\n<li>\n<p>Agencies, who can white-label the whole platform under their own subdomain and brand, and run it for every client<\/p>\n<\/li>\n<\/ul>\n<p>You can try it here: <a href=\"https:\/\/getvisibai.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/getvisibai.com<\/a><\/p>\n<\/p>\n<p>Built in the EU and GDPR-native, which matters to a lot of the teams we work with.<\/p>\n<\/p>\n<p>Happy to answer any questions \ud83d\ude4c<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>7<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@francesco2689\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@francesco2689<\/a>&nbsp;Congrats on launching VisibAI! \ud83d\udd25 Knowing whether your brand shows up in AI answers across 6 major platforms is a massive competitive advantage. Upvoted and excited to see this take off!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@francesco2689\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@francesco2689<\/a>&nbsp;how do you handle non determinism in llm answers like if chatgpt gives a different answer on next refresh, does it average the score?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">It&#8217;s a great solution.. however some confusions are there, I ran the free audit and got a score of 46, with all zeros on all queries run. So it&#8217;s not clear where the score came from, my assumption was some comparisons in the query resulted into it, but it wasn&#8217;t clear in the scoring.. also the compitition mapping was way off, still that&#8217;s understandable as we are still to create data on it.. <\/p>\n<p>now we are a deterministic engine enterprise focused startup so I understand data reaching AI platforms would take time.. still askOdin.app get it&#8217;s limited organic traffic from founders engagement via social platforms, maybe the traffic is lesser than most consumer startups, still I think the system wasnt able to pinpoint that either..<\/p>\n<p>Still overall I liked the offering, thank you, keep bettering.. good wishes..<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@dhirajwohra <\/p>\n<p>Thank you, this is really useful feedback, and you\u2019ve put your finger on a real weakness in how we present things.<\/p>\n<p>On the score: you\u2019re right that it\u2019s not clear, and that\u2019s on us. The 46 is not coming from your AI mentions, those were genuinely zero on the free run. It comes from the technical-readiness half of the score (site structure, schema, crawlability, trust signals). We currently fuse \u201cis your site built to be cited\u201d and \u201care you actually being cited\u201d into one number, which makes a 46 next to a wall of zeros look broken. <\/p>\n<p>We\u2019re splitting those into two separate scores precisely so this stops being confusing.<\/p>\n<p>On why the zeros: the free audit only runs ChatGPT, on generic category queries. For a deterministic, enterprise-focused engine like Odin, the big consumer category terms won\u2019t surface you, and a single-engine slice can\u2019t see the founder-led social traffic you mention. A multi-platform run (Perplexity, Claude, Gemini) on queries closer to how your actual buyers search would give a far truer read, the free slice is the narrowest, harshest view.<\/p>\n<p>On competitor mapping being off: fair, and noted. For a novel category it leans on weaker signals. Custom competitors on the paid tiers fix most of that.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>checking visibility across six AI engines is smart, the answers diverge way more than people expect. is the fix list stuff you ship to your site, or mostly content nudges?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@reallynattu <\/p>\n<p>Both, and they split cleanly. The shippable stuff is concrete: robots.txt rules to unblock AI crawlers, JSON-LD schema, an llms.txt file, FAQ markup, fixing content that\u2019s hidden behind JS so crawlers can actually read it. We generate those files for you.<\/p>\n<p>The content nudges are the slower, higher-impact half: getting cited in the sources these engines actually pull from (G2, Reddit, comparison pages, category listicles). That\u2019s where most of the real visibility gains come from, since the engines lean on third-party mentions more than your own site copy.<\/p>\n<p>So the site fixes are the quick wins you ship in an afternoon, and the content\/citation work is the compounding play.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The hard part with a visibility score like this is LLM nondeterminism \u2014 ask ChatGPT the same recommendation query twice and you can get different brands back. Do you sample each query multiple times and average into the 0-100, or is it a single-shot snapshot? And are the six platforms hit through official APIs or logged-in scraping, since that changes whether the result matches what a real signed-in user actually sees.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@noctis06\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@noctis06<\/a>&nbsp;thank you for your comment!<\/p>\n<p>Sampling: single-shot snapshot today, not averaged. You&#8217;re right that non-determinism means one run isn&#8217;t gospel, so multi-sampling and averaging is high on my list. For now we re-scan over time to smooth the noise.<\/p>\n<p>Access: official APIs, not scraping. Reproducible and clean, but it&#8217;s the API model&#8217;s answer, not a pixel-perfect match to a signed-in app session. Treat it as a consistent proxy for the model&#8217;s knowledge.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The interesting part isn&#8217;t the score, it&#8217;s knowing what to do next and whether it actually worked. How do you decide which queries to test so they reflect real buyer behavior? And once a team implements the fixes, what&#8217;s the feedback loop? AI visibility doesn&#8217;t have a Search Console equivalent, so I&#8217;m curious how you help teams know they&#8217;re actually improving. Congrats on the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jared_salois\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jared_salois<\/a>&nbsp;two great questions =)<\/p>\n<p>Queries: we generate them from your industry, sub-category and buyer context, then split by funnel stage (awareness, consideration, decision) so they mirror how real buyers actually ask, not just branded terms. You can edit or add your own before the run.<\/p>\n<p>Feedback loop: you&#8217;re right there&#8217;s no Search Console for this, so we are it. We re-scan over time and show which queries flipped and on which engine after you apply fixes. The clean before\/after attribution is the piece I&#8217;m actively tightening right now, since proving it worked is the whole point.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Nice work shipping this! What made you decide to build this now?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>Thanks<a href=\"https:\/\/www.producthunt.com\/@borrellbr\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@borrellbr<\/a>&nbsp; =) <\/p>\n<p>Timing, mostly. Buyers have quietly shifted from googling to asking ChatGPT, Perplexity and Claude for recommendations, and businesses have no idea whether they show up in those answers. SEO tools can&#8217;t see it. <\/p>\n<p>That blind spot is brand new and growing fast, so it felt like the right moment to build the thing that measures it and tells you what to fix.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>AEO is still very opaque for many people, so this tool seems like it could be quite helpful. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jordangray\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jordangray<\/a>&nbsp;Thanks, that opacity is exactly the gap we&#8217;re trying to close. <\/p>\n<p>Most people can&#8217;t even see whether AI mentions them, let alone why. The goal is to make it concrete: here&#8217;s your score per engine, here&#8217;s who gets named instead of you, and here&#8217;s what to fix. <\/p>\n<p>Happy to answer anything if you give it a run =)<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>It honestly hadn&#8217;t hit me how much people now ask an assistant before they ever open a search bar. Thanks a lot for this product Francesco!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This looks like a really fantastic product.  I just filled out the detailed form to run an audi for my site but it immediately failed.  See attached screenshot.  I checked the console logs to see if there was any technical feedback but I don&#8217;t see any.  I still want to try your product because it sounds fantastic.  Let me know if there is something I should do differently or if there is a way for me to share technical feedback like checking console logs.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/4294e73b-dd48-4650-b45e-b3832cc54e37.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@justinbaker9<br \/>\nJust replied to another comment, everything should work now. Happy to assist personally and give you any further assistance here or via DM &#8211; <a href=\"mailto:francesco@getvisibai.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">francesco@getvisibai.com<\/a><\/p>\n<p>Thank you again<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Really like the framing here. The thing I keep running into with AI visibility is that &#8220;not showing up&#8221; almost always traces back to plain old ranking and authority. From what I&#8217;ve seen the answer engines mostly pull from pages already sitting in the top 20 for a query, so a page down at position 40 can be perfectly structured and still never get cited.<\/p>\n<p>Does VisibAI separate those two cases? As in &#8220;you&#8217;re invisible because your content isn&#8217;t quotable&#8221; vs &#8220;you&#8217;re invisible because you&#8217;re not ranking high enough to be in the pool yet.&#8221; The fix is completely different depending on which one it is, and that&#8217;s the part I&#8217;d personally find most useful.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@sablekithq <\/p>\n<p>today VisibAI tells you that you\u2019re missing from a query and who got cited instead, and it splits results by engine, which gets you partway. The grounded engines (Perplexity, Google\u2019s AI) do live retrieval where your ranking\/authority point bites hardest, you\u2019re not even in the candidate pool. <\/p>\n<p>The memory-mode engines lean on trained knowledge, where brand presence and being written-about matters more than today\u2019s SERP position. So the per-platform spread is already a soft signal: weak everywhere usually means an authority\/pool problem; fine on the memory engines but missing on the retrieval ones points more at quotability and freshness.<\/p>\n<p>What it does not do yet is label it for you in plain terms: \u201cyou\u2019re not in the pool\u201d vs \u201cyou\u2019re in the pool but not quotable.\u201d That\u2019s exactly the diagnosis layer I want to build, and it\u2019s the natural pairing with the source-tracking work (seeing which page\/rank the engine actually pulled). Once we know the cited source\u2019s position, we can tell you whether the gap is a ranking job or a content\/structure job, instead of handing you a generic fix list.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Sounds interesting but my free test audit failed. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@metin_54 <\/p>\n<p>Fixed \u2705 Audits are running clean again. That was a provider quota ceiling under launch traffic, not a product bug, and it\u2019s cleared now. If your test failed earlier, please give it another go, it\u2019ll work this time. Thanks for bearing with me, real-time launch debugging is half the fun \ud83d\ude05<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">@metin_54 \ud83d\ude02<\/p>\n<p>you\u2019re following the whole debugging saga live, respect \ud83d\ude04 Good catch, that one\u2019s a different beast: not the provider this time, it\u2019s my own rate-limiter being too conservative under launch traffic. <\/p>\n<p>Give it another go now and it should complete (free audits are landing fine on my side this second).<\/p>\n<p>If you need anything else or further information, just comment and always available via email as well &#8211; <a href=\"mailto:francesco@getvisibai.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">francesco@getvisibai.com<\/a><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>GEO is going to be as important as SEO was 10 years ago and most businesses haven&#8217;t even started thinking about it. the multi-platform scoring across chatgpt, claude, perplexity etc is smart because your visibility can vary wildly between them. one model might recommend you and another might not even know you exist. curious how fast the fix recommendations actually move the needle. with traditional SEO you&#8217;re waiting weeks for changes to reflect. how quickly do AI models pick up on changes you make to your site or content?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@shubham4real\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@shubham4real<\/a>&nbsp;Love the SEO parallel, that&#8217;s exactly the bet.<\/p>\n<p>Two speeds on the fixes: technical changes (schema, llms.txt, crawler access) show up in days to weeks on the grounded engines that retrieve live, like Perplexity and Google AI. <br \/>The base ChatGPT\/Claude models only shift when they retrain, so that side is slow. <br \/>The bigger lever, getting cited in the sources they pull from (Reddit, G2, listicles), is a slower build but it&#8217;s what sticks. We re-scan over time so you see which change moved which engine, instead of guessing.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Smart idea. Which AI platform tends to show the widest visibility gaps for most businesses?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dhiraj_patel5\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dhiraj_patel5<\/a>&nbsp;Thanks for your question =)<\/p>\n<p>Perplexity and Google&#8217;s AI tend to show the widest gaps. <\/p>\n<p>They lean on fresh, citation-heavy sources, so if your content isn&#8217;t structured to be cited, you drop out fast. ChatGPT is more forgiving because it leans on broader trained knowledge, so a brand can look fine there and be near invisible on the engines pulling live sources. <\/p>\n<p>That split is exactly why the per-platform view matters more than one blended score.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">It looked promising, but after testing it and filling the entire form it gave me an \u201cAudit failed\u201d error, and I had to start all over again since the data entered in the form was not saved\u2026<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">Hi @umberto_abbatantuono \ud83d\udc4b <\/p>\n<p>sorry, that\u2019s a genuinely bad first run and the lost form data makes it worse. Thank you for flagging it instead of just bouncing.<\/p>\n<p>Can you drop the URL you were auditing (here or DM &#8211; <a href=\"mailto:francesco@getvisibai.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">francesco@getvisibai.com<\/a>)? <\/p>\n<p>I\u2019ll trigger the run on my side, confirm it completes, and send you the result directly so you\u2019re not blocked.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The &#8216;are you in AI answers&#8217; question is one I&#8217;ve been thinking about a lot lately &#8211; SEO taught us to optimize for search engines, and now there&#8217;s this whole new discovery layer in ChatGPT, Perplexity, Claude that most tools don&#8217;t even measure. What sources does this check &#8211; just the big three, or does it also cover the AI integrations in search like Bing and Google AI overviews?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@omri_ben_shoham1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@omri_ben_shoham1<\/a>&nbsp;<\/p>\n<p>Spot on, this layer sits on top of SEO where nobody&#8217;s measuring.<\/p>\n<p>We cover six engines directly: ChatGPT, Perplexity, Claude, Gemini, Mistral and <a href=\"http:\/\/You.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">You.com<\/a> (Perplexity and <a href=\"http:\/\/You.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">You.com<\/a> retrieve live, closest to that search-plus-AI surface). Google AI Overviews and Bing\/Copilot pull differently, so I&#8217;m not claiming them until I can measure them properly, both are on the roadmap.<\/p>\n<p>Have you already run your free audit on <a href=\"https:\/\/getvisibai.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/getvisibai.com<\/a> ? If you&#8217;d like a multi-platform audit or a competitor comparison, I&#8217;d be happy to set you up with a one month trial.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The competitor-citation angle is what makes this more than a vanity score for me \u2014 seeing who AI names instead of you points straight at the content gap. Since the six engines pull from different sources with different recency windows, do you surface which specific source got cited (a Reddit thread, a listicle, a competitor&#8217;s page) so the fix list can target that, or is it focused on the on-site schema\/llms.txt side?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@zain_sheikh <\/p>\n<p>That\u2019s the exact line I care about too, a vanity score is useless, \u201chere\u2019s who AI names instead of you\u201d is a to-do list.<\/p>\n<p>Straight answer on where we are today: we surface the competitor that got named, per query, plus the on-site fixes (schema, llms.txt, crawler access, FAQ). What we don\u2019t yet expose is the specific source the engine cited, the actual Reddit thread vs listicle vs competitor page.<br \/>\nThat\u2019s deliberately the next build, because you\u2019re right that it\u2019s the difference between \u201cwrite about this\u201d and \u201cgo get mentioned on this exact page.\u201d<br \/>\nIt matters even more given your recency-window point: a Reddit thread cited by Perplexity this week is a totally different fix than a 2-year-old listicle ChatGPT leans on. Surfacing the source per engine is what makes the fix list targetable instead of generic.<\/p>\n<p>It\u2019s high on the roadmap and clearly several of you want it most, so it\u2019s moving up. Appreciate you sharpening the case for it.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The visibility gap in AI-generated answers is real and most brands have no idea they&#8217;re invisible. Excited to see tooling for this, does VisibAI track citation sources across different LLMs or just ChatGPT\/Perplexity?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">Hi @productrambler \ud83d\udc4b <\/p>\n<p>Thanks, and yes, \u201cthey have no idea\u201d is the whole reason this exists.<\/p>\n<p>Coverage isn\u2019t just ChatGPT\/Perplexity, we run across the major answer engines including Claude and Google\u2019s AI too, so you see your visibility per platform, not one blended guess. <\/p>\n<p>Today we surface which competitors get named instead of you in those answers.<\/p>\n<p>Source-level citation tracking (the exact pages an engine pulls from, per LLM) is the next big piece I\u2019m building, since Reddit and a handful of sources punch way above their weight in what AI cites. <\/p>\n<p>If that\u2019s the angle you care most about, tell me which engines matter to you and I\u2019ll factor it into how I prioritize it.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the six-platform sweep is the right call &#8211; visibility on ChatGPT vs Perplexity vs Claude can look completely different because each pulls from different sources with different recency windows. a score of 60 on one and 20 on another tells you something specific and actionable. the part I&#8217;m most curious about: when you show &#8220;how to fix it&#8221; &#8211; is that primarily schema\/llms.txt\/content changes, or are you also surfacing the competitor citations that are showing up instead of you? knowing who&#8217;s displacing you in AI answers is probably the most valuable signal for figuring out what content you&#8217;re actually missing.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@galdayan <\/p>\n<p>You nailed why the per-platform split matters, a 60 on one engine and 20 on another isn\u2019t noise, it\u2019s a content\/recency signal you can act on.<\/p>\n<p>On the fix side: both, and you\u2019re right that the competitor angle is the sharper one. We surface the technical layer (schema, llms.txt, AI-crawler access, FAQ), but we also show which competitors are getting named instead of you, per query. That\u2019s the part that tells you what content you\u2019re actually missing, if a rival keeps showing up on \u201cbest X for Y\u201d and you don\u2019t, that\u2019s your gap, made concrete.<\/p>\n<p>Where I want to push next is going one level deeper: not just who\u2019s displacing you, but which source the engine pulled them from, so the fix moves from \u201cwrite about this topic\u201d to \u201cyou need presence on this specific page\/platform.\u201d That\u2019s the build I\u2019m prioritizing.<br \/>\nSounds like you\u2019d have a sharp opinion on it, would welcome it.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I like that this starts with a one-time audit instead of asking teams to commit to another monthly SEO tool. My main trust question is reproducibility: does the report show the exact prompts, platform, timestamp, and raw answers behind the score so a team can verify what changed after applying fixes?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">Hi @novamaker01 \ud83d\udc4b <\/p>\n<p>Exactly why I led with the one-off, thanks for naming it.<\/p>\n<p>Honest state: every run is timestamped, stores the raw AI answers behind each query, and shows which queries you appeared in per platform, so the score traces back to real responses, not a black box.<\/p>\n<p>The piece I\u2019m finishing: a clean prompt-by-platform grid and a proper before\/after diff, so when you re-run after fixes you see exactly which queries flipped and where. The diff logic\u2019s already in the engine, I just need to wire the UI. It\u2019s near the top of the list because verification is the whole point.<\/p>\n<p>Run one and I\u2019ll pull your raw per-query results by hand, would value your eye on whether the format hits your team\u2019s bar.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@novamaker01\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@novamaker01<\/a>&nbsp;hey, i went with the one-time angle and agree that it&#8217;s better that way. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey, <br \/>Congrats for the launch.<\/p>\n<p>Quick feedback on my first test so far:<\/p>\n<ul>\n<li>\n<p>30% of my traffic is coming from GEO\/AEO <\/p>\n<\/li>\n<li>\n<p>We&#8217;ve done quite extensive work on that and continue<\/p>\n<\/li>\n<\/ul>\n<p>But from what your app tell us: score 49\/100<\/p>\n<p>And everything is 0% , not passed, etc.<br \/>I don&#8217;t believe that nothing can be found about us and we get 49\/100 score. How is this related?<\/p>\n<p>Like I literally didn&#8217;t learn anything from it and will not be willing to go further or even paid for that yet.<\/p>\n<p>Hope that&#8217;s helping you guys improve!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">Hi @florent_duthoit<\/p>\n<p>Really appreciate this, this is exactly the kind of feedback that makes the product better, so thank you for taking the time.<\/p>\n<p>You\u2019ve spotted a real UX gap. <\/p>\n<p>There are two different things on that screen and we\u2019re not separating them clearly enough:<\/p>\n<p>\t1.\tThe 0-100 score = how often the AI engines actually name you in answers to buyer-intent queries. Yours at 49 means you\u2019re showing up in a fair chunk of them.<\/p>\n<p>\t2.\tThe checks showing 0%\/not passed = technical optimization items (schema, AI-crawler access, llms.txt, etc.). Those are \u201cheadroom,\u201d not \u201cnobody can find you.\u201d You can rank well today and still have those unticked.<\/p>\n<p>So the two aren\u2019t contradictory, but the way we present them makes it look like they are. <\/p>\n<p>That\u2019s on us to fix, and you\u2019ve just bumped it up the list.<\/p>\n<p>That said: if you\u2019re already pulling 30% from GEO\/AEO, a 49 sounds low to me, and I\u2019d genuinely like to dig into your specific run. Can you DM me <a href=\"mailto:francesco@getvisibai.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">francesco@getvisibai.com<\/a> the URL you audited (or drop it here)? <\/p>\n<p>I\u2019ll pull the raw query results and tell you exactly which queries you appeared in and which you didn\u2019t. <\/p>\n<p>If something\u2019s miscounting, I want to find it.<\/p>\n<p>Either way, thanks for stress-testing it. This is more useful than ten \u201cnice launch\u201d comments \ud83d\ude4f<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@florent_duthoit\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@florent_duthoit<\/a>&nbsp;i&#8217;d appreciate the feedback as well!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#5<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/XHBXGWG3FHAQJZ\" class=\"app-title\">PMB<\/a><\/p>\n<div class=\"one-liner\">Stop re-explaining your project to AI coding agents<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">196<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>PMB \u901a\u8fc7\u672c\u5730 SQLite \u6570\u636e\u5e93\u4e3a Claude Code\u3001Cursor \u7b49 AI \u7f16\u7801\u4ee3\u7406\u63d0\u4f9b\u6301\u4e45\u5316\u9879\u76ee\u8bb0\u5fc6\uff0c\u89e3\u51b3\u4ee3\u7406\u6bcf\u6b21\u65b0\u4f1a\u8bdd\u90fd\u5fd8\u8bb0\u4e0a\u4e0b\u6587\u3001\u9700\u91cd\u590d\u89e3\u91ca\u9879\u76ee\u51b3\u7b56\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7de2bbe5-fd6c-44a6-a488-6c1450ba3fd2.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/b05a67ce-6dc4-4b88-95e2-2b963690a6d8.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/d5e03e89-c8d7-4bc4-8e57-dfb5154d1d41.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/cda5bb7c-1277-4604-9dcb-0553db7cbb0a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/49edfed8-0864-495f-94d0-60b62ed0f980.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8a960751-7638-4396-bf22-4293f577eb2c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a4c7fc08-86c5-4ac7-b1d2-0f34cb641843.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f4acd4f8-f174-4c88-bb12-3c734f411155.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e2c134ae-5efa-4e33-ad20-aa1b574ac1d8.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/a414e40e-2a3a-4a84-a210-0bee00eaa5a7.gif?auto=format\" data-video-url=\"https:\/\/www.loom.com\/share\/65522de49d094c71ba6953b813e5b0a6\"><source src=\"https:\/\/www.loom.com\/share\/65522de49d094c71ba6953b813e5b0a6\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Open Source<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">GitHub<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u7f16\u7801\u4ee3\u7406\u8bb0\u5fc6<\/span><br \/>\n            <span class=\"tag\">\u672c\u5730\u4f18\u5148<\/span><br \/>\n            <span class=\"tag\">MCP\u534f\u8bae<\/span><br \/>\n            <span class=\"tag\">SQLite<\/span><br \/>\n            <span class=\"tag\">\u5f00\u6e90<\/span><br \/>\n            <span class=\"tag\">\u79bb\u7ebf\u53ef\u7528<\/span><br \/>\n            <span class=\"tag\">\u4e0a\u4e0b\u6587\u6ce8\u5165<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u9879\u76ee\u77e5\u8bc6\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u8bb0\u5fc6\u6eaf\u6e90<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u8ba4\u53ef\u201c\u91cd\u590d\u89e3\u91ca\u201d\u75db\u70b9\u771f\u5b9e\uff0c\u4f46\u96c6\u4e2d\u8d28\u7591\uff1a\u8bb0\u5fc6\u81ea\u52a8\u5199\u5165\u4e0e\u624b\u5de5\u63a7\u5236\u7684\u8fb9\u754c\uff1b\u65b0\u65e7\u51b3\u7b56\u51b2\u7a81\u65f6\u5982\u4f55\u907f\u514d\u6b7b\u6570\u636e\u8bef\u5bfc\u4ee3\u7406\uff1b\u4e0a\u4e0b\u6587\u6ce8\u5165\u5bf9\u5de5\u4f5c\u7a97\u53e3\u7684\u6d88\u8017\uff1b\u591a\u4ee3\u7406\/\u591a\u9879\u76ee\u573a\u666f\u4e0b\u7684\u8bb0\u5fc6\u9694\u79bb\u4e0e\u540c\u6b65\u3002\u5efa\u8bae\u589e\u52a0\u4f1a\u8bdd\u540e\u8bb0\u5fc6\u5dee\u5f02\u62a5\u544a\u53ca\u51b2\u7a81\u81ea\u52a8\u68c0\u6d4b\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                PMB \u7cbe\u51c6\u547d\u4e2d\u4e86 AI \u7f16\u7801\u4ee3\u7406\u9886\u57df\u7684\u6838\u5fc3\u4f53\u9a8c\u65ad\u5c42\u2014\u2014\u4f1a\u8bdd\u7ea7\u9057\u5fd8\u3002\u5176\u201c\u672c\u5730 SQLite + MCP \u534f\u8bae\u201d\u7684\u67b6\u6784\u9009\u62e9\u582a\u79f0\u660e\u667a\uff1a\u96f6\u4e91\u4f9d\u8d56\u3001\u96f6 API \u5bc6\u94a5\u3001\u96f6\u8bfb\u53d6\u7ea7 LLM \u8c03\u7528\uff0c\u65e2\u89c4\u907f\u4e86\u654f\u611f\u4ee3\u7801\u5916\u6cc4\u7684\u5b89\u5168\u7ea2\u7ebf\uff0c\u53c8\u5254\u9664\u4e86\u7b2c\u4e09\u65b9\u8bb0\u5fc6\u670d\u52a1\u7684\u5ef6\u8fdf\u548c\u6210\u672c\uff0c\u5c06\u8bb0\u5fc6\u4e3b\u6743\u5b8c\u5168\u4ea4\u8fd8\u5f00\u53d1\u8005\u3002\u5f00\u6e90\u7684\u57fa\u8c03\u548c\u79bb\u7ebf\u4f18\u5148\u7684\u8bbe\u8ba1\uff0c\u5bf9\u4e8e\u8ffd\u6c42\u53ef\u63a7\u6027\u7684\u4e13\u4e1a\u56e2\u961f\u800c\u8a00\uff0c\u5177\u5907\u5929\u7136\u7684\u4fe1\u4efb\u57fa\u7840\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u7136\u800c\uff0c\u4ea7\u54c1\u5f53\u524d\u7684\u201c\u667a\u80fd\u201d\u6df1\u5ea6\u4ecd\u663e\u6d45\u5c42\u3002\u6700\u5927\u7684\u9690\u60a3\u5728\u4e8e\u201c\u8bb0\u5fc6\u6c61\u67d3\u201d\u3002\u8bc4\u8bba\u4e2d\u53cd\u590d\u63d0\u53ca\u7684\u201c\u51b3\u7b56\u53cd\u8f6c\u201d\u4e0e\u201c\u591a\u9879\u76ee\u9694\u79bb\u201d\u95ee\u9898\uff0c\u66b4\u9732\u4e86\u5176\u6838\u5fc3\u7f3a\u9677\uff1aPMB \u76ee\u524d\u7684\u53ec\u56de\u673a\u5236\uff08BM25+\u5411\u91cf+\u5b9e\u4f53\u56fe\uff09\u672c\u8d28\u4e0a\u662f\u57fa\u4e8e\u76f8\u5173\u6027\u7684\u52a0\u6743\u641c\u7d22\uff0c\u800c\u975e\u771f\u6b63\u7684\u72b6\u6001\u611f\u77e5\u3002\u5f53\u4e00\u4e2a\u5df2\u88ab\u9006\u8f6c\u5411\u5bfc\u51b3\u7b56\u4ecd\u56e0\u6587\u672c\u76f8\u4f3c\u6027\u800c\u9ad8\u5c45\u53ec\u56de\u699c\u65f6\uff0c\u5b83\u4e0d\u4ec5\u4e0d\u662f\u52a9\u624b\uff0c\u53cd\u800c\u4f1a\u6210\u4e3a\u8bef\u5bfc\u4ee3\u7406\u7684\u5b9a\u65f6\u70b8\u5f39\u3002\u5f00\u53d1\u8005\u671f\u5f85\u7684\u662f\u4e00\u79cd\u201c\u56e0\u679c\u578b\u201d\u800c\u975e\u201c\u5173\u8054\u578b\u201d\u8bb0\u5fc6\uff0c\u5373\u7cfb\u7edf\u80fd\u7406\u89e3\u201c\u8fd9\u6761\u89c4\u5219\u5df2\u88ab\u65b0\u51b3\u7b56\u53d6\u4ee3\uff0c\u4e0d\u5e94\u518d\u88ab\u5f15\u7528\u201d\uff0c\u800c\u975e\u4ec5\u4ec5\u9760\u65f6\u6548\u8870\u51cf\u548c\u624b\u52a8\u5f52\u6863\u6765\u8865\u6551\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u6b64\u5916\uff0c\u4ea7\u54c1\u58f0\u79f0\u7684\u201c\u8bda\u5b9e\u5f71\u54cd\u8ffd\u8e2a\u201d\u76ee\u524d\u66f4\u591a\u505c\u7559\u5728\u627f\u8bfa\u9636\u6bb5\u3002\u5982\u4f55\u5c06\u201c\u8bb0\u5fc6\u88ab\u53ec\u56de\u201d\u8fd9\u4e00\u4e8b\u4ef6\uff0c\u4e0e\u201c\u4ee3\u7406\u6700\u7ec8\u91c7\u53d6\u4e86\u6b63\u786e\u884c\u52a8\u201d\u5f62\u6210\u53ef\u5ba1\u8ba1\u7684\u56e0\u679c\u5173\u7cfb\u94fe\uff0c\u662f\u8ba9\u8bb0\u5fc6\u529b\u4ece\u201c\u7f13\u5b58\u201d\u5347\u7ea7\u4e3a\u201c\u667a\u80fd\u201d\u7684\u5173\u952e\u4e00\u6b65\u3002\u5982\u679c PMB \u4e0d\u80fd\u89e3\u51b3\u201c\u9519\u8bef\u8bb0\u5fc6\u201d\u6bd4\u201c\u65e0\u8bb0\u5fc6\u201d\u66f4\u5177\u7834\u574f\u6027\u8fd9\u4e00\u6096\u8bba\uff0c\u5b83\u5c06\u957f\u671f\u56f0\u5728\u201c\u9ad8\u7ea7\u7b14\u8bb0\u672c\u201d\u7684\u89d2\u8272\u91cc\uff0c\u96be\u4ee5\u6210\u4e3a\u5f00\u53d1\u8005\u771f\u6b63\u4fe1\u8d56\u7684\u201c\u9879\u76ee\u526f\u9a7e\u9a76\u201d\u3002\u5176\u4ef7\u503c\u5929\u82b1\u677f\uff0c\u53d6\u51b3\u4e8e\u5b83\u80fd\u5728\u201c\u8bb0\u201d\u548c\u201c\u5fd8\u201d\u4e4b\u95f4\uff0c\u5efa\u7acb\u8d77\u591a\u5f3a\u7684\u903b\u8f91\u79e9\u5e8f\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">PMB<\/span>\n                <\/div>\n<div class=\"comment-content\">PMB gives Claude Code, Cursor, Codex and Zed persistent project memory through MCP. It stores decisions, lessons, goals, recent work, project facts and docs in one SQLite workspace on your disk. No cloud, no API keys, no LLM call on the read path. It is open source, offline-first, inspectable\/exportable, with a local dashboard and honest impact tracking so you can see which memories actually help.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hi Product Hunt &#8211; I built PMB because every coding agent I used had the same frustrating loop: brilliant in one session, forgetful in the next. I kept re-explaining decisions, constraints, file history, and &#8220;please never do X in this repo again.&#8221;<\/p>\n<p>PMB makes that memory local and durable. It stores decisions, lessons, goals, recent work and facts in one SQLite workspace on your disk, then feeds the relevant context back to Claude Code, Cursor, Codex, Zed and other MCP-aware agents. No cloud, no API keys, no hosted memory service.<\/p>\n<p>The design evolved from &#8220;just save notes for the agent&#8221; into typed memory: lessons are treated as rules, goals as goals, and project work as recent activity. The thing I care about most now is trustworthy memory: what should an agent remember automatically, what should it ignore, and how do we show when memory is actually helping?<\/p>\n<p>Would love feedback from people using coding agents every day. Fastest try: pip install pmb-ai &amp;&amp; pmb setup<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>8<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@oleksiijko\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@oleksiijko<\/a>&nbsp;If the underlying app or input shape changes, how does PMB | Local-first memory for AI fail before it quietly gives me a bad result?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@oleksiijko\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@oleksiijko<\/a>&nbsp;Congrats on launching PMB! \ud83d\udd25 Ending &#8220;AI amnesia&#8221; with a local, zero-token MCP memory layer for Cursor, Claude Code, and Zed is exactly what dev workflows need. Upvoted!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@oleksiijko\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@oleksiijko<\/a>&nbsp;Excited to give this a try. Best of luck with the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The core problem is real. Every new context window means re-explaining architecture decisions, naming conventions, the reason you made that weird choice in the auth layer three months ago. Curious whether PMB is basically a structured prompt file that lives in the repo, or whether there&#8217;s something more dynamic happening, like the context getting selectively injected based on what part of the codebase the agent is touching. Also wondering how you handle drift, because the project memory that was accurate at week two is often wrong or incomplete by month six, and a stale context file might be worse than no context file.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@fberrez1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@fberrez1<\/a>&nbsp;Great questions &#8211; you&#8217;re pointing at the two things that actually matter here.<\/p>\n<p>On architecture: it&#8217;s the dynamic side, not a prompt file in the repo. PMB is a real store (SQLite) of events, decisions, lessons, facts and a code-entity graph. On each task the agent calls prepare() \/ recall() over MCP, and a hybrid retriever (BM25 + vectors + entity graph, fused) pulls back only the context relevant to what it&#8217;s touching, ranked by relevance and recency &#8211; not a flat dump. Writes are ambient too: decisions and lessons get captured as you work, not hand-maintained.<\/p>\n<p>On drift &#8211; this is the part I think about most, and I agree a stale context file can be worse than none. A few mechanisms:<\/p>\n<ul>\n<li>\n<p>Recency + forgetting-curve decay, so week-two context loses weight over time instead of competing head-on with fresh context.<\/p>\n<\/li>\n<li>\n<p>Corrections override: when you correct the agent, that&#8217;s stored as a high-priority lesson that outranks what it contradicts.<\/p>\n<\/li>\n<li>\n<p>Keyed facts (attribute = value) are latest-wins with the old value archived, so a changed fact is genuinely superseded, not left lying around.<\/p>\n<\/li>\n<li>\n<p>Dedup merges near-identical entries, so &#8220;we decided X&#8221; isn&#8217;t stored five times.<\/p>\n<\/li>\n<\/ul>\n<p>Where it&#8217;s headed: a first-class lifecycle for free-form decisions\/lessons &#8211; explicit active \/ superseded \/ needs-review states, and auto-detecting when a new decision reverses an older one. That&#8217;s clean for keyed facts today, less so for free-text decisions, and it&#8217;s the next thing on the list.<\/p>\n<p>If you want to follow where it goes, here&#8217;s the repo: <a href=\"https:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Every new Claude Code session I spend the first few minutes re-explaining the same architecture decisions. The local-first + MCP approach is the right call, once project memory lives in a third-party cloud it becomes a security conversation for any serious team. The part I&#8217;d want most is the impact tracking that shows which memories actually influenced agent suggestions. Context without attribution is just noise. Look forward to hearing from you.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@frankgebuilder\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@frankgebuilder<\/a>&nbsp;Exactly. The security boundary is a big part of why PMB is local-first: architecture decisions, mistakes, internal constraints, and \u201cplease never do this again\u201d rules are exactly the kind of context teams do not want drifting into a third-party memory layer. And I completely agree on attribution. Memory should not just be injected silently and hoped for the best. PMB already tracks this for lessons: when a lesson is surfaced, it gets a surface_id; later agent actions can be linked back to that surface, and PMB tracks whether it was followed, ignored, or not applicable.<\/p>\n<\/p>\n<p>There is also an \u201cEarned Memory\u201d layer that connects surfaced lessons to outcomes like tests passing, builds, deploys, red-to-green fixes, and churn, so you can see which memories are actually pulling weight.<\/p>\n<p>The next step is expanding that attribution beyond lessons into a fuller per-session influence trail for decisions, facts, goals, and project context. That\u2019s the difference I want PMB to make: not just more context, but accountable context. If memory changes the agent\u2019s behavior, you should be able to see why.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Persistent memory for coding agents is one of those features where \u201cwhat not to remember\u201d matters as much as what to store.<\/p>\n<\/p>\n<p>The part I\u2019d be most curious to see is a small memory diff after each session: new lesson added, old assumption updated, and which memory actually influenced a suggestion.<\/p>\n<\/p>\n<p>That would make it easier to trust local memory instead of treating it like a hidden second prompt. Also helps catch stale project decisions before an agent keeps repeating them.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@grace_lee26\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@grace_lee26<\/a>&nbsp;Completely agree &#8211; &#8220;what not to remember&#8221; is the whole game, and treating memory as an auditable layer rather than a hidden second prompt is exactly the right framing.<\/p>\n<p>The session diff is a great way to get there, and most of the raw material is already in place: every event is session-tagged and timestamped, and the dashboard already tracks which lessons influenced outcomes. What&#8217;s missing is packaging that into a tidy after-session view &#8211; &#8220;here&#8217;s the new lesson, here&#8217;s the assumption that changed, here&#8217;s the memory that shaped this suggestion.&#8221; It&#8217;s a clean thing to build on top of what&#8217;s there, and it does double duty: makes local memory trustable, and surfaces stale decisions before an agent keeps acting on them. Going on the list.<\/p>\n<p>Repo if you want to follow along: <a href=\"https:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>How do you decide what gets written into memory, like is it automatic from chats or only explicit saves?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@karimbenkeroum\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@karimbenkeroum<\/a>&nbsp;Both. An ambient layer auto-captures the work product &#8211; decisions, lessons, corrections (correct the agent and it&#8217;s saved as a high-priority lesson), completed work &#8211; deduped so nothing&#8217;s stored twice. Explicit &#8220;remember this&#8221; is the override for pins, personal facts, or future plans. Default is you shouldn&#8217;t have to tell it.<br \/><a href=\"http:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>But remembering also has a cost. Your front loading context. aka using a lot of the available context before solving a problem. That means your runway to solve it is smaller. How do you get around that? some times you need all the context runway you have \ud83d\ude05<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@conduit_design\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@conduit_design<\/a>&nbsp;Ha, this is the sharpest version of the tradeoff &#8211; and you&#8217;re right, remembering isn&#8217;t free; it competes with the working window.<\/p>\n<p>What keeps it cheap is that PMB is selective retrieval, not a dump. Recall is top-k and relevance-ranked (BM25 + vectors + graph), so what gets injected is a handful of items actually tied to the task &#8211; usually a few hundred tokens, not the whole store. prepare() at the start is a compact summary (counts, a few surfaced lessons, open goals), and recall() is pulled on demand mid-task rather than front-loading everything up front.<\/p>\n<p>The other half: the baseline isn&#8217;t an empty window, it&#8217;s you re-pasting context every session or a fat always-on rules file that sits in context regardless of relevance. PMB swaps &#8220;always-on everything&#8221; for &#8220;on-demand relevant slice,&#8221; so in practice it usually buys back more runway than it spends. And top-k is tunable &#8211; for a context-hungry task you keep the footprint minimal. There&#8217;s still a nonzero floor, I won&#8217;t pretend otherwise, but the whole design is &#8220;smallest slice that changes the answer,&#8221; precisely because runway matters.<\/p>\n<p>Repo if you want to follow along: <a href=\"https:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is exactly the problem that makes AI coding feel like a conversation reset every 5 minutes. You paste context, it forgets, you paste again. The local-first memory angle is smart &#8211; keeping it in the project rather than some cloud sync feels like the right call for sensitive codebases. Does it handle monorepos where different agents might need different context scopes?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@omri_ben_shoham1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@omri_ben_shoham1<\/a>&nbsp;Yeah, &#8220;conversation reset every 5 minutes&#8221; is exactly it.<\/p>\n<p>Two ways today. For hard separation, a workspace isn&#8217;t locked to a git repo &#8211; it&#8217;s just an isolated store &#8211; so you can run one per package\/app in the monorepo, and different agents pointing at different workspaces get genuinely different scopes that can&#8217;t bleed into each other. For a single shared workspace, scoping is by relevance plus the code-entity graph: an agent working in package A surfaces memory tied to the paths and entities it&#8217;s touching, not the whole monorepo. The fully airtight version &#8211; a hard locality gate so an agent only ever sees memory for the subtree it&#8217;s in &#8211; is on the roadmap; today that scoping is emergent from ranking rather than enforced. No dedicated &#8220;monorepo mode&#8221; config yet, but those two primitives cover it in practice.<\/p>\n<p>Repo if you want to follow along: <a href=\"https:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>We run agents across multiple client projects simultaneously, so stale memory leaking into the wrong context is a real operational risk. The keyed fact system handling latest-wins with old value archived covers simple attribute updates, but I&#8217;m curious how it handles decisions that don&#8217;t have a clean key (for exmaple, an architectural direction that got reversed mid-project without an explicit &#8220;we switched from X to Y&#8221;). Does the conflict surface in the dashboard, or does the old decision just keep scoring well on BM25 until someone manually archives it?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>You&#8217;re hitting two distinct things &#8211; isolation and staleness &#8211; so let me split them.<\/p>\n<p>Cross-project leakage is handled by isolation, not ranking. Each project\/client is its own workspace with a separate store: its own SQLite events, vector index, BM25 index and graph under ~\/.pmb\/workspaces\/&lt;id&gt;\/. Recall is scoped to the active workspace, so one client&#8217;s memory can&#8217;t score into another&#8217;s context. Leakage across clients isn&#8217;t a ranking problem here &#8211; it&#8217;s walled off.<\/p>\n<p>The keyless reversed decision is the honest gap, and you called it exactly: an architectural direction that flipped mid-project, no clean key, no explicit &#8220;we switched from X to Y.&#8221; Today there&#8217;s no semantic conflict-detection, so the old decision keeps scoring on BM25 + vectors until recency\/forgetting-curve decay down-weights it, a correction overrides it, or someone archives it. The dashboard shows the timeline and both decisions, but it doesn&#8217;t currently auto-flag that the two conflict &#8211; so worst case, yes, the stale one scores well until it&#8217;s manually archived. I won&#8217;t pretend otherwise.<\/p>\n<p>That&#8217;s precisely the next build: reversal\/conflict detection that links a new decision to the one it supersedes even without a clean key, plus a needs-review surface in the dashboard that flags candidate conflicts for one-click supersede\/archive, so it isn&#8217;t on a human to notice. For a multi-client setup like yours that&#8217;s the difference between trusting it and auditing it constantly, so it&#8217;s high on the list.<\/p>\n<p>Repo if you want to follow where it goes: <a href=\"https:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Local-first append-only is the right base. The thing that actually bit us running a file-based memory like this for our own agents was staleness: the agent confidently acted on a decision that had been reversed two sessions back, because the old event was still sitting on the read path. Append-only sharpens that, since both the decision and its reversal live as events. Does the read path collapse to current state, or can the agent pull a superseded decision and treat it as live?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dipankar_sarkar\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dipankar_sarkar<\/a>&nbsp;You&#8217;ve described the exact failure mode, and you&#8217;re right that append-only sharpens it: the decision and its reversal both live as events, so the read path has to decide which one is &#8220;true.&#8221;<\/p>\n<p>Honest answer, split by type:<\/p>\n<ul>\n<li>\n<p><strong>Keyed facts (attribute = value):<\/strong> the read path collapses to current state. Latest-wins, the prior value is archived off the read path &#8211; the agent gets the live value, not the superseded one.<\/p>\n<\/li>\n<li>\n<p><strong>Explicit corrections:<\/strong> when a reversal comes in as a correction, it&#8217;s stored high-priority and outranks what it contradicts.<\/p>\n<\/li>\n<li>\n<p><strong>Free-text decisions\/lessons:<\/strong> this is the gap. Today there&#8217;s no semantic reversal-detection, so both events stay retrievable. Recency + forgetting-curve decay ranks the newer (reversal) event above the old one, so in practice the fresh one usually surfaces &#8211; but you&#8217;re right that a superseded free-text decision can still be pulled and treated as live in the worst case. I won&#8217;t pretend that&#8217;s fully solved.<\/p>\n<\/li>\n<\/ul>\n<p>That&#8217;s exactly what I&#8217;m building next: a first-class lifecycle (active \/ superseded \/ needs-review) with auto reversal-detection, so the read path collapses free-text decisions to current state the way keyed facts already do &#8211; with the superseded event available only on an explicit history\/time-travel query, not the default read path.<\/p>\n<p>Appreciate you raising the precise version of this &#8211; it&#8217;s the right thing to be hard on.<\/p>\n<p>Repo if you want to follow where it goes: <a href=\"https:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Curious how PMB handles context boundaries in practice \u2014 is it meant to store high-level project docs, repo-specific conventions, current tasks, or some mix of those? <\/p>\n<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@crystalmei\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@crystalmei<\/a>&nbsp;It&#8217;s intentionally a mix of all of those &#8211; the design goal is that you don&#8217;t have to pre-sort it.<\/p>\n<p>In practice: repo-specific conventions land as lessons (&#8220;we use X, never Y&#8221;), architectural direction as decisions, current work as goals\/activity, and higher-level docs as reference\/facts (it can ingest docs and PDFs too). Boundaries between projects are hard: each repo is its own workspace with a separate store, so conventions from one project can&#8217;t bleed into another. Within a project, retrieval pulls the relevant blend for the task at hand &#8211; a convention plus a current goal plus the related decision &#8211; rather than dumping everything. So the boundary isn&#8217;t something you draw by hand; workspaces wall off per repo, and relevance picks the slice per task.<\/p>\n<p>Repo if you want to follow along: <a href=\"https:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The re-explaining loop between sessions is exactly what drives me nuts with Cursor and Claude Code, so local SQLite memory over MCP feels like the right call. How are you deciding what gets stored automatically vs what I have to tell it to remember? congrats on shipping.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@i_sanjay_gautam\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@i_sanjay_gautam<\/a>&nbsp;Thanks! And that loop is exactly what set me off too.<\/p>\n<p>The split is roughly this: an ambient layer captures the work product automatically &#8211; decisions, lessons, corrections (when you correct the agent, that&#8217;s stored as a high-priority lesson), and completed work &#8211; with dedup so the same thing isn&#8217;t stored twice and secrets redacted on write. You don&#8217;t have to narrate any of it. Explicit &#8220;remember this&#8221; is the override: things you want pinned, personal facts, or future intent the agent wouldn&#8217;t infer from the work itself. Default is you shouldn&#8217;t have to tell it &#8211; telling it is for emphasis or for what falls outside the work stream.<\/p>\n<p>Repo if you want to follow along: <a href=\"https:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>memory is the half of agent workflows nobody talks about. every demo shows the magical &#8220;it just knew&#8221; moment but never how it knew. once you ship multiple agents working in the same codebase, memory is the only thing keeping their fights from becoming bugs.<\/p>\n<\/p>\n<p>the part still missing across the space is provenance. memory says &#8220;these are the decisions.&#8221; but who made each one, when, based on what context? without that you eventually get the agent equivalent of &#8220;why is this code here? git blame says steve from 2019.&#8221;<\/p>\n<\/p>\n<p>local plus sqlite is the right call. ship it.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@thenameisarian\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@thenameisarian<\/a>&nbsp;This nails it &#8211; and provenance is exactly the right frontier. PMB already stamps every event with who wrote it (actor\/source), when, and which session it came from, so &#8220;git blame for decisions&#8221; exists at the who\/when level. The harder piece &#8211; tying each decision to the context that produced it &#8211; is what I&#8217;m building toward. And the multi-agent &#8220;fights becoming bugs&#8221; line is painfully accurate.<\/p>\n<p>Appreciate the ship-it. Repo if you want to follow along: <a href=\"https:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Why I built this: every new Claude Code \/ Cursor session I&#8217;d burn the first 10 minutes re-explaining the same things &#8211; which decisions we&#8217;d already made, which directions we&#8217;d tried and ruled out, why the architecture looks the way it does. The agent forgets all of it between sessions, after every model upgrade, every time I switch tools. Teaching it the same lesson for the fifth time (&#8220;we use pnpm, never npm&#8221;) was the most demoralizing part of working with an AI agent.<\/p>\n<p>So I made the memory live locally &#8211; one SQLite file over MCP &#8211; and fed it back automatically <em>before<\/em> the model thinks, instead of hoping it remembers to look. Now it shows up already knowing. No cloud, no API keys, and I can open the dashboard and see exactly what it remembers. That&#8217;s the whole pitch.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The re-explaining problem is genuinely painful. Every new Claude Code session starts with several minutes catching it up on decisions already made, directions already tried, and why the architecture looks the way it does. Having MCP-backed persistent context that retains all of that locally &#8211; no cloud, no API overhead on reads &#8211; is the right shape for this problem. The SQLite approach is smart for anything touching sensitive project details. Curious: how does it handle conflicts if two different agents write to memory simultaneously on the same project?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;Thanks Gal &#8211; and you nailed the shape of the problem. On concurrent writes, same machine \/ same project it&#8217;s safe by construction:<\/p>\n<ul>\n<li>\n<p>The store is <strong>append-only<\/strong> &#8211; every write is a new event with its own ULID, not an in-place edit of a shared row. Two agents writing at once just append two events; neither clobbers the other, so there are no lost updates.<\/p>\n<\/li>\n<li>\n<p>Under the hood SQLite runs in <strong>WAL mode with a 10s busy-timeout<\/strong> (set automatically), so a second writer waits and serializes instead of erroring or corrupting.<\/p>\n<\/li>\n<li>\n<p>The <strong>4-layer dedup<\/strong> then merges near-identical entries after the fact, so you don&#8217;t end up with &#8220;we decided X&#8221; stored twice. For keyed facts (attribute = value) it&#8217;s latest-wins with the old value archived, not overwritten.<\/p>\n<\/li>\n<\/ul>\n<p>The only place real merge conflicts can show up is cross-machine git-sync of a workspace &#8211; that&#8217;s plain git + a WAL checkpoint before commit. On one box, two agents on one project just coexist. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>this solves a real problem. the context re-explanation tax is probably the single biggest friction point in AI-assisted coding right now \u2014 you lose 10-15 minutes at the start of every session just getting the agent back up to speed on decisions you already made.<\/p>\n<\/p>\n<p>curious about the memory graph structure. how does it handle conflicting decisions? like if you stored &#8220;never use ORM&#8221; as a lesson but then later decided to add one for a specific service?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ozandag\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ozandag<\/a>&nbsp;That\u2019s exactly the hard part: memory is only useful if it has scope and authority, not just storage.<\/p>\n<p>PMB already does a few things here. Recall is not a flat keyword search: memories are ranked with multiple signals &#8211; lexical\/vector match, importance, recency, graph\/entity proximity, and follow-through history for lessons. The graph links decisions, lessons, files, projects, and entities, so a newer decision tied to a specific service\/file can win in that context over a broader older rule.<\/p>\n<p>So in your example, \u201cnever use ORM\u201d would be treated as a general lesson. If later we store \u201cuse ORM for this billing service\u201d, that newer and more specific decision should surface for billing-service work because of recency, entity scope, and graph relevance. The older lesson can still be useful elsewhere, but it should not have infinite authority.<\/p>\n<p>The honest answer: PMB already has weighting, scoped recall, and conflict detection for factual state. The next step is making lifecycle explicit for decisions\/lessons too &#8211; active \/ superseded \/ needs-review &#8211; and showing those conflicts in the dashboard instead of hiding them.<\/p>\n<p>The goal is not \u201cremember everything forever\u201d. It\u2019s memory with weight, scope, and aging.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>So if I have a session in Claude, it will have the memory to store the chat from claude and when I  switch to chatgpt or others llms it wil pick up the left over work from claude?<\/p>\n<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@mahir21\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mahir21<\/a>&nbsp;Yes, that\u2019s exactly the idea, with one important nuance: PMB does not just dump the entire raw chat history into memory.<\/p>\n<p>It stores the durable stuff that should survive between sessions: project decisions, lessons, bugs, goals, files touched, constraints, and \u201cdon\u2019t do this again\u201d rules.<\/p>\n<p>So you can work in Claude Code, then later open Codex \/ Cursor \/ another MCP-aware agent connected to the same PMB workspace, and it can pick up the relevant context instead of starting from zero.<\/p>\n<p>For plain ChatGPT, it depends on whether the client has a way to connect to PMB\/MCP. But across MCP-compatible coding agents, yes &#8211; that is the workflow PMB is built for.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the &#8220;no cloud, on your disk&#8221; call is the whole thing for me \u2014 local-first genuinely changes what people will put in their memory. building healthos on the same constraint. how&#8217;s retrieval holding up as the graph grows into thousands of entities?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@sabber_ahamed\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sabber_ahamed<\/a>&nbsp;Exactly. \u201cLocal-first\u201d is not just a privacy feature here, it changes what users are willing to let the agent remember. For retrieval: it\u2019s holding up well so far. My own PMB workspace is already at thousands of entities and tens of thousands of graph connections, and warm recall is still fast because SQLite stays the source of truth, while BM25 + vector search + graph expansion are used as retrieval\/ranking layers. The biggest challenge has not been raw speed, but precision: making sure the agent gets the few memories that matter, not a huge context dump. So PMB is intentionally conservative about what it surfaces, especially for lessons\/rules. HealthOS sounds like a perfect use case for the same constraint btw &#8211; health memory is exactly the kind of data people should not have to put in a cloud just to make it useful.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on shipping! What is next on the roadmap after launch day?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@borrellbr\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@borrellbr<\/a>&nbsp;Thanks! A few things, shaped largely by the questions in this very thread:<\/p>\n<ul>\n<li>\n<p>Memory lifecycle: first-class active \/ superseded \/ needs-review states for decisions, with auto-detection when a newer decision reverses an older one, so stale context loses authority instead of lingering.<\/p>\n<\/li>\n<li>\n<p>Conflict surfacing: a dashboard view showing not just &#8220;this memory helped&#8221; but &#8220;this was skipped because it conflicted with newer evidence,&#8221; plus a per-session memory diff (what was added, updated, and what influenced a suggestion).<\/p>\n<\/li>\n<li>\n<p>Locality-scoped recall: lean harder on the code-entity graph so a decision only surfaces when the file you&#8217;re touching still relates to it.<\/p>\n<\/li>\n<li>\n<p>A reproducible benchmark harness in the repo (with\/without PMB, N runs, tokens + pass\/fail + quality), so the speed and quality claims are verifiable, not trust-me.<\/p>\n<\/li>\n<\/ul>\n<p>On direction: PMB stays local-first and fully open source. I&#8217;m not planning paid features &#8211; if anything ever gets added behind a flag it&#8217;ll only be by explicit request from people who need it, and the core stays free and open for everyone. The goal is a tool you own, not a funnel into a subscription.<\/p>\n<p>Repo: <a href=\"https:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Love the local-first SQLite approach here; keeping project memory on-disk instead of a hosted service is a smart trust boundary, because sensitive architecture decisions and lessons learned never leave your machine.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ilko_kacharov\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ilko_kacharov<\/a>&nbsp;Exactly the intent &#8211; a deliberate trust boundary: architecture decisions and lessons never leave your machine, and secrets are redacted on write. Thanks for getting it.<br \/><a href=\"http:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Everything staying right here on my own machine is the part that lands for me, Oleksii. Repeating myself over and over has quietly been one of my least favorite parts of the day, so this feels like a real relief.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@matthieu_poitrimolt\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@matthieu_poitrimolt<\/a>&nbsp;That &#8220;least favorite part of the day&#8221; line is exactly why I built it. Quietly repeating yourself all day is the thing I wanted gone &#8211; thank you.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Keeping agent memory in one local SQLite file is a clean approach. Re-explaining project decisions across Claude Code, Cursor, and Codex gets old fast, so shared MCP memory could make coding sessions feel much less repetitive.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@farrukh_butt1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@farrukh_butt1<\/a>&nbsp;Thanks &#8211; shared across tools is the whole point: the memory follows you from Claude Code to Cursor to Codex, so you explain a decision once, not once per tool.<br \/><a href=\"http:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<blockquote>\n<p>the &#8220;no LLM call on the read&#8221; part is a nice detail. most memory solutions make an API call every time the agent needs context, which adds latency and cost to every single interaction. storing it in local SQLite and letting the agent pull what it needs without a round trip makes way more sense for coding workflows where speed matters. does it handle memory conflicts though? like when two sessions produce contradicting decisions about the same part of the codebase.<\/p>\n<\/blockquote>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@shubham4real\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@shubham4real<\/a>&nbsp;Thanks &#8211; and you&#8217;ve got the reasoning exactly right: the read path is pure local retrieval, so context costs you milliseconds, not an API call per interaction.<\/p>\n<p>On conflicts: partially. For facts with a clean key it&#8217;s resolved &#8211; latest-wins, old value archived. For two free-text decisions that contradict on the same part of the codebase, it&#8217;s honest-partial today: both are stored as events, recency decay and relevance ranking push the newer one up, but there&#8217;s no semantic detection that says &#8220;these two conflict&#8221; and hard-suppresses the stale one &#8211; so worst case both stay retrievable until one is corrected or archived. The hook for fixing it is already there, though: decisions about the same code cluster on the same entities in the graph, so detecting a conflict on a shared entity and flagging it for supersede\/review is the next build.<\/p>\n<p>Repo if you want to follow along: <a href=\"https:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Boring demo video could have been much much better. Fix it if you want to onboard more customers! Still good product so upvoting \ud83d\ude42<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@divvsaxena\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@divvsaxena<\/a>&nbsp;Fair hit &#8211; the video&#8217;s weak and I know it. Redoing it properly is on the list. Appreciate the honesty, and the upvote anyway \ud83d\ude42<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>PMB\u2019s local SQLite + no read-path LLM claim is the part I\u2019d test first. The hard bit with project memory is not storing more facts; it\u2019s deciding when an old fact should lose authority.<\/p>\n<p>Do you track expiry or conflict per memory item? For example, if a repo switches from REST to GraphQL, I\u2019d want the old REST decision preserved as history but not injected into a fresh coding-agent context unless the current file still touches that path. The dashboard would be more useful if it shows not just \u201cthis memory helped\u201d, but \u201cthis memory was skipped because it conflicted with newer evidence.\u201d<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@tang_weigang\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@tang_weigang<\/a>&nbsp;Please do test it first &#8211; it&#8217;s open source, so you can inspect the SQLite and confirm the read path makes zero network calls. And you&#8217;ve named the real problem: it&#8217;s not storage, it&#8217;s when a fact should lose authority. Today that&#8217;s soft (recency + forgetting-curve decay) plus hard latest-wins for keyed facts, but there&#8217;s no explicit per-item expiry or conflict flag for free-text decisions yet &#8211; so a REST decision after a GraphQL switch loses weight, but isn&#8217;t hard-suppressed.<\/p>\n<p>Both your ideas are spot on and going on the list: locality-scoped authority &#8211; injecting an old decision only if the current file still touches that path &#8211; maps directly onto PMB&#8217;s code-entity graph (today it&#8217;s emergent from ranking, not a hard gate); and the dashboard showing &#8220;skipped because it conflicted with newer evidence,&#8221; not just &#8220;this memory helped,&#8221; is the version that makes it auditable instead of trust-me.<\/p>\n<p>Repo if you want to follow along: <a href=\"https:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@oleksiijko\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"oleksiijko\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@oleksiijko<\/a> &#8211; Very nice. Definitely beats managing multiple .md files locally with skill integration. Will review in more detail, but looks very promising. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@francois_marais_nz\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@francois_marais_nz<\/a>&nbsp;Thanks &#8211; that&#8217;s exactly the itch: replacing the sprawl of hand-maintained .md files with something that captures and retrieves on its own. Enjoy the deeper look, would genuinely value your take after.<br \/><a href=\"http:\/\/github.com\/oleksiijko\/pmb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">github.com\/oleksiijko\/pmb<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#6<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/5MCAKZT73D2NF4\" class=\"app-title\">ReadHere<\/a><\/p>\n<div class=\"one-liner\">Lightweight PDF &#038; EPUB reader in your browser<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">144<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>ReadHere \u662f\u4e00\u6b3e\u7eaf\u6d4f\u89c8\u5668\u7aef\u7684\u8f7b\u91cf\u7ea7 PDF\/EPUB \u9605\u8bfb\u5668\uff0c\u65e0\u9700\u5b89\u88c5\u6ce8\u518c\uff0c\u6587\u4ef6\u672c\u5730\u5b58\u50a8\uff0c\u652f\u6301\u79bb\u7ebf\u9605\u8bfb\u3001\u8de8\u683c\u5f0f\u9ad8\u4eae\u548c\u7b14\u8bb0\uff0c\u89e3\u51b3\u7528\u6237\u5728\u4e0d\u540c\u8bbe\u5907\u95f4\u65e0\u7f1d\u9605\u8bfb\u81ea\u6709\u6587\u6863\u3001\u4e14\u4e0d\u613f\u88ab\u751f\u6001\u7ed1\u5b9a\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/4a103155-6a60-4413-a1b9-1524fb10a268.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a43748fe-0d5e-46ab-a56c-7db40fff8f40.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/47c2a6a4-1adf-4417-9410-b9a043448631.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/d554132e-7d8b-4d35-b7e6-e6cd1ecacb06.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/330d98b0-3ff3-4659-a1db-35799b3302f7.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/5f2c1762-13d2-4f83-b041-2ba49eec5e57.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/9bd91cef-efb4-44d1-bb3d-e593e3aee38a.gif?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/b0acfada-f9ba-49b3-bd22-46b3a325e483.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">eBook Reader<\/span><br \/>\n            <span class=\"tag\">Privacy<\/span><br \/>\n            <span class=\"tag\">Books<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">PDF\u9605\u8bfb\u5668<\/span><br \/>\n            <span class=\"tag\">EPUB\u9605\u8bfb\u5668<\/span><br \/>\n            <span class=\"tag\">\u6d4f\u89c8\u5668\u6269\u5c55<\/span><br \/>\n            <span class=\"tag\">\u79bb\u7ebf\u9605\u8bfb<\/span><br \/>\n            <span class=\"tag\">\u672c\u5730\u4f18\u5148<\/span><br \/>\n            <span class=\"tag\">\u65e0\u8d26\u6237<\/span><br \/>\n            <span class=\"tag\">\u8de8\u5e73\u53f0<\/span><br \/>\n            <span class=\"tag\">\u9ad8\u4eae\u7b14\u8bb0<\/span><br \/>\n            <span class=\"tag\">\u9605\u8bfb\u65e5\u5fd7<\/span><br \/>\n            <span class=\"tag\">\u6587\u4ef6\u7ba1\u7406<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u9ad8\u5ea6\u8ba4\u53ef\u201c\u65e0\u8d26\u6237\u3001\u672c\u5730\u5b58\u50a8\u201d\u7684\u9690\u79c1\u7acb\u573a\u3002\u4e3b\u8981\u5efa\u8bae\uff1a1) \u81ea\u52a8\u8bb0\u5fc6\u9605\u8bfb\u8fdb\u5ea6\uff08\u65ad\u70b9\u7eed\u8bfb\uff09\uff1b2) \u5728\u65e0Wi-Fi\u73af\u5883\u4e0b\uff08\u5982\u98de\u673a\uff09\u4ecd\u53ef\u79bb\u7ebf\u4f7f\u7528\uff1b3) \u660e\u786e\u6807\u6ce8\/\u7b14\u8bb0\u7684\u5b58\u50a8\u65b9\u5f0f\uff08localStorage\/IndexedDB\uff09\u53ca\u6d4f\u89c8\u5668\u6570\u636e\u6e05\u7406\u540e\u7684\u98ce\u9669\uff1b4) \u671f\u5f85Google Drive\u540c\u6b65\u540e\uff0c\u9ad8\u4eae\u548c\u65e5\u8bb0\u80fd\u5426\u5206\u79bb\u540c\u6b65\uff1b5) \u8003\u8651\u7c7b\u4f3cCalibre\u7684\u8bbe\u5907\u95f4\u4e66\u7c4d\u8fc1\u79fb\u529f\u80fd\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                ReadHere\u5728\u4ea7\u54c1\u903b\u8f91\u4e0a\u505a\u4e86\u4e00\u4e2a\u806a\u660e\u4f46\u6210\u672c\u6781\u9ad8\u7684\u51cf\u6cd5\uff1a\u5b83\u62d2\u7edd\u4e91\u7aef\u3001\u62d2\u7edd\u8d26\u6237\u3001\u62d2\u7edd\u751f\u6001\u7ed1\u5b9a\uff0c\u628a\u9605\u8bfb\u4f53\u9a8c\u5f7b\u5e95\u201c\u964d\u7ea7\u201d\u4e3a\u6d4f\u89c8\u5668\u4e2d\u7684\u672c\u5730\u64cd\u4f5c\u3002\u8fd9\u4e2a\u53cd\u6f6e\u6d41\u7684\u8bbe\u8ba1\u5728\u9690\u79c1\u654f\u611f\u7528\u6237\u4e2d\u83b7\u5f97\u4e86\u60c5\u611f\u5171\u9e23\uff0c\u4f46\u6211\u4eec\u5fc5\u987b\u51b7\u9759\u770b\u6e05\u5b83\u7684\u5929\u82b1\u677f\u3002\n            <\/p>\n<p class=\"ai-content\">\n                **\u771f\u6b63\u7684\u4ef7\u503c\u4e0d\u5728\u529f\u80fd\uff0c\u800c\u5728\u201c\u4fe1\u4efb\u201d\u4e8c\u5b57\u3002** \u5f53\u524d\u9605\u8bfb\u8f6f\u4ef6\uff08Kindle\u3001Apple Books\u3001\u5fae\u4fe1\u8bfb\u4e66\uff09\u7684\u672c\u8d28\u662f\u56fe\u4e66\u9500\u552e\u7684\u6e20\u9053\u5165\u53e3\uff0c\u9605\u8bfb\u5668\u53ea\u662f\u5f15\u6d41\u5de5\u5177\u3002\u7528\u6237\u4e70\u4e66\u5176\u5b9e\u662f\u201c\u79df\u4e66\u201d\uff0c\u9ad8\u4eae\u548c\u7b14\u8bb0\u6570\u636e\u88ab\u9501\u5b9a\u5728\u5404\u81ea\u5e73\u53f0\u3002ReadHere\u628a\u6570\u636e\u4e3b\u6743\u5f7b\u5e95\u8fd8\u7ed9\u7528\u6237\uff0c\u6587\u4ef6\u6c38\u8fdc\u5728\u672c\u5730\uff0c\u7b14\u8bb0\u4e5f\u53ea\u5728\u672c\u5730\u3002\u8fd9\u79cd\u201c\u4e0d\u62e5\u6709\u7528\u6237\u4efb\u4f55\u4e1c\u897f\u201d\u7684\u627f\u8bfa\uff0c\u786e\u5b9e\u662f\u884c\u4e1a\u6e05\u6d41\uff0c\u4e5f\u662f\u5b83\u80fd\u6253\u52a8144\u4e2a\u6295\u7968\u8005\u7684\u6838\u5fc3\u539f\u56e0\u3002\n            <\/p>\n<p class=\"ai-content\">\n                **\u4f46\u4ea7\u54c1\u73b0\u9636\u6bb5\u5904\u4e8e\u201c\u7406\u60f3\u4e30\u6ee1\uff0c\u73b0\u5b9e\u9aa8\u611f\u201d\u7684\u72b6\u6001\u3002** \u5b8c\u5168\u672c\u5730\u5316\u610f\u5473\u7740\u8de8\u8bbe\u5907\u4f7f\u7528\u53ea\u80fd\u4f9d\u8d56\u6d4f\u89c8\u5668\u81ea\u5df1\u7684\u540c\u6b65\u673a\u5236\uff08\u5982Chrome\u6570\u636e\u540c\u6b65\uff09\uff0c\u800c\u6d4f\u89c8\u5668\u540c\u6b65\u7684\u80fd\u529b\u8fdc\u5f31\u4e8e\u539f\u751fApp\u3002\u5927\u91cf\u7528\u6237\u53cd\u9988\u7684\u201c\u65ad\u70b9\u7eed\u8bfb\u201d\u201c\u79bb\u7ebf\u9605\u8bfb\u201d\u672c\u8d28\u4e0a\u90fd\u662f\u6d4f\u89c8\u5668\u6c99\u7bb1\u673a\u5236\u5e26\u6765\u7684\u5929\u7136\u7f3a\u9677\u2014\u2014\u6d4f\u89c8\u5668\u53ef\u4ee5\u6e05\u9664IndexedDB\u3001localStorage\uff0c\u7528\u6237\u7684\u51e0\u767e\u6761\u9ad8\u4eae\u968f\u65f6\u53ef\u80fd\u6d88\u5931\u3002\u521b\u59cb\u4eba\u89c4\u5212\u7684\u201c\u540c\u6b65\u5230\u81ea\u5df1\u7684Google Drive\u201d\u770b\u4f3c\u89e3\u51b3\u4e86\u5907\u4efd\u95ee\u9898\uff0c\u4f46\u7b49\u4e8e\u628a\u5173\u952e\u529f\u80fd\u63a8\u7ed9\u4e86\u7528\u6237\u7684\u7b2c\u4e09\u65b9\u64cd\u4f5c\uff0c\u8fd9\u79cd\u201c\u534a\u540a\u5b50\u201d\u8bbe\u8ba1\u6050\u6015\u96be\u4ee5\u7559\u4f4f\u91cd\u5ea6\u8bfb\u8005\u3002\n            <\/p>\n<p class=\"ai-content\">\n                **\u66f4\u81f4\u547d\u7684\u662f\u62a4\u57ce\u6cb3\u95ee\u9898\u3002** \u672c\u5730\u4f18\u5148\u7684\u9605\u8bfb\u5668\u6280\u672f\u95e8\u69db\u5e76\u4e0d\u9ad8\uff0c\u4e00\u65e6\u5927\u5382\uff08\u5982Brave\u63a8\u51fa\u79bb\u7ebf\u9605\u8bfb\u529f\u80fd\uff09\u6216\u5f00\u6e90\u793e\u533a\u8ddf\u8fdb\uff0cReadHere\u7684\u529f\u80fd\u51e0\u4e4e\u53ef\u4ee5\u88ab\u77ac\u95f4\u590d\u5236\u3002\u5b83\u771f\u6b63\u7684\u5dee\u5f02\u5316\u201c\u65e0\u8d26\u6237+\u65e5\u8bb0\u672c\u201d\u5982\u679c\u4e0d\u4e0a\u4e91\uff0c\u5c31\u65e0\u6cd5\u5f62\u6210\u7f51\u7edc\u6548\u5e94\u548c\u7528\u6237\u8fc1\u79fb\u6210\u672c\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4e00\u53e5\u8bdd\u603b\u7ed3\uff1a\u8fd9\u662f\u4e00\u6b3e\u503c\u5f97\u5c0a\u91cd\u7684\u7406\u60f3\u4e3b\u4e49\u4ea7\u54c1\uff0c\u4f46\u5f53\u524d\u5f62\u6001\u66f4\u50cf\u4e00\u4e2a\u201c\u4f18\u8d28\u7684\u6280\u672fDemo\u201d\u3002\u5b83\u8feb\u5207\u9700\u8981\u5728\u201c\u5b8c\u5168\u672c\u5730\u201d\u548c\u201c\u53ef\u4fe1\u4efb\u7684\u8f7b\u91cf\u540c\u6b65\u201d\u4e4b\u95f4\u627e\u5230\u5e73\u7a33\uff0c\u5426\u5219\u59cb\u7ec8\u662f\u6570\u7801\u9605\u8bfb\u91cc\u7684\u201c\u4e34\u65f6\u907f\u96be\u6240\u201d\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">ReadHere<\/span>\n                <\/div>\n<div class=\"comment-content\">A lightweight reader for your PDFs and EPUBs, entirely in your browser; no install, no account, no ecosystem. Highlight both formats, keep a per-book journal, and read offline. Your files stay on your device. Sync to your own Google Drive coming soon.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi PH \ud83d\udc4b<\/p>\n<\/p>\n<p>I read on a Mac, a Windows laptop, and my phone, and no app could follow me across all three. Apple Books is stuck on Apple, Kindle on Amazon, and Calibre is a heavy desktop install. I just wanted to open my own PDFs and EPUBs anywhere and keep my highlights with me.<\/p>\n<\/p>\n<p>So I made ReadHere. It runs entirely in your browser: read PDF and EPUB, highlight and take notes in both, keep a per-book journal, all of it offline. No account, no upload, your books stay on your device.<\/p>\n<\/p>\n<p>It&#8217;s free. To be honest about where it&#8217;s at: everything is local to your browser right now. Syncing to your own Google Drive (yours, not mine) is what I&#8217;m building next, and there&#8217;s a waitlist if that&#8217;s your thing.<\/p>\n<\/p>\n<p>Would love your honest feedback, especially on how it actually feels to read in. Thanks for taking a look \ud83d\ude4f<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is such a clean and thoughtful product. \u2764\ufe0f I love that everything stays on my device, works offline, and doesn&#8217;t require creating yet another account. Definitely something I&#8217;d actually use.<\/p>\n<\/p>\n<p>One small feature I&#8217;d absolutely love: automatically remember where I left off in every PDF\/EPUB. It would be amazing if I could close a book and, the next time I open it, it jumps right back to the exact page\/position I was reading. That tiny detail would make the experience feel perfect. Great work !! <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>no account, no ecosystem is a stance not just a feature. the entire reading software space drifted into &#8220;we own your library now&#8221; over the last decade. kindle apple books kobo all want lock-in. choosing to not own anything of the user&#8217;s by default is rare.<\/p>\n<\/p>\n<p>the per-book journal is sneakily the strongest feature. that&#8217;s where re-readers live. quick question for v2: when google drive sync ships, do journal entries sync separately from highlights or together? annotations leaking across devices is one thing. half-formed thoughts on chapter 3 is another vibe entirely.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@thenameisarian\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@thenameisarian<\/a>&nbsp;Thanks for your feedback. Our plan is to sync everything together. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Great idea &amp; just tested &#8211; super convenient to use! is there any way to ever make this work without wifi? ex. if i want to read the book on a flight w\/o wifi <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>&#8220;No install, no account, no ecosystem&#8221; is doing a lot of heavy lifting in the best possible way. Most PDF tools bury you in upsells before you even open a file. The per-book journal is the feature I didn&#8217;t know I needed &#8211; does it store in localStorage or IndexedDB? Curious how it survives a browser data clear.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is awesome, congrats on the launch! Any plans to add a Calibre style sync to move books to other devices like Kindle or Xteink?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#7<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/SJ53R526CISYNF\" class=\"app-title\">Sami<\/a><\/p>\n<div class=\"one-liner\">Automate ad budgets across Google, LinkedIn &#038; Meta ads<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">143<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Sami\u662f\u4e00\u6b3e\u8de8\u5e73\u53f0\u5e7f\u544a\u9884\u7b97\u81ea\u52a8\u5316\u7ba1\u7406\u5de5\u5177\uff0c\u5e2e\u52a9\u8425\u9500\u4eba\u5458\u544a\u522b\u5728\u4e0d\u540c\u5e7f\u544a\u5e73\u53f0\u95f4\u624b\u52a8\u68c0\u67e5\u7ee9\u6548\u7684\u7e41\u7410\u64cd\u4f5c\uff0c\u901a\u8fc7\u81ea\u5b9a\u4e49\u89c4\u5219\u5b9e\u65f6\u6682\u505c\u4f4e\u6548\u5e7f\u544a\u3001\u63a7\u5236\u9884\u7b97\u4e0e\u8c03\u6574\u6295\u653e\u8282\u594f\uff0c\u5b9e\u73b0\u201c\u65e0\u4eba\u503c\u5b88\u201d\u7684\u4ed8\u8d39\u5e7f\u544a\u7ba1\u7406\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a864918c-44bb-4a79-bcec-99babb3578c6.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/de5cd85c-2f88-40d5-b4b9-391d0f241dde.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/17f8960d-004d-4f89-b363-757a1302a8d5.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8746da27-adc9-48e4-8e85-5de033bf0c99.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/3ac94542-284d-491b-9daf-537a2e6e380f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f00876c0-5e21-4fe9-8a63-428580c1ee17.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/bee68e43-af91-49e7-8835-5b6a40aa2d70.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/9144f724-054c-4a37-bd2b-3f72928fe385.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/57a14e63-002b-4320-b109-fa383cee0211.jpeg?auto=format\" data-video-url=\"https:\/\/www.youtube.com\/watch?v=rNL_vWbN0rQ\"><source src=\"https:\/\/www.youtube.com\/watch?v=rNL_vWbN0rQ\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Marketing<\/span><br \/>\n            <span class=\"tag\">Advertising<\/span><br \/>\n            <span class=\"tag\">Marketing automation<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u5e7f\u544a\u9884\u7b97\u81ea\u52a8\u5316<\/span><br \/>\n            <span class=\"tag\">\u8de8\u5e73\u53f0\u5e7f\u544a\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u4ed8\u8d39\u5a92\u4f53\u4f18\u5316<\/span><br \/>\n            <span class=\"tag\">AI\u5e7f\u544a\u6295\u653e<\/span><br \/>\n            <span class=\"tag\">\u8425\u9500\u6548\u7387\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">Google Ads<\/span><br \/>\n            <span class=\"tag\">Meta Ads<\/span><br \/>\n            <span class=\"tag\">LinkedIn Ads<\/span><br \/>\n            <span class=\"tag\">YouTube Ads<\/span><br \/>\n            <span class=\"tag\">SaaS<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u5176\u89e3\u51b3\u8de8\u5e73\u53f0\u9884\u7b97\u76d1\u63a7\u7684\u75db\u70b9\uff0c\u79f0\u8d5e\u65e5\u5e38\u62a5\u544a\uff08\u5982Slack\u901a\u77e5\uff09\u7701\u65f6\u3002\u4e3b\u8981\u7591\u95ee\u96c6\u4e2d\u5728\uff1a\u81ea\u52a8\u5316\u64cd\u4f5c\u7684\u4fe1\u4efb\u5efa\u7acb\uff08\u624b\u52a8\u5ba1\u6279\u6a21\u5f0f\uff09\u3001\u8de8\u5e73\u53f0\u5f52\u56e0\u51b2\u7a81\u5904\u7406\u3001\u6700\u5c0f\u9002\u7528\u9884\u7b97\u89c4\u6a21\uff08\u7ea61K\u7f8e\u5143\/\u6708\u8d77\uff09\u3001\u6570\u636e\u9690\u79c1\u53ca\u6f14\u793a\u89c6\u9891\u65f6\u957f\u7b49\u95ee\u9898\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Sami\u7684\u4ef7\u503c\u4e0d\u5728\u4e8e\u201cAI\u66ff\u4ee3\u4eba\u201d\uff0c\u800c\u5728\u4e8e\u628a\u5e7f\u544a\u4f18\u5316\u4e2d\u201c\u786e\u5b9a\u6027\u9ad8\u3001\u6267\u884c\u67af\u71e5\u201d\u7684\u64cd\u4f5c\u56fa\u5316\u4e3a\u89c4\u5219\u5f15\u64ce\u3002\u5b83\u548c\u90a3\u4e9b\u8bd5\u56fe\u7528AI\u9884\u6d4b\u521b\u610f\u6216\u51fa\u4ef7\u7684\u201c\u9ed1\u76d2\u5de5\u5177\u201d\u622a\u7136\u4e0d\u540c\u2014\u2014\u9009\u62e9\u8ba9\u7528\u6237\u81ea\u5df1\u5b9a\u4e49\u9608\u503c\u548c\u52a8\u4f5c\uff0c\u672c\u8d28\u4e0a\u662f\u4e00\u4e2a\u53ef\u7f16\u7a0b\u7684\u5e7f\u544a\u8fd0\u7ef4\u81ea\u52a8\u5316\u5e73\u53f0\u3002\u6765\u81ea\u521b\u59cb\u4eba\u81ea\u8425\u5e7f\u544a\u673a\u6784\u7684\u75db\u70b9\u9a8c\u8bc1\uff0c\u4ee5\u53caTrustpilot 12\u500dROI\u7684\u6848\u4f8b\uff0c\u8bf4\u660e\u5b83\u786e\u5b9e\u89e3\u51b3\u4e86\u4ece\u591a\u5e73\u53f0\u62a5\u8868\u62fc\u63a5\u3001\u5230\u9884\u7b97\u5f02\u5e38\u54cd\u5e94\u8fd9\u4e2d\u95f4\u7684\u9ad8\u9891\u4f4e\u6548\u73af\u8282\u3002\u4f46\u5fc5\u987b\u6307\u51fa\uff0c\u5176\u4ef7\u503c\u9ad8\u5ea6\u4f9d\u8d56\u7528\u6237\u7684\u89c4\u5219\u8bbe\u5b9a\u80fd\u529b\u548c\u5e73\u53f0API\u7684\u7a33\u5b9a\u6027\u3002\u76ee\u524d\u529f\u80fd\u66f4\u591a\u505c\u7559\u5728\u201c\u76d1\u63a7+\u6267\u884c\u9884\u8bbe\u52a8\u4f5c\u201d\u5c42\u9762\uff0c\u5ba3\u79f0\u7684\u201c\u5168\u81ea\u52a8\u51fa\u4ef7\u201d\u548c\u201c\u7aef\u5230\u7aef\u6295\u653e\u201d\u8fd8\u6709\u8ddd\u79bb\u3002\u540c\u65f6\uff0c\u8d77\u6b651000\u6b21\/\u5929\u7684\u4f18\u5316\u9650\u989d\u5bf9\u4e8e\u5927\u578b\u8d26\u6237\u6216\u8bb8\u4e0d\u591f\u3002\u6700\u5927\u7684\u9690\u5fe7\u5728\u4e8e\uff1a\u5982\u679c\u7528\u6237\u81ea\u8eab\u7f3a\u4e4f\u5bf9\u5e73\u53f0\u7b97\u6cd5\u7684\u7406\u89e3\uff0c\u8bbe\u5b9a\u7684\u89c4\u5219\u5f88\u53ef\u80fd\u8bef\u5224\u8868\u73b0\uff0c\u9020\u6210\u66f4\u574f\u7ed3\u679c\u3002Sami\u66f4\u50cf\u4e00\u4e2a\u6302\u94a9\u5728\u73b0\u6709\u5e7f\u544a\u7cfb\u7edf\u4e0a\u7684\u201c\u81ea\u52a8\u5316\u64cd\u4f5c\u53f0\u201d\uff0c\u7528\u5f97\u597d\u662f\u706b\u7bad\u52a9\u63a8\u5668\uff0c\u7528\u5f97\u83bd\u5c31\u662f\u52a0\u901f\u5668\u2014\u2014\u628a\u4f4e\u6548\u653e\u5927\u5f97\u66f4\u5feb\u3002\u5bf9\u6708\u6d88\u8017\u6570\u5341\u4e07\u5143\u4ee5\u4e0a\u7684\u4ee3\u7406\u516c\u53f8\u6216\u72ec\u7acb\u8fd0\u8425\u8005\uff0c\u662f\u503c\u5f97\u8ba4\u771f\u8bc4\u4f30\u7684\u6548\u7387\u5de5\u5177\uff1b\u5bf9\u9884\u7b97\u4f4e\u4e8e1\u4e07\u5143\u7684\u5c0f\u5e7f\u544a\u4e3b\uff0c\u624b\u5de5\u5076\u5c14\u770b\u4e24\u773c\u53ef\u80fd\u6210\u672c\u66f4\u4f4e\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Sami<\/span>\n                <\/div>\n<div class=\"comment-content\">Still manually checking ad performance across 4 different platforms? Sami automates it. Build rules that pause underperformers, control budgets, and adjust pacing in real time \u2014 across Google, Meta, LinkedIn, and YouTube. One platform. Zero babysitting. Trusted by marketers managing $3M+ in ad spend. Start your free trial.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey Product Hunt! \ud83d\udc4b I&#8217;m Silvio, co-founder and CEO of Sami.<\/p>\n<\/p>\n<p>I run an ad agency managing north of $40M a year in client ad spend, and for years I watched our team spend half their time on work that should never have needed a human in the first place.<\/p>\n<\/p>\n<p>The manual grind looked like this:<\/p>\n<ul>\n<li>\n<p>Catching budget pacing issues before clients noticed<\/p>\n<\/li>\n<li>\n<p>Pausing underperforming ads<\/p>\n<\/li>\n<li>\n<p>Protecting against overspend<\/p>\n<\/li>\n<li>\n<p>Flagging campaigns with zero impressions<\/p>\n<\/li>\n<li>\n<p>Monitoring CPLs across dozens of accounts<\/p>\n<\/li>\n<\/ul>\n<p>All of it important. All of it manual. And all of it pulling our team away from what they&#8217;re actually great at: building client relationships, studying the market, and running better experiments.<\/p>\n<\/p>\n<p>We tried to stitch it together:<\/p>\n<ul>\n<li>\n<p>Native platform rules that only work on one channel<\/p>\n<\/li>\n<li>\n<p>Zapier workflows that break<\/p>\n<\/li>\n<li>\n<p>Shared spreadsheets that are outdated the moment you close them<\/p>\n<\/li>\n<li>\n<p>AI tools that explode your token costs the moment you try to feed them campaign data at scale<\/p>\n<\/li>\n<\/ul>\n<p>Nothing gave us a single place to see everything, act on it, and automate it across every platform.<\/p>\n<\/p>\n<p>So we built that.<\/p>\n<\/p>\n<p>With Sami, you connect your ad accounts, build campaign portfolios, and get real-time pacing across every client and channel in one dashboard. Then you deploy automations (we call them SAMs) that monitor your KPIs and either notify you the moment something&#8217;s off, or take action automatically based on rules you define. Your thresholds. Your metrics. Your level of control.<\/p>\n<\/p>\n<p>We validated Sami with our own money inside our own agency before asking anyone else to pay for it. <strong>One early user, Trustpilot, achieved a 12x ROI and saved 300+ hours a year in manual optimizations.<\/strong> Across our early users, teams are saving an average of 3 to 5 hours a week from the automations alone.<\/p>\n<\/p>\n<p>This is just the beginning. We&#8217;re building toward a future where paid media runs on autopilot: fully automated bidding and budget management, intelligent campaign optimizations, and eventually the ability to build and launch campaigns end to end inside Sami. The goal is an automated future where performance marketers spend their time on strategy and creativity, not operations.<\/p>\n<\/p>\n<p>Try it, break it, and tell us what&#8217;s missing. Every piece of feedback goes straight into what we build next.<\/p>\n<\/p>\n<p>\ud83c\udf81 <strong>Anyone signing up today gets a 14-day free trial.<\/strong> No credit card required. Just connect your accounts and visualize your ad budgets across channels. <\/p>\n<\/p>\n<p>Get started free at <a href=\"https:\/\/sami.bot\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/sami.bot\/<\/a> or reach me directly at <a href=\"mailto:silvio@sami.bot\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">silvio@sami.bot<\/a><\/p>\n<\/p>\n<p>Huge thanks to my co-founder and CTO <a href=\"https:\/\/www.producthunt.com\/@yassin_gofti\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@yassin_gofti<\/a> for building this with me. None of this exists without him. And to everyone here on Product Hunt, thank you for taking the time to check out what we&#8217;re building. It means more than you know.<\/p>\n<\/p>\n<p>Much love,<\/p>\n<p>Silvio \ud83e\udef6<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>9<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@yassin_gofti\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@yassin_gofti<\/a>&nbsp; <a href=\"https:\/\/www.producthunt.com\/@silvio_perez\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@silvio_perez<\/a>&nbsp;Congrats on the launch of Sami! \ud83d\ude80 Stopping budget waste across Meta, Google, and LinkedIn automatically is exactly what growth marketers need. Upvoted and congrats to the team!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@yassin_gofti\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@yassin_gofti<\/a>&nbsp; <a href=\"https:\/\/www.producthunt.com\/@silvio_perez\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@silvio_perez<\/a>&nbsp;Congrats Silvio and team, this sounds genuinely useful.<\/p>\n<p>That whole \u201ccheck pacing, catch overspend, pause what\u2019s not working, notice weird campaign issues before the client does\u201d part is painfully familiar. It\u2019s the kind of work that has to be done, but slowly eats half the day.<\/p>\n<p>Love that you built this from your own agency pain first. That usually makes the product much sharper.<\/p>\n<p>How teams usually make the jump from \u201cSami, just notify me\u201d to \u201cokay, you can actually take action automatically\u201d? Feels like that trust layer is the really interesting part.<\/p>\n<p>Big congrats! This looks like something a lot of performance teams have been waiting for.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This daily budget pacing snapshot from Sami on Slack really makes the life of marketers running paid ads a lot easier \ud83d\ude4c\ud83c\udffc <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/fcb56844-8310-43a1-9a31-45e54c5479e2.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jessica_amaral2\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jessica_amaral2<\/a>&nbsp;YES! nothing better than waking up and knowing where your budgets stand. You also can get notified via email if you don&#8217;t use Slack <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a5b62165-db19-46de-9aa9-bd91028707f2.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>One of my favorite views in Sami is the Budget &amp; KPIs section.<\/p>\n<\/p>\n<p>You can visualize pacing across Google, LinkedIn, Meta, and YouTube in one place \ud83d\udd25<\/p>\n<\/p>\n<p>This helps save a ton of time when managing dozens of client accounts or large accounts internally. <\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/d8278e6c-183e-4ec9-a352-95cd0813efe3.jpeg?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Chiming in as someone who gets daily Slack reports from Sami (we&#8217;re a client of AdConversion), it&#8217;s super helpful. I always know where we are on budget and what ads we need to turn off as well. These are things I used to manually do every couple of weeks, but now I&#8217;m on top of it, hands free.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@djforge\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@djforge<\/a>&nbsp;thank you Jordan! so grateful to have you onboard <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch, Silvio and team! \ud83c\udf89<\/p>\n<\/p>\n<p>I really like the idea of having one place to keep an eye on performance and set rules. Excited to see how Sami evolves. Big congrats again!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dascalescu\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dascalescu<\/a>&nbsp;thank you Claudiu! really pumped for the direction of the product and where we are headed<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is literally what I&#8217;ve wanted for the last decade+. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This feels like one of those tools where the upside is huge, but the edge cases really matter.<br \/>A good rule saves hours, but a poorly set one could do the opposite pretty quickly &#8211; especially on client accounts.<br \/>How are you thinking about guardrails here? Is there a way to preview or stage actions before they go live? <\/p>\n<p>Congrats on the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jared_salois\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jared_salois<\/a>&nbsp;thanks Jared! Yes, completely agree we&#8217;re big believers in &#8220;human-in-the-loop&#8221; depending on your preference levels inside of Sami you can setup &#8220;Manual Approval&#8221; where Sami will notify you of changes and then you have to give your final say before actions fire, example below:<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/01680a87-4811-4142-b3fe-227043e18a37.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/4a4882bd-fd8e-4450-82e1-2bd773181b3a.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The cross-platform pacing is the hard part most tools get wrong &#8211; budgets shift fine but when you have overlapping audiences across Google and LinkedIn hitting the same person, the coordination layer gets messy. How does Sami handle attribution conflicts when the same conversion gets claimed by two platforms simultaneously?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;thanks for the question! Sami is pulling your campaigns that have been launched inside the ad platforms (with the audiences you created) and now in Sami you&#8217;re able to group them into campaign portfolio&#8217;s and easily adjust bids\/budgets, and set automations around optimizing your campaigns based on your target KPI. So essentially it&#8217;s not trying to fight or sort attribution it leverages the platforms, it just makes the ad operations\/scaling easier.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>this seems fascinating! i&#8217;m quite the newbie so apologies if this is a stupid question, but does this run on mcp servers for each platform? i&#8217;ve seen some videos about similar applications but curious if you&#8217;ve built your platform on a similar foundation.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@benliu\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@benliu<\/a>&nbsp;not at all! Sami connect integrates to the ad platforms via the API so through it we&#8217;re able to build automations around optimizing performance, managing budgets, and monitoring KPIs in one place. Big difference here vs just using Claude is pricing at $99\/month, and usage (1,000\/optimizations day) so you can really scale your efforts affordably!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrants on the launch! I like the idea a lot! how is the data privacy managed when it comes to credit card details and so on? thank you and big congrats <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@daniela_pilla\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@daniela_pilla<\/a>&nbsp;thank you! do you mean how is billing handled on our end? If so payments are processed via Stripe. Otherwise you would put your billing info inside your ad manager as normal.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">First thing I saw 5 mins long video I didn\u2019t watched till the end so keep your demo videos short otherwise idea is good!<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@divvsaxena\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@divvsaxena<\/a>&nbsp;appreciate the feedback! will definitely keep it mind for future<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch! What would you say is the minimum spend\/complexity for which this makes sense?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ferdi_sigona\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ferdi_sigona<\/a>&nbsp;thanks! the starting price is $99-119\/month so the platform is fair inexpensive so some early users have budgets as low as $1K\/month and finding value<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#8<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/HLYRDPGX2RV3IF\" class=\"app-title\">Crest<\/a><\/p>\n<div class=\"one-liner\">System stats and translation on your Mac&#8217;s notch<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">141<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Crest \u5c06 MacBook \u7684\u95f2\u7f6e\u5218\u6d77\u533a\u57df\u6539\u9020\u6210\u4e00\u4e2a\u53ef\u4ea4\u4e92\u7684\u529f\u80fd\u4e2d\u67a2\uff0c\u8ba9\u7528\u6237\u65e0\u9700\u989d\u5916\u7a97\u53e3\u5373\u53ef\u5feb\u901f\u67e5\u770b\u7cfb\u7edf\u72b6\u6001\u3001\u64ad\u653e\u63a7\u5236\u3001\u7ffb\u8bd1\u3001\u526a\u8d34\u677f\u7b49\u5e38\u7528\u4fe1\u606f\uff0c\u89e3\u51b3\u4e86\u5218\u6d77\u5c4f\u5360\u7528\u5c4f\u5e55\u7a7a\u95f4\u5374\u53c8\u6beb\u65e0\u7528\u5904\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e0d34502-e33e-4fcb-8159-b5682da62757.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a86db133-c9e0-4dc6-9bf1-2dec571ca1a4.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/88509fd8-d673-446a-acc4-20c35bb753c8.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/6e5487b8-a26b-4ea1-b169-bbf24ebac600.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/d6e2c61d-15ca-459a-b477-fc60166f83e9.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/0b595407-958f-415f-868d-ff09ac7b700c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/08909edc-0aa8-445a-ae44-23e6fcfba47f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/343185cf-44f6-4f8f-8940-7485510ab6ee.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1231dc7d-3d03-4cfa-88a6-9984105f21d1.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/fc2f6eac-cb3c-4aba-bdb1-e099219878b5.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/95ce65f7-3c07-4610-b9aa-dfbb48946d2f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8ef6b3fa-1cf8-4291-917f-45adc3cc7e24.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Mac<\/span><br \/>\n            <span class=\"tag\">Design Tools<\/span><br \/>\n            <span class=\"tag\">Apple<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Mac \u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u5218\u6d77\u5c4f<\/span><br \/>\n            <span class=\"tag\">\u7cfb\u7edf\u76d1\u63a7<\/span><br \/>\n            <span class=\"tag\">\u7ffb\u8bd1\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u6548\u7387\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u83dc\u5355\u680f\u66ff\u4ee3<\/span><br \/>\n            <span class=\"tag\">\u901a\u77e5\u680f\u589e\u5f3a<\/span><br \/>\n            <span class=\"tag\">\u526a\u8d34\u677f\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u97f3\u4e50\u63a7\u5236<\/span><br \/>\n            <span class=\"tag\">\u4efb\u52a1\u7ba1\u7406<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u5bf9\u5c06\u5218\u6d77\u53d8\u5e9f\u4e3a\u5b9d\u7684\u521b\u610f\u8868\u793a\u8ba4\u53ef\uff0c\u5c24\u5176\u5173\u6ce8\u5916\u90e8\u663e\u793a\u5668\u9002\u914d\uff08\u652f\u6301\u81ea\u5b9a\u4e49\u663e\u793a\u65b9\u5f0f\uff09\u3002\u521b\u4f5c\u8005\u900f\u9732\u5df2\u89e3\u51b3\u540c\u7c7bapp\u5e38\u89c1\u7684\u7535\u6c60\u6d88\u8017\u548c\u7761\u7720\u540e\u5361\u6b7b\u95ee\u9898\u3002\u90e8\u5206\u7528\u6237\u5bf9\u7ffb\u8bd1\u529f\u80fd\u5904\u7406\u4e13\u4e1a\u672f\u8bed\u7684\u80fd\u529b\u63d0\u51fa\u7591\u95ee\u3002\u5b9a\u4ef7\u4e3a\u4e00\u6b21\u6027\u4ed8\u8d3919.99\u7f8e\u5143\uff0c\u83b7\u5f97\u597d\u8bc4\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Crest \u7684\u806a\u660e\u4e4b\u5904\u5728\u4e8e\u5b83\u6ca1\u6709\u8bd5\u56fe\u201c\u6d88\u9664\u201d\u5218\u6d77\uff0c\u800c\u662f\u5c06\u5176\u89c6\u4e3a\u4e00\u4e2a\u5929\u7136\u5f39\u51fa\u5f0f\u4ea4\u4e92\u7684\u7269\u7406\u951a\u70b9\u3002\u76f8\u6bd4\u4f20\u7edf\u83dc\u5355\u680f\u6216Dock\u680f\u7684\u62e5\u6324\u548c\u56fa\u5b9a\uff0c\u5218\u6d77\u7684\u201c\u9690\u85cf-\u60ac\u505c-\u5f39\u51fa\u201d\u6a21\u5f0f\u66f4\u9002\u5408\u4e34\u65f6\u8c03\u7528\u7684\u8f7b\u91cf\u4fe1\u606f\uff0c\u8fd9\u672c\u8d28\u4e0a\u662f\u91cd\u65b0\u5b9a\u4e49\u4e86 Mac \u7684\u4ea4\u4e92\u5c42\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ea7\u54c1\u4ef7\u503c\u5728\u4e8e\u201c\u65e0\u611f\u201d\u4e0e\u201c\u805a\u5408\u201d\u3002\u5b83\u5c06\u7cfb\u7edf\u72b6\u6001\u3001\u64ad\u653e\u63a7\u5236\u3001\u526a\u8d34\u677f\u3001\u751a\u81f3\u7ffb\u8bd1\u8fd9\u6837\u770b\u4f3c\u4e0d\u76f8\u5173\u7684\u529f\u80fd\u585e\u8fdb\u4e00\u4e2a\u7edf\u4e00\u5f39\u51fa\u9762\u677f\uff0c\u6838\u5fc3\u4e0d\u662f\u529f\u80fd\u5806\u780c\uff0c\u800c\u662f\u201c\u770b\u4e00\u773c\u5373\u53ef\u201d\u7684\u6548\u7387\u63d0\u5347\u3002\u521b\u59cb\u4eba\u7279\u522b\u63d0\u5230\u4fee\u590d\u4e86\u7ade\u54c1\u5e38\u89c1\u7684\u7535\u6c60\u6d88\u8017\u548c\u7761\u7720\u540e\u5361\u6b7b\u95ee\u9898\uff0c\u8fd9\u6070\u6070\u662f\u8be5\u7c7b\u4ea7\u54c1\u6700\u5927\u7684\u95e8\u69db\u2014\u2014\u5982\u679c\u4e3a\u4e86\u4e00\u4e2a\u5c0f\u529f\u80fd\u727a\u7272\u7a33\u5b9a\u6027\u548c\u7eed\u822a\uff0c\u7528\u6237\u4e0d\u4f1a\u4e70\u5355\u3002Crest \u88ab\u82f9\u679c\u516c\u8bc1\uff0c\u4e5f\u6253\u6d88\u4e86\u5b89\u5168\u987e\u8651\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4e0d\u8fc7\uff0c19.99\u7f8e\u5143\u7684\u4e00\u6b21\u6027\u5b9a\u4ef7\u867d\u7136\u6bd4\u8ba2\u9605\u5236\u539a\u9053\uff0c\u4f46\u529f\u80fd\u672c\u8eab\u5e76\u975e\u4e0d\u53ef\u66ff\u4ee3\u3002\u7cfb\u7edf\u81ea\u5e26\u7684\u83dc\u5355\u680f\u3001Alfred \u6216 Raycast \u7b49\u5168\u80fd\u542f\u52a8\u5668\u3001\u4ee5\u53ca\u5355\u72ec\u7684\u83dc\u5355\u680f\u76d1\u63a7 app\uff0c\u90fd\u80fd\u90e8\u5206\u6216\u5168\u90e8\u5b9e\u73b0\u5176\u529f\u80fd\u3002Crest \u7684\u6838\u5fc3\u62a4\u57ce\u6cb3\u5728\u4e8e\u201c\u5218\u6d77\u4e13\u5c5e\u7684\u5f39\u51fa\u4f53\u9a8c\u201d\u548c\u201c\u7cbe\u51c6\u7684\u529f\u80fd\u805a\u5408\u201d\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u6700\u5927\u7684\u9690\u5fe7\u662f\u529f\u80fd\u6269\u5c55\u7684\u8fb9\u754c\u3002\u5982\u679c\u53ea\u505a\u201c\u805a\u5408\u201d\uff0c\u5f88\u5bb9\u6613\u88ab\u5927\u5382\u6216\u5f00\u6e90\u9879\u76ee\u590d\u5236\u3002\u5982\u679c\u589e\u52a0\u592a\u591a\u9ad8\u7ea7\u529f\u80fd\uff08\u5982\u66f4\u6df1\u5165\u7684\u7cfb\u7edf\u63a7\u5236\uff09\uff0c\u53c8\u4f1a\u4e0e\u7cfb\u7edf\u5e95\u5c42\u6743\u9650\u51b2\u7a81\uff0c\u91cd\u8e48\u7ade\u54c1\u8986\u8f99\u3002\u5efa\u8bae\u56e2\u961f\u805a\u7126\u4e8e\u201c\u5218\u6d77\u5fae\u4ea4\u4e92\u201d\u8fd9\u4e00\u72ec\u7279\u4f18\u52bf\uff0c\u5c06\u7ffb\u8bd1\u3001\u526a\u8d34\u677f\u7b49\u9ad8\u9891\u529f\u80fd\u505a\u6df1\uff0c\u5e76\u6301\u7eed\u4f18\u5316\u4ea4\u4e92\u6d41\u7545\u5ea6\u4e0e\u4f4e\u529f\u8017\u8868\u73b0\u3002\u5426\u5219\uff0c\u5b83\u5c06\u53ea\u662f\u53c8\u4e00\u4e2a\u201c\u754c\u9762\u5f88\u9177\u4f46\u968f\u65f6\u53ef\u88ab\u66ff\u4ee3\u201d\u7684\u5de5\u5177\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Crest<\/span>\n                <\/div>\n<div class=\"comment-content\">Crest is a Mac notch app that turns your MacBook&#8217;s notch into a hub: Now Playing, a dashboard, system stats, calendar, tasks, translation and more. Free, Pro $19.99.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch! \ud83c\udf89 <br \/>The notch has bugged me since I got my M1 too. Smart move turning the most useless part of the screen into the useful one. One thing I&#8217;m curious about; What happens when I&#8217;m docked to an external monitor? I&#8217;m working remote and haven&#8217;t got access to an external monitor to test it out yet.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@august_sch\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@august_sch<\/a>&nbsp; Thanks so much, really glad it clicks for you! <\/p>\n<p>Great question, and docked is a first-class setup. External monitors don&#8217;t have a physical notch, so Crest just draws its own little Dynamic Island style pill at the top center of the screen, and everything works exactly the same from there: Now Playing, stats, calendar, the lot.<\/p>\n<p>You also get to pick how it shows up on external screens in Settings:<\/p>\n<p>\u2022 Hidden: invisible until you hover or click the top center<\/p>\n<p>\u2022 Pill: a small hint marking where to reach<\/p>\n<p>\u2022 Full: an always-on pill, just like the real notch<\/p>\n<p>And if you close the lid and run clamshell, Crest follows to your external display automatically. There&#8217;s a &#8220;Show on all displays&#8221; toggle too, if you run multiple monitors and want it everywhere.<\/p>\n<p>So no notch required. Hope that external monitor shows up soon, would love to hear how it feels when it does!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Honestly the notch has annoyed me for years, so turning it into something useful is a fun idea. The clipboard history and file drop are the two I&#8217;d actually use daily. The thing that stands out though is you fixing the battery drain and post-sleep freezing, that&#8217;s the reason I gave up on a similar app before. Nice work, and the one-time price over a subscription is refreshing. <a href=\"https:\/\/www.producthunt.com\/@zack40x\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"zack40x\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@zack40x<\/a> <a href=\"https:\/\/www.producthunt.com\/products\/crest-3\" data-node-type=\"mention\" data-mention-type=\"product\" data-mention-id=\"crest-3\" target=\"_blank\" rel=\"noopener\">@Crest<\/a> <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@sharun_kanan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sharun_kanan<\/a>&nbsp;thanks a lot for the feedback. If any feature come on your mind that would fit your daily flow I would love to hear them.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>niceee<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@madalina_barbu\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@madalina_barbu<\/a>&nbsp;thanks a lot !<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey everyone<br \/>\nI made Crest because my MacBook&#8217;s notch always bugged me. It&#8217;s just a black bar for the camera that sits there doing nothing all day, so I figured I&#8217;d make it actually useful.<br \/>\n It drops down from the notch and gives you things at a glance: what&#8217;s playing (with lyrics), a little dashboard, a spot to drop files, your clipboard history, calendar, system stats, and a bunch more. Four of those are free, and if you want the rest it&#8217;s a  one-time $19.99. No subscription.<br \/>\n It started as a side project for myself. I&#8217;d tried other notch apps but they kept killing my battery or freezing after my Mac slept overnight, which drove me nuts, so I put a lot of effort into keeping Crest quiet on battery and making it wake up properly. It&#8217;s<br \/>\n also notarized by Apple, so none of those &#8220;unknown developer&#8221; warnings, and nothing it does leaves your Mac.<br \/>\n   It&#8217;s free to try at <a href=\"https:\/\/crestnotch.app\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/crestnotch.app<\/a>. I&#8217;d really love to hear what you think, or what you&#8217;d want it to do that it doesn&#8217;t yet. I&#8217;ll be around all day answering.<\/p>\n<p> Thanks for checking it out<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@zack40x\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@zack40x<\/a>&nbsp;Huge congrats on the launch! \ud83e\udd42 The translation and dashboard features stand out the most to me here. For someone who works across multiple screens, does Crest scale or adapt well if you are using an external monitor? Excited to give it a spin!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Putting something actually useful in the notch is one of those ideas that sounds obvious once you see it &#8211; surprised it took this long. The translation feature is an unexpected pairing with system stats. How does it handle technical text or domain-specific terms? That&#8217;s usually where inline translation breaks down.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#9<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/A7GDUKYZTIZURJ\" class=\"app-title\">Outpaint &#8211; Ad Reframe<\/a><\/p>\n<div class=\"one-liner\">AI to turn vertical UGC into widescreen ads<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">131<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Outpaint\u5c06\u7ad6\u5c4f\uff089:16\uff09\u7528\u6237\u751f\u6210\u5185\u5bb9\uff08UGC\uff09\u5e7f\u544a\u901a\u8fc7AI\u6269\u5c55\u4e3a\u6a2a\u5c4f\uff0816:9\uff09\u7535\u89c6\u5e7f\u544a\uff0c\u89e3\u51b3\u5e7f\u544a\u4e3b\u5728CTV\u6295\u653e\u4e2d\u56e0\u6bd4\u4f8b\u4e0d\u9002\u914d\u800c\u4f7f\u7528\u9ed1\u8fb9\u6216\u6a21\u7cca\u80cc\u666f\u7684\u75db\u70b9\uff0c\u65e0\u9700\u91cd\u62cd\u5373\u53ef\u590d\u7528\u7206\u6b3e\u7d20\u6750\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a6399af6-7e4d-4bd9-9bd5-483e45f4dab7.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a57212e4-8e92-43cb-bf91-73ce86f18ead.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/56c07f39-6f82-4455-8f9d-8b14cbdc9dc6.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/04e6bc92-6126-481d-acb5-3d36d93a8abc.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/PcJEaVXcazc\"><source src=\"https:\/\/youtu.be\/PcJEaVXcazc\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Advertising<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">Video<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u8ba4\u53ef\u4ea7\u54c1\u89e3\u51b3\u7ad6\u5c4f\u8f6cCTV\u7684\u5b9e\u9645\u75db\u70b9\uff0c\u4f46\u6838\u5fc3\u7591\u8651\u96c6\u4e2d\u4e8eAI\u5bf9\u52a8\u6001\u8fb9\u7f18\uff08\u5982\u5feb\u8fd0\u52a8\u3001\u624b\u6301\u6296\u52a8\uff09\u7684\u5904\u7406\u7a33\u5b9a\u6027\uff0c\u4ee5\u53ca\u753b\u9762\u662f\u5426\u4f1a\u51fa\u73b0\u95ea\u70c1\u6216\u4f2a\u5f71\u3002\u53e6\u6709\u7528\u6237\u8be2\u95ee\u662f\u5426\u652f\u6301\u65c1\u767d\u3001\u5b57\u5e55\u3001\u5b89\u5168\u533a\u7b49\u5b8c\u6574TV\u5236\u4f5c\u9700\u6c42\uff0c\u5f53\u524d\u53cd\u9988\u867d\u672a\u63d0\u53ca\uff0c\u4f46\u5df2\u6709\u5feb\u8fd0\u52a8\u6848\u4f8b\u5c55\u793a\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Outpaint\u7684\u5207\u5165\u70b9\u76f8\u5f53\u7cbe\u51c6\u2014\u2014\u5b83\u5207\u4e2d\u7684\u4e0d\u662f\u201c\u89c6\u9891\u7f16\u8f91\u201d\u8fd9\u4e2a\u7ea2\u6d77\uff0c\u800c\u662f\u201c\u5e7f\u544a\u6295\u653e\u4e2d\u7684\u6bd4\u4f8b\u9002\u914d\u5e9f\u589f\u201d\u3002\u5728CTV\u5e7f\u544a\u652f\u51fa\u9ad8\u901f\u589e\u957f\u7684\u5f53\u4e0b\uff0c\u65e0\u6570\u5e7f\u544a\u4e3b\u9762\u5bf9\u201c\u62ffUGC\u6295\u7535\u89c6\u201d\u7684\u521a\u9700\uff0c\u53ea\u80fd\u7528\u96be\u770b\u7684\u9ed1\u8fb9\u3001\u6a21\u7cca\u6216\u80cc\u666f\u865a\u5316\u6765\u7cca\u5f04\uff0c\u8fd9\u4e0d\u4ec5\u4f24\u5bb3\u7528\u6237\u4f53\u9a8c\uff0c\u66f4\u76f4\u63a5\u538b\u4f4e\u8f6c\u5316\u7387\u3002Outpaint\u7528AI\u751f\u6210\u5185\u5bb9\u586b\u5145\u7a7a\u767d\u533a\uff0c\u800c\u975e\u7b80\u5355\u62c9\u4f38\u6216\u6a21\u7cca\uff0c\u4ece\u5ba1\u7f8e\u548c\u6548\u679c\u4e0a\u90fd\u9ad8\u51fa\u4e00\u4e2a\u7ef4\u5ea6\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u95ee\u9898\u4e5f\u5728\u8fd9\u513f\u3002\u7528\u6237\u8bc4\u8bba\u4e2d\u53cd\u590d\u51fa\u73b0\u7684\u201c\u5feb\u8fd0\u52a8\u3001\u6296\u52a8\u3001\u8fb9\u7f18\u7a33\u5b9a\u6027\u201d\u4e0d\u662f\u5439\u6bdb\u6c42\u75b5\uff0c\u800c\u662f\u8fd9\u9879\u6280\u672f\u771f\u6b63\u7684\u751f\u6b7b\u7ebf\u3002\u5982\u679cAI\u53ea\u80fd\u5728\u9759\u6001\u80cc\u666f\u6216\u6162\u52a8\u4f5c\u573a\u666f\u4e0b\u5de5\u4f5c\uff0c\u90a3\u5b83\u672c\u8d28\u4e0a\u8fd8\u662f\u4e2a\u201c\u7cbe\u81f4\u70b9\u7684P\u56fe\u5de5\u5177\u201d\uff0c\u65e0\u6cd5\u80dc\u4efb\u5e7f\u544a\u6295\u653e\u8fd9\u79cd\u9ad8\u9891\u3001\u9ad8\u8981\u6c42\u7684\u751f\u4ea7\u73af\u5883\u3002\u867d\u7136\u56e2\u961f\u5c55\u793a\u4e86IMAX\u683c\u5f0f\u6269\u5c55\u793a\u4f8b\u6765\u8bc1\u660e\u5feb\u8fd0\u52a8\u5904\u7406\u80fd\u529b\uff0c\u4f46\u8981\u5728UGC\u90a3\u79cd\u4f4e\u753b\u8d28\u3001\u968f\u673a\u6784\u56fe\u7684\u7d20\u6750\u4e0a\u7a33\u5b9a\u8f93\u51fa\uff0c\u96be\u5ea6\u5448\u51e0\u4f55\u7ea7\u589e\u957f\u3002\u6b64\u5916\uff0c\u8be5\u5de5\u5177\u76ee\u524d\u53ea\u89e3\u51b3\u6bd4\u4f8b\u95ee\u9898\uff0c\u5bf9\u65c1\u767d\u3001\u5b57\u5e55\u5b89\u5168\u533a\u3001\u65f6\u957f\u63a7\u5236\u7b49TV\u5e7f\u544a\u5236\u4f5c\u6d41\u7a0b\u4e2d\u7684\u5176\u4ed6\u5173\u952e\u73af\u8282\u5e76\u672a\u8986\u76d6\uff0c\u8fd9\u610f\u5473\u7740\u5e7f\u544a\u4e3b\u4ecd\u9700\u5728\u540e\u671f\u5de5\u5177\u4e2d\u4e8c\u6b21\u52a0\u5de5\uff0c\u589e\u52a0\u4e86\u5de5\u4f5c\u6d41\u65ad\u88c2\u7684\u98ce\u9669\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u5f52\u6839\u7ed3\u5e95\uff0cOutpaint\u7684\u4ef7\u503c\u4e0d\u5728\u4e8e\u201cAI\u6709\u591a\u9177\u201d\uff0c\u800c\u5728\u4e8e\u5b83\u628a\u201c\u5e7f\u544a\u4e3b\u6c38\u8fdc\u4e0d\u60f3\u91cd\u62cd\u201d\u8fd9\u4e2a\u9700\u6c42\u53d8\u6210\u4e86\u4e00\u4e2a\u53ef\u89c4\u6a21\u5316\u7684\u4ea7\u54c1\u3002\u6838\u5fc3\u7ade\u4e89\u529b\u4e0d\u662f\u6280\u672f\u7684\u9ad8\u5ea6\u539f\u521b\u6027\uff0c\u800c\u662f\u5bf9\u5e7f\u544a\u884c\u4e1a\u73b0\u6709\u5de5\u4f5c\u6d41\u7684\u7cbe\u51c6\u66ff\u4ee3\u2014\u2014\u7528\u51e0\u5929\u4ee3\u66ff\u51e0\u5468\uff0c\u7528AI\u6269\u5c55\u4ee3\u66ff\u7eff\u5e55\u91cd\u62cd\u3002\u4f46\u8fd9\u79cd\u66ff\u4ee3\u662f\u5426\u6210\u7acb\uff0c\u6700\u7ec8\u53d6\u51b3\u4e8eAI\u4ea7\u51fa\u7684\u8d28\u91cf\u662f\u5426\u7a33\u5b9a\u5230\u8db3\u4ee5\u901a\u8fc7\u5e7f\u544a\u4e3b\u5185\u90e8\u8d28\u68c0\uff0c\u751a\u81f3\u5e73\u53f0\u5ba1\u6838\u3002\u5982\u679c\u7b54\u6848\u662f\u80af\u5b9a\u7684\uff0c\u90a3\u5b83\u5c31\u662f\u4e00\u4e2a\u80fd\u5207\u8d70\u5927\u7247\u4f20\u7edf\u540e\u671f\u9884\u7b97\u7684\u5229\u5668\uff1b\u5982\u679c\u53ea\u662f\u5076\u5c14\u60ca\u8273\u3001\u65f6\u800c\u51fa\u9519\uff0c\u90a3\u5c31\u53ea\u80fd\u6ca6\u4e3a\u201cdemo\u5f88\u7f8e\u201d\u7684\u6446\u8bbe\u3002\u56e2\u961f\u9700\u8981\u5c11\u8c08\u201c\u6d88\u706d\u9ed1\u8fb9\u201d\u7684\u5b8f\u5927\u53d9\u4e8b\uff0c\u591a\u79c0\u51e0\u4e2a\u4e0d\u540c\u8fd0\u52a8\u7c7b\u578b\u3001\u4e0d\u540c\u80cc\u666f\u590d\u6742\u5ea6\u7684\u771f\u5b9e\u6295\u653e\u6848\u4f8b\uff0c\u8ba9\u5e02\u573a\u7528\u8f6c\u5316\u7387\u6765\u6295\u7968\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Outpaint &#8211; Ad Reframe<\/span>\n                <\/div>\n<div class=\"comment-content\">UGC ads reframed for TV by Outpaint.com. Vertical ads (9:16) expanded into widescreen (16:9) for connected TV, while keeping the original footage pixel perfect. Outperforms pillarboxing and side blur.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Today, you can only shoot video for one screen at a time. Go landscape and it won&#8217;t fit a phone. Go vertical and it looks awful on a laptop. And without a super specialized lens, forget about the big screen.<\/p>\n<p>We&#8217;ve all seen the black bars you slap around a video to force it into a new aspect ratio. I hate them with a passion. My favorite movie, Lord of the Rings, was shot in 2.39:1. It doesn&#8217;t fit a single TV out there.<\/p>\n<p>So we&#8217;re on a mission to end black bars for good. Every video should fit every screen.<\/p>\n<p>Today we&#8217;re launching Ad Reframe, which turns winning vertical UGC ads into CTV ready placements. Our case studies show outpainting far outperforms black bars and side blur.<\/p>\n<p>Send us a video you want reframed and we&#8217;ll send back a free sample so you can see it for yourself. We&#8217;d love to hear what you think.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dannyhabibs\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dannyhabibs<\/a>&nbsp;Congrats on launching <a href=\"http:\/\/Outpaint.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Outpaint.com<\/a>! \ud83d\udd25 Turning vertical 9:16 UGC into clean 16:9 TV ads is the perfect way to unlock CTV inventory without a massive production budget. Upvoted and congrats!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dannyhabibs\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dannyhabibs<\/a>&nbsp;Clean execution and a real problem solved. Congrats!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Curious how Ad Reframe handles the jump from typical UGC formats into TV-ready creative. Since the tagline is \u201cConvert UGC ads for TV,\u201d are you mainly focused on aspect ratio, pacing, and framing, or does it also help with things like voiceover, captions, safe zones, and length requirements for TV spots? That distinction would be helpful for marketers comparing it with a normal video editor.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>Hey <a href=\"https:\/\/www.producthunt.com\/@mia_qiao\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mia_qiao<\/a>, we&#8217;re focused on expanding the aspect ratio by generating new content to fill the extra space. It works best for repurposing your winning ads for bigger screens like YouTube, YouTube TV, Netflix, etc.<\/p>\n<p>As for a normal video editor, the process is very simple: send us a video link and get back an expanded ad in a few days.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is awesome, kinda feels like a bridge between a TikTok and a YouTube video \ud83d\udcaf<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@cairacshields\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@cairacshields<\/a>&nbsp;Thats the goal!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>CTV ad spend is growing fast and pillarboxing is genuinely embarrassing to watch on a 65&#8243; screen &#8211; so this solves a real pain. The key question for me is how the AI handles the expanded areas when there&#8217;s motion near the edge of the original frame. Static backgrounds are easy; someone walking across frame is where things get tricky. Any samples with fast-moving footage?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>Checkout this example<a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;<\/p>\n<p><a href=\"https:\/\/youtu.be\/vQrPm45AM-Y\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/youtu.be\/vQrPm45AM-Y<\/a><\/p>\n<\/p>\n<p>Here we expand standard rectilinear 2.39:1 video into IMAX full frame 1.43:1.<\/p>\n<\/p>\n<p>Lots of fast motion and shaky cam!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The &#8220;reshoot it for CTV&#8221; conversation is one nobody wants to have mid-campaign. Really glad someone built a clean fix for this. Simple as it should be \ud83d\udc4d<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>Thanks <a href=\"https:\/\/www.producthunt.com\/@oleg_tsizdyn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@oleg_tsizdyn<\/a>&nbsp;! Just being able to expand an ad in days is a game changer for agencies<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">So cool idea man but you didn\u2019t included any demo video for it \ud83d\ude42<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@divvsaxena\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@divvsaxena<\/a>&nbsp;Just added one take a look!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>it&#8217;s nice to see this product reach todays rank#9. We run UGC campaigns and the 9:16 to 16:9 problem comes up constantly whenever we want to extend to CTV or YouTube pre-rolls. The pillarbox blur workaround genuinely looks bad. The real test for us would be fast motion and shaky handheld footage \u2014 that&#8217;s where outpainting usually falls apart. Curious if there&#8217;s a confidence score on the output so you know which clips need a manual check before the campaign goes live.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>reframing 9:16 to 16:9 without pillarboxing is the part everyone fakes with blur. do the generated edges stay temporally stable across frames, or can they shimmer?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#10<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/IPQVVBWWY4JTR5\" class=\"app-title\">Intelli<\/a><\/p>\n<div class=\"one-liner\">Convert leads into customers with AI conversations<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">117<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Intelli\u662f\u4e00\u4e2a\u4ee5WhatsApp\u4e3a\u6838\u5fc3\u3001\u6574\u5408\u591a\u6e20\u9053\u7684AI\u5bf9\u8bdd\u5546\u52a1\u5e73\u53f0\uff0c\u4e3a\u65b0\u5174\u5e02\u573a\u7684\u4e2d\u5c0f\u4f01\u4e1a\u63d0\u4f9b\u4ece\u83b7\u5ba2\u3001\u652f\u4ed8\u5230\u552e\u540e\u7684\u4e00\u7ad9\u5f0f\u81ea\u52a8\u5316\u5ba2\u6237\u4e92\u52a8\u65b9\u6848\uff0c\u89e3\u51b3\u4f20\u7edf\u5de5\u5177\u65e0\u6cd5\u9002\u914d\u5f53\u5730\u201c\u804a\u5929\u5373\u4ea4\u6613\u201d\u4e60\u60ef\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f57774e3-24f9-4781-9401-ca218b03ac28.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e3d226ef-b731-4f0e-bfd7-a487e99ee63f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/c6c7ba79-29f5-4258-afed-120217b2fe07.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/cfc455f3-9152-42dc-8f22-e3646fff557a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/4a1e7f24-cdd6-4f6d-96cf-9526f84a5dc8.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/223b2aa1-ea47-40a4-902b-5ac0e1e13704.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/2095cbf4-a588-4d09-bf2d-f59458ce30f5.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/n9-jz8FYvI8?si=hYCcwBKWz30DuGcr\"><source src=\"https:\/\/youtu.be\/n9-jz8FYvI8?si=hYCcwBKWz30DuGcr\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Customer Communication<\/span><br \/>\n            <span class=\"tag\">SaaS<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">YouTube<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">WhatsApp Business API<\/span><br \/>\n            <span class=\"tag\">AI\u5ba2\u670d<\/span><br \/>\n            <span class=\"tag\">\u5bf9\u8bdd\u5f0f\u5546\u52a1<\/span><br \/>\n            <span class=\"tag\">\u65b0\u5174\u5e02\u573a<\/span><br \/>\n            <span class=\"tag\">\u591a\u6e20\u9053\u6574\u5408<\/span><br \/>\n            <span class=\"tag\">\u672c\u5730\u652f\u4ed8<\/span><br \/>\n            <span class=\"tag\">\u5ba2\u6237\u65c5\u7a0b\u81ea\u52a8\u5316<\/span><br \/>\n            <span class=\"tag\">SaaS<\/span><br \/>\n            <span class=\"tag\">\u4f01\u4e1a\u670d\u52a1<\/span><br \/>\n            <span class=\"tag\">\u8425\u9500\u81ea\u52a8\u5316<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u5176\u65b0\u5174\u5e02\u573a\u5b9a\u4f4d\u548c\u201cWhatsApp\u539f\u751f+\u672c\u5730\u652f\u4ed8\u201d\u7684\u4ef7\u503c\u3002\u6838\u5fc3\u5173\u6ce8\u70b9\u5728\u4e8eAI\u4e0e\u4eba\u5de5\u7684\u65e0\u7f1d\u8f6c\u63a5\u673a\u5236\uff0c\u4ee5\u53ca\u60c5\u7eea\/\u884c\u4e3a\u610f\u56fe\u8bc6\u522b\u80fd\u529b\u3002\u56e2\u961f\u56de\u5e94\u79f0\u8f6c\u63a5\u7531\u4e1a\u52a1\u89c4\u5219\u4e0eAI\u4fe1\u53f7\u6df7\u5408\u9a71\u52a8\uff0c\u6682\u672a\u52a0\u5165\u60c5\u611f\u5206\u6790\u3002\u6b64\u5916\uff0c\u7528\u6237\u597d\u5947WhatsApp\u7684AI\u89e3\u51b3\u7387\u662f\u5426\u9ad8\u4e8e\u7f51\u9875\u804a\u5929\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Intelli\u7684\u4eae\u70b9\u4e0d\u5728AI\uff0c\u800c\u5728\u201c\u672c\u571f\u5316\u201d\u3002\u5f53\u5927\u91cfSaaS\u4ea7\u54c1\u8fd8\u5728\u505a\u201c\u5168\u7403\u5316-\u672c\u5730\u5316\u201d\u7684\u964d\u7ef4\u79fb\u690d\u65f6\uff0cIntelli\u4ece\u4e00\u5f00\u59cb\u5c31\u628aM-Pesa\u3001Paystack\u8fd9\u4e9b\u65b0\u5174\u5e02\u573a\u652f\u4ed8\u201c\u94c1\u8def\u201d\u5185\u7f6e\u4e3a\u57fa\u7840\u8bbe\u65bd\u3002\u8fd9\u6070\u6070\u662f\u5b83\u6700\u7280\u5229\u7684\u5dee\u5f02\u5316\u2014\u2014\u5b83\u4e0d\u662f\u5728WhatsApp\u4e0a\u5957\u4e00\u4e2aAI\u58f3\uff0c\u800c\u662f\u628aWhatsApp\u5f53\u4f5c\u65b0\u4e16\u754c\u7684\u64cd\u4f5c\u7cfb\u7edf\uff0c\u518d\u628a\u652f\u4ed8\u548c\u5ba2\u670d\u7f16\u6392\u8fdb\u53bb\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u5fc5\u987b\u6307\u51fa\u7684\u662f\uff0c\u76ee\u524d\u7684\u4ea7\u54c1\u8fd8\u6ca1\u6709\u9003\u8131\u201cAI\u5ba2\u670d\u201d\u7684\u7ea2\u6d77\u53d9\u4e8b\u3002\u7528\u6237\u63d0\u51fa\u7684\u60c5\u611f\u610f\u56fe\u8bc6\u522b\u3001AI\u4e0e\u4eba\u5de5\u7684\u65e0\u7f1d\u8f6c\u63a5\u2014\u2014\u8fd9\u4e9b\u90fd\u662f\u8001\u751f\u5e38\u8c08\u7684\u6838\u5fc3\u95ee\u9898\uff0c\u800cIntelli\u7ed9\u51fa\u7684\u201c\u4e1a\u52a1\u89c4\u5219+AI\u4fe1\u53f7\u201d\u65b9\u6848\u5176\u5b9e\u7b97\u4e0d\u4e0a\u7a81\u7834\uff0c\u51e0\u4e4e\u7b49\u4e8e\u884c\u4e1a\u6807\u51c6\u7b54\u6848\u3002\u4f9d\u8d56\u89c4\u5219\u89e6\u53d1\u800c\u975e\u6df1\u5ea6\u9884\u6d4b\uff0c\u610f\u5473\u7740\u5728\u590d\u6742\u573a\u666f\u4e0b\uff0c\u201c\u8f6c\u63a5\u611f\u201d\u4f9d\u7136\u5b58\u5728\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u66f4\u503c\u5f97\u8b66\u60d5\u7684\u662f\uff0c\u8bc4\u8bba\u533a\u4e2d\u7528\u6237\u5bf9\u201c\u591a\u901a\u9053\u534f\u540c\u201d\u7684\u671f\u5f85\uff0c\u4e0e\u521b\u59cb\u4eba\u5f3a\u8c03\u7684\u201cWhatsApp\u539f\u751f\u201d\u4e4b\u95f4\u5b58\u5728\u5185\u5728\u77db\u76fe\u3002\u5982\u679cIntelli\u6700\u64c5\u957f\u7684\u662fWhatsApp\uff0c\u90a3\u5c31\u610f\u5473\u7740\u5b83\u5728Instagram\u3001Messenger\u7b49\u6e20\u9053\u7684\u4f53\u9a8c\u5927\u6982\u7387\u662f\u201c\u5168\u901a\u9053\u7684\u67d0\u901a\u9053\u201d\uff0c\u800c\u975e\u201c\u5168\u901a\u9053\u7684\u539f\u751f\u201d\u3002\u771f\u6b63\u7684Omnichannel\u4e0d\u662f\u96c6\u6210\u591a\u4e2a\u6536\u4ef6\u7bb1\uff0c\u800c\u662f\u540c\u4e00\u5ba2\u6237\u5728\u4e0d\u540c\u6e20\u9053\u4e0a\u7684\u65e0\u611f\u6d41\u8f6c\u3002\u8fd9\u4e0d\u4ec5\u662f\u6280\u672f\u6311\u6218\uff0c\u66f4\u662f\u4ea7\u54c1\u7406\u5ff5\u7684\u9e3f\u6c9f\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4e00\u53e5\u8bdd\u603b\u7ed3\uff1a\u8fd9\u662f\u4e00\u6b3e\u201c\u5b9a\u4f4d\u6b63\u786e\u201d\u7684\u4ea7\u54c1\uff0c\u5b83\u61c2\u5f97\u5728\u65b0\u5174\u5e02\u573a\uff0c\u201c\u5bf9\u8bdd\u5373\u4ea4\u6613\u201d\u3002\u4f46\u8981\u60f3\u4ece\u201c\u672c\u571f\u5316\u7684\u597d\u5de5\u5177\u201d\u5347\u7ea7\u4e3a\u201c\u5e73\u53f0\u7ea7\u7684\u5546\u4e1a\u64cd\u4f5c\u7cfb\u7edf\u201d\uff0cIntelli\u8fd8\u9700\u8981\u5728AI\u7684\u9884\u6d4b\u6df1\u5ea6\u548c\u6e20\u9053\u7684\u65e0\u611f\u534f\u540c\u4e0a\uff0c\u62ff\u51fa\u66f4\u5b9e\u8d28\u6027\u7684\u7a81\u7834\uff0c\u800c\u4e0d\u662f\u6ee1\u8db3\u4e8e\u201c\u6211\u4eec\u662fWhatsApp\u7684\u4f18\u7b49\u751f\u201d\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Intelli<\/span>\n                <\/div>\n<div class=\"comment-content\">Intelli is a WhatsApp Business API platform for SMBs in emerging markets. Automate customer engagement, run broadcast campaigns, collect payments, and manage support from one place across WhatsApp, web chat, Instagram, Messenger, and email. AI assistants are trained on your own data, with customer journey workflows and local payment rails.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey Product Hunt \ud83d\udc4b<br \/>I&#8217;m Samson, co-founder and CPO at Intelli. We built this for a reality most customer engagement tools don&#8217;t build for because they don&#8217;t understand nor relate to: in emerging markets, WhatsApp is how people buy, ask, and pay. So we built an A customer engagement platform that&#8217;s WhatsApp-native first, then multichannel across Instagram, Messenger, web chat, and email.<br \/>What makes it different:<\/p>\n<p>\u2013 AI assistants trained on your own data, not a generic bot<\/p>\n<p>\u2013 Local payment rails built in: M-Pesa, MoMo, Paystack, Flutterwave<\/p>\n<p>\u2013 Broadcast campaigns, lead qualification, and support in one inbox<\/p>\n<p>\u2013 Live in about 15 minutes<br \/>We&#8217;re an official Meta Tech Provider serving 200+ businesses. We launched on Peerlist on monday this week and it inspired us to come and launch on product hunt too. <br \/>Would love your honest thoughts and questions. What does your current customer engagement tool get wrong? I&#8217;ll be here all day.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@samsonroyal\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@samsonroyal<\/a>&nbsp;Congrats on launching Intelli! \ud83d\udd25 Bringing all customer channels into one AI-powered workspace is exactly how you kill support backlogs. Upvoted and congrats to the team!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on shipping. With AI conversations the hard part is rarely the happy path, it&#8217;s the handoff: knowing when the AI should stop trying and pull in a human before the customer gets frustrated. How does Intelli decide that escalation moment? That line is what makes or breaks trust for the business owner.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@david_marko\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@david_marko<\/a>&nbsp;Hey David, thanks for the congratulations and question. <\/p>\n<p>Escalation can happen through business-defined rules and AI-detected signals. There&#8217;s inflection points that enable the AI to escalate the issue; and some business set &#8220;triggers&#8221; that help guide this process.<\/p>\n<p>When that trigger happens, the conversation moves into the team inbox with the full history and customer context, so the human agent can pick up without making the customer repeat everything. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Customer support AI is crowded but the multi-channel part is the hard problem &#8211; most tools work fine on one channel and fall apart when you mix WhatsApp, email, and live chat in the same conversation thread. What does the handoff look like when the AI can&#8217;t resolve something? That moment is where most platforms lose customer trust fast.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;Customer Support AI is crowded, that&#8217;s a fact. There&#8217;s so many players and differentiating oneself is a bit tricky. What you have mentioned about multi-channel being the hard problem to solve is something that we also agree with\/on and are working towards making that experience the best. <\/p>\n<p>The handoff is a mix of AI detected signals and business defined logic. The escalation to human chat is handled seamlessly in that way. We don&#8217;t want to see an endless and annoying loop of customers stuck with AI who want to access human support but can&#8217;t. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Congrats on the launch! I love seeing more products built with emerging markets as the default instead of an afterthought. Curious if businesses are using Intelli primarily for customer support, or is WhatsApp increasingly becoming a full commerce channel (sales, payments, and retention) on your platform?<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@luki_notlowkey\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@luki_notlowkey<\/a>&nbsp;Thanks Luki. We built Intelli with emerging markets as main focus because we are from these emerging markets and most of the software we are using often comes to us as an afterthought. We needed to contribute to change that in our own way.<\/p>\n<p>To answer your questions:- Businesses using Intelli primarily are seeking for customer support tools but the use is spiralling into customer engagement. Whatsapp is indeed becoming a full commerce channel(we call it conversational commerce) but some segments of emerging markets haven&#8217;t caught up to it so the focus is on customer support and engagement for now. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Good approach. Is WhatsApp showing higher AI resolution rates than web chat in your early deployments?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dhiraj_patel5\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dhiraj_patel5<\/a>&nbsp;Hello Dhiraj, Yes Whatsapp has shown typically higher AI resolution rates than web chat. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Curious how Intelli handles intent signals beyond the words, do you capture any behavioural or emotional cues from conversations? That layer tends to be where leads actually convert or drop off.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@productrambler\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@productrambler<\/a>&nbsp;Hey Lavakumar, <br \/>thanks for the question; no we currently don&#8217;t handle or capture behavioural\/emotional cues from conversations because there was no demand for it from our user base. Their focus was on other factors that directly contribute to their revenue.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Very interesting! will check this out for sure<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ruvik_milkis\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ruvik_milkis<\/a>&nbsp;Thanks Ruvik. When you do please let me know how your experience was. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Running community launches, the WhatsApp-native plus local-rails combo (M-Pesa, Paystack, Flutterwave) is the part most support tools ignore \u2014 buyers in emerging markets transact in-thread, not on a separate checkout page. One concrete edge case: when a customer pays via M-Pesa inside a WhatsApp conversation, does the AI assistant receive the payment confirmation as context so it can move the conversation forward or trigger fulfilment, or is payment a siloed step the agent never sees?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#11<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/4HSMRCNLO57MWW\" class=\"app-title\">Upstream FTP<\/a><\/p>\n<div class=\"one-liner\">A fast, beautiful, and native FTP\/SFTP client for macOS<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">103<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Upstream FTP \u662f\u4e00\u6b3e\u4e13\u4e3a macOS \u6253\u9020\u7684\u8f7b\u91cf\u539f\u751f FTP\/SFTP \u5ba2\u6237\u7aef\uff0c\u65e8\u5728\u53d6\u4ee3\u81c3\u80bf\u3001\u7f13\u6162\u7684\u4f20\u7edf\u5de5\u5177\uff0c\u4e3a\u5f00\u53d1\u8005\u548c\u7cfb\u7edf\u7ba1\u7406\u5458\u63d0\u4f9b\u5feb\u901f\u3001\u5b89\u5168\u4e14\u7f8e\u89c2\u7684\u6587\u4ef6\u4f20\u8f93\u4f53\u9a8c\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/9e7b255f-fcc0-4992-b32c-84cf0763b495.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/43764e05-1bb4-47ac-8c4a-69551f645732.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7b9ccb74-d3f0-45a0-a7ce-367fe79b057c.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/40a399e6-58f3-4540-9bf9-f3aa3244f82a.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/6e0ddee0-6c87-4212-9770-a7426825b957.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/585f43c5-2cb2-44d6-9b8d-e8c4b9a48719.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/d39dc3ee-e556-48f8-968b-6b7ee261dc93.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/d808cade-f3ea-4c5c-b88a-c6e3e429928c.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/71a3a421-d32e-46da-a742-092f68744c89.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Mac<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">macOS<\/span><br \/>\n            <span class=\"tag\">FTP\u5ba2\u6237\u7aef<\/span><br \/>\n            <span class=\"tag\">SFTP\u5ba2\u6237\u7aef<\/span><br \/>\n            <span class=\"tag\">\u6587\u4ef6\u4f20\u8f93<\/span><br \/>\n            <span class=\"tag\">SwiftNIO<\/span><br \/>\n            <span class=\"tag\">\u539f\u751f\u5e94\u7528<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u7cfb\u7edf\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">Cyberduck\u66ff\u4ee3<\/span><br \/>\n            <span class=\"tag\">Transmit\u66ff\u4ee3<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u5176\u539f\u751f\u3001\u8f7b\u91cf\u7684\u5b9a\u4f4d\uff0c\u5173\u6ce8\u5176\u6027\u80fd\u4f18\u52bf\u6765\u6e90\uff08\u5982SwiftNIO\u3001PASV\u4f18\u5316\uff09\u3002\u6838\u5fc3\u8bc9\u6c42\u5305\u62ec\uff1a\u5bfc\u5165\u73b0\u6709\u914d\u7f6e\uff08FileZilla\/Transmit\/Ssh Config\uff09\u548c\u672a\u6765\u652f\u6301S3\u7b49\u4e91\u5b58\u50a8\u3002\u5bf9Keychain\u96c6\u6210\u548cSSH\u5bc6\u94a5\u7ba1\u7406\u7ed9\u4e88\u4e86\u80af\u5b9a\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Upstream FTP\u5728\u201c\u65e7\u795e\u201d\u6797\u7acb\u7684FTP\u5ba2\u6237\u7aef\u9886\u57df\uff0c\u8d70\u4e86\u4e00\u6761\u6700\u6b63\u786e\u7684\u8def\u2014\u2014\u6781\u81f4\u539f\u751f\u3002\u5b83\u6ca1\u6709\u53bb\u548cFileZilla\u6253\u514d\u8d39\u6218\uff0c\u4e5f\u6ca1\u6709\u8bd5\u56fe\u590d\u523bTransmit\u7684\u751f\u6001\u5e1d\u56fd\uff0c\u800c\u662f\u7cbe\u51c6\u72d9\u51fb\u4e86\u5f00\u53d1\u8005\u5bf9\u201cElectron\u81c3\u80bf\u201d\u548c\u201c\u4ea4\u4e92\u8fdf\u6ede\u201d\u7684\u96c6\u4f53\u6028\u6c14\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ece\u6280\u672f\u9009\u578b\u770b\uff0c\u7528SwiftNIO\u66ff\u6362libcurl\u662f\u4e00\u6b21\u6df1\u601d\u719f\u8651\u7684\u201c\u964d\u7ef4\u6253\u51fb\u201d\u3002\u8fd9\u4e0d\u4ec5\u4ec5\u662f\u6027\u80fd\u6570\u5b57\u7684\u80dc\u5229\uff0c\u66f4\u610f\u5473\u7740\u56e2\u961f\u5403\u900f\u4e86macOS\u5e95\u5c42\u3002\u5bf9NAS\u73af\u5883\u7684PASV\/MLSD\u667a\u80fd\u5904\u7406\uff0c\u4ee5\u53ca\u5bf9Keychain\u548cApp Sandbox\u7684\u5408\u89c4\u4f18\u5316\uff0c\u8fd9\u4e9b\u7ec6\u8282\u900f\u9732\u51fa\u5f00\u53d1\u8005\u7684\u771f\u6b63\u7528\u5fc3\uff1a\u4ed6\u4eec\u4e0d\u662f\u5728\u9020\u4e00\u4e2a\u5de5\u5177\uff0c\u800c\u662f\u5728\u9020\u4e00\u4ef6\u4e0emacOS\u8840\u8089\u76f8\u8fde\u7684\u201c\u539f\u751f\u4ea7\u54c1\u201d\u3002\u8fd9\u624d\u662f\u5176\u8d85\u8d8a\u4e00\u4f17\u8de8\u5e73\u53f0\u6216\u8001\u65e7\u5ba2\u6237\u7aef\u7684\u6838\u5fc3\u7ade\u4e89\u529b\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u5f53\u7136\uff0c\u76ee\u524d\u5176\u4ef7\u503c\u5b8c\u5168\u5efa\u7acb\u5728\u201c\u7eaf\u534f\u8bae\u6807\u51c6\u201d\u4e4b\u4e0a\u3002\u4e0d\u652f\u6301\u4efb\u4f55\u4e91\u5b58\u50a8\u662f\u660e\u667a\u7684\u53d6\u820d\uff0c\u4f46\u957f\u8fdc\u770b\uff0c\u8fd9\u4e5f\u9650\u5236\u4e86\u5b83\u7684\u7528\u6237\u5929\u82b1\u677f\u3002\u521d\u59cb\u5bfc\u5165\u652f\u6301FileZilla\u548cSSH Config\uff0c\u5374\u5c06Transmit\u653e\u5728Roadmap\u4e0a\uff0c\u8fd9\u4e2a\u9009\u62e9\u65e2\u663e\u793a\u4e86\u5f00\u53d1\u8005\u5bf9\u6280\u672f\u7528\u6237\u7fa4\u4f53\u7684\u7cbe\u51c6\u628a\u63a7\uff0c\u4e5f\u6697\u793a\u4e86\u5176\u53ef\u80fd\u5b58\u5728\u7684\u7528\u6237\u8fc1\u79fb\u6210\u672c\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4e00\u53e5\u8bdd\u9510\u8bc4\uff1aUpstream\u662f\u4e00\u6b3e\u4e0d\u59a5\u534f\u7684\u201c\u5e72\u5c06\u83ab\u90aa\u201d\uff0c\u9002\u5408\u90a3\u4e9b\u613f\u610f\u4e3a\u4e86\u6781\u81f4\u539f\u751f\u4f53\u9a8c\u548c\u5e72\u51c0\u4ea4\u4e92\uff0c\u800c\u63a5\u53d7\u529f\u80fd\u6682\u65f6\u7f3a\u4f4d\u7684\u4e13\u4e1a\u7528\u6237\u3002\u5b83\u8ba9\u8001\u5de5\u5177\u4eec\u7b2c\u4e00\u6b21\u611f\u5230\u4e86\u65f6\u4ee3\u7684\u538b\u529b\u3002\u4e0d\u8fc7\uff0c\u5b83\u9700\u8981\u8b66\u60d5\u7684\u662f\uff0c\u522b\u5728\u5feb\u901f\u8fed\u4ee3\u4e2d\u5fd8\u4e86\u201c\u539f\u751f\u201d\u624d\u662f\u81ea\u5df1\u552f\u4e00\u4e0d\u53ef\u66ff\u4ee3\u7684\u62a4\u57ce\u6cb3\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Upstream FTP<\/span>\n                <\/div>\n<div class=\"comment-content\">Upstream is a native, modern, and lightweight FTP\/SFTP client built exclusively for macOS. Designed for speed and seamless integration, it ditches heavy, outdated interfaces to give developers and sysadmins a fast, secure, and beautiful file transfer experience.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hi Product Hunt! <\/p>\n<p>I\u2019m the creator of Upstream.<br \/>\nLike many developers and sysadmins, I\u2019ve spent years using FTP clients that felt sluggish, outdated, or bloated. Many of them aren&#8217;t optimized for modern macOS, wasting resources and disrupting the workflow.<\/p>\n<p>That\u2019s why I built Upstream. I wanted a tool that is 100% native, blazing fast, and beautiful\u2014built exclusively for the Mac experience. It ditches the heavy overhead of multi-platform wrappers to give you a lightweight, secure, and rock-solid file transfer experience.<\/p>\n<p>Upstream is out now on the Mac App Store, and I\u2019d love to get your feedback to make it even better. What features or integrations would you like to see next?<\/p>\n<p>I&#8217;ll be here all day to answer your questions and chat. Thank you so much for the support! <\/p>\n<p>Carlo<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>That tradeoff makes sense given the sandbox \u2014 manual key authorization is the honest cost of being App Store-distributed. ProxyJump is the one I&#8217;d watch most: for anyone living behind a bastion, rebuilding jump hosts by hand is the gap between a two-minute migration and an afternoon, so that backlog item is the real power-user unlock. Honoring Match\/Include blocks in the parser would cover a lot of those setups too.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The native Mac client space for FTP is genuinely underserved. Most people end up on Cyberduck or Transmit and just stay there out of habit rather than because those tools are great. What I&#8217;m curious about is where &#8220;fast&#8221; is coming from specifically. Is this a smarter connection-handling layer, local caching of directory listings, or something at the rendering level? And does it handle edge cases like servers with slow PASV negotiation or broken directory listing formats, because that&#8217;s where the legacy clients tend to silently fail and leave you guessing.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@fberrez1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@fberrez1<\/a>&nbsp;Hi! Thanks for the great questions. You&#8217;ve hit on exactly the pain points we set out to solve with Upstream. Here is how we handle &#8220;fast&#8221; and those tricky FTP<br \/>  edge cases under the hood:<\/p>\n<p>  1. Where does &#8220;fast&#8221; come from?<\/p>\n<p>  \u2022 SwiftNIO Transport: Instead of wrapping legacy C libraries (like libcurl) or using blocking sockets, Upstream is built on top of Apple&#8217;s SwiftNIO (the same<br \/>  high-performance, event-driven, non-blocking network framework used for Swift on Server).<br \/>  \u2022 Browsing &amp; Transfer Isolation: We decouple directory browsing from file transfers. Transfers run on a dedicated concurrent connection pool (managed via Swift<br \/>  Concurrency Actors), ensuring the directory viewer remains completely responsive and lag-free even during multi-gigabyte uploads\/downloads.<br \/>  \u2022 Background Parsing &amp; SwiftUI Rendering: Directory sorting, filtering, and parsing happen entirely on background actors before updating the SwiftUI Table with<br \/>  stable identifiers, avoiding main-thread freezes.<\/p>\n<p>  2. Smart PASV Negotiation (NAT &amp; IPv6)<\/p>\n<p>  \u2022 Many servers behind NAT misconfigure their passive settings and return unroutable private or loopback IPs (like 192.168.x.x or 127.0.0.1) during the PASV<br \/>  handshake. Upstream explicitly checks for this and automatically overrides it, falling back to reuse the control connection&#8217;s host (which is guaranteed to be<br \/>  routable).<br \/>  \u2022 On IPv6 connections, it automatically switches to EPSV (Extended Passive, RFC 2428) to negotiate only the port, preventing passive negotiation hangs.<\/p>\n<p>  3. Directory Listing Formats<\/p>\n<p>  \u2022 Upstream queries the server&#8217;s features (FEAT) and prioritizes MLSD (RFC 3659) for a standard machine-readable format.<br \/>  \u2022 If MLSD isn&#8217;t supported, we fall back to a custom, regex-free UNIX LIST (ls -l) parser that tolerates irregular column spacing, localized date formats, and<br \/>  symlink patterns.<\/p>\n<p>  4. No Silent Failures<\/p>\n<p>  \u2022 We use a strict 15-second connect timeout on both control and data channels to fail fast instead of hanging forever.<br \/>  \u2022 Every command and response is piped into a live Console\/Message Log (similar to FileZilla) at the bottom of the screen. If a legacy server fails to negotiate,<br \/>  you won&#8217;t be left guessing\u2014you can inspect the raw protocol logs and exact FTP error codes in real time.<\/p>\n<p>  Give it a try and let us know how it handles your toughest server connections!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>building on SwiftNIO instead of wrapping libcurl is the right long-term call &#8211; you get real async I\/O without fighting legacy C semantics. the dual-pane layout is the correct UX choice too; every sysadmin who&#8217;s used Midnight Commander or WinSCP has that muscle memory. two things I&#8217;d check before switching from Transmit: macOS keychain integration for SSH key passphrases (the workflow killer is re-entering keys on every session), and whether it handles S3\/Backblaze remotes or stays pure FTP\/SFTP. the FTP-only constraint is fine, but people will ask.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;Thanks for the encouraging words! We firmly believe that native SwiftNIO and a classic dual-pane interface are key to making a professional client feel right on macOS. <\/p>\n<p>Since this is our first release, some features might not be 100% perfect yet, but with your feedback and help, we&#8217;ll be happy to refine everything and make it perfect. <\/p>\n<\/p>\n<p>You can easily run Upstream alongside Transmit for a while\u2014since Upstream is free to download and offers a fully functional free tier, you can test it on your daily workflows with zero risk!<\/p>\n<p>Here is how we handle your two check-points:<\/p>\n<p>1. macOS Keychain for SSH Keys:<br \/>Yes, absolutely. We store both the SSH private key content itself and its optional passphrase securely in the native macOS Keychain (via usesKeyAuth, keyRef, and passphraseRef). <\/p>\n<p>Once imported via a standard file dialog, the app resolves them automatically on every connection. You do not need to re-enter your passphrases or select keys again between sessions.<\/p>\n<p>2. S3 and Cloud Providers:<br \/>Right now, Upstream stays strictly pure FTP, FTPS, and SFTP. <\/p>\n<p>We chose to focus entirely on perfecting these standard protocols first, ensuring high performance,<br \/>connection pooling, and NAT handling. That said, S3, Backblaze B2, and WebDAV support are definitely on our roadmap for future updates as we expand beyond this initial version.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Native-and-lightweight is exactly why I would switch off the Electron FTP clients \u2014 the wrapper bloat is real. On the security side, where do credentials live: does it use the macOS Keychain and read SSH keys\/agent from ~\/.ssh, or keep its own store? And can I import existing connection profiles from something like Transmit or FileZilla, or is it all manual entry on day one?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@hi_i_am_mimo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@hi_i_am_mimo<\/a>&nbsp;Thanks! Avoid the Electron wrapper bloat is exactly why we went 100% native (Swift, SwiftUI, and SwiftNIO). To answer your questions on security and profile migrations:<\/p>\n<p>1. Where do credentials live?<\/p>\n<p>\u2022 macOS Keychain: All passwords and private key passphrases are stored securely in the native macOS Keychain (never in plain text database files).<br \/>\u2022 iCloud Keychain Sync: The app supports iCloud synchronization, meaning your credentials can be securely synced across all your Macs.<\/p>\n<p>2. How are SSH keys handled with the App Sandbox?<\/p>\n<p>\u2022 Sandbox Compliance: Because Upstream is distributed on the Mac App Store, it is sandboxed and cannot silently read your ~\/.ssh directory or run a background SSH agent.<br \/>\u2022 Key Import: You can securely import your OpenSSH private keys (fully supporting ed25519 and RSA) using the macOS native open panel. Once selected, keys are parsed and the configuration is saved securely.<\/p>\n<p>3. Can you import existing profiles?<\/p>\n<p>\u2022 Yes, day-one import is supported! You can import your existing connection profiles directly from:<br \/>\u2022 FileZilla (via sitemanager.xml or XML export files)<br \/>\u2022 SSH Config: You can import your existing hosts and configurations directly from your ~\/.ssh\/config file to spin up SFTP profiles instantly.<br \/>\u2022 Transmit imports are currently on our roadmap.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#12<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/GLB7W37ZZMHG6V\" class=\"app-title\">Mailgent<\/a><\/p>\n<div class=\"one-liner\"> AI agents that can email, pay APIs, sign, and store secrets<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">48<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Mailgent\u4e3aAI\u667a\u80fd\u4f53\u63d0\u4f9b\u90ae\u7bb1\u3001\u52a0\u5bc6\u51ed\u8bc1\u5b58\u50a8\u30012FA\u8ba4\u8bc1\u3001\u52a0\u5bc6\u94b1\u5305\u652f\u4ed8\u3001\u6570\u5b57\u8eab\u4efd\u548c\u65e5\u5386\u7b49\u4e00\u5957\u4eba\u7c7b\u57fa\u7840\u8bbe\u65bd\uff0c\u901a\u8fc7\u4e00\u6b21API\u8c03\u7528\u5373\u53ef\u8ba9\u667a\u80fd\u4f53\u72ec\u7acb\u5b8c\u6210\u652f\u4ed8\u3001\u767b\u5f55\u548c\u901a\u4fe1\u7b49\u5b9e\u9645\u4efb\u52a1\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/1f8d7ff8-59ed-41f4-ab7b-eb5f230744e0.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/xim7Sg4V8mY\"><source src=\"https:\/\/youtu.be\/xim7Sg4V8mY\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/694ef727-4601-4ff7-aa52-e9f174949cef.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/xim7Sg4V8mY\"><source src=\"https:\/\/youtu.be\/xim7Sg4V8mY\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f73b5871-79be-460b-ae00-f27e254af18b.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/ca6bf7c9-b25f-44bb-b84f-3cbad52cb89c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e9307d56-f8ab-427b-aac6-3f877a09f85c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/2bb4ad9a-ea40-4054-93c9-6b488ebb970a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Email<\/span><br \/>\n            <span class=\"tag\">Payments<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u667a\u80fd\u4f53\u57fa\u7840\u8bbe\u65bd<\/span><br \/>\n            <span class=\"tag\">MCP\u534f\u8bae<\/span><br \/>\n            <span class=\"tag\">Agent\u8eab\u4efd<\/span><br \/>\n            <span class=\"tag\">\u52a0\u5bc6\u94b1\u5305<\/span><br \/>\n            <span class=\"tag\">2FA\u8ba4\u8bc1<\/span><br \/>\n            <span class=\"tag\">DKIM\u90ae\u7bb1<\/span><br \/>\n            <span class=\"tag\">\u51ed\u8bc1\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">x402\u652f\u4ed8<\/span><br \/>\n            <span class=\"tag\">\u81ea\u6cbbAgent<\/span><br \/>\n            <span class=\"tag\">API\u96c6\u6210<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u5173\u6ce8Agent\u81ea\u4e3b\u6ce8\u518c\u3001\u65e0\u4eba\u7c7b\u4ecb\u5165\u7684\u53ef\u884c\u6027\uff0c\u4ee5\u53ca\u5982\u4f55\u9a8c\u8bc1\u90ae\u4ef6\u5f52\u5c5e\u7279\u5b9a\u8eab\u4efd\u3002\u4e5f\u6709\u4eba\u63d0\u51faAgent\u957f\u5468\u671f\u8fd0\u884c\u540e\u7684\u72b6\u6001\u4e22\u5931\u95ee\u9898\u4e0d\u5c5e\u4e8eMailgent\u89e3\u51b3\u8303\u7574\u3002\u5f00\u53d1\u8005\u56de\u5e94\u5f3a\u8c03\u94b1\u5305\u8bbe\u9650\u9632\u6ee5\u7528\u3001Agent\u53ef\u81ea\u6211\u6ce8\u518c\uff0c\u5e76\u8ba4\u540c\u72b6\u6001\u8bb0\u5fc6\u662f\u672a\u6765\u9700\u8865\u9f50\u7684\u72ec\u7acb\u5c42\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Mailgent\u5728AI Agent\u57fa\u7840\u8bbe\u65bd\u5efa\u8bbe\u4e0a\u7ed9\u51fa\u4e00\u4e2a\u52a1\u5b9e\u7b54\u6848\u2014\u2014\u5b83\u6ca1\u6709\u5439\u5618\u901a\u7528\u4eba\u5de5\u667a\u80fd\uff0c\u800c\u662f\u7cbe\u51c6\u89e6\u53ca\u4e86\u5f53\u4e0bAgent\u8d70\u5411\u5b9e\u8df5\u7684\u6700\u5927\u786c\u4f24\uff1a\u65e0\u6cd5\u72ec\u7acb\u5b8c\u6210\u652f\u4ed8\u3001\u8ba4\u8bc1\u548c\u901a\u4fe1\u3002\u8fd9\u4e9b\u770b\u4f3c\u7410\u788e\u7684\u201c\u6700\u540e\u4e00\u516c\u91cc\u201d\u96be\u9898\uff0c\u6070\u6070\u662fAgent\u4ece\u73a9\u5177\u8d70\u5411\u5de5\u5177\u7684\u5173\u952e\u969c\u788d\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ea7\u54c1\u4ef7\u503c\u4f53\u73b0\u5728\u4e09\u65b9\u9762\uff1a\u4e00\u662f\u5c06\u4eba\u7c7b\u9ed8\u8ba4\u7684\u57fa\u7840\u8bbe\u65bd\u62bd\u8c61\u4e3aAgent\u539f\u751fAPI\uff0c\u6d88\u9664\u4e86\u5f00\u53d1\u8005\u4e3a\u6bcf\u4e2aAgent\u91cd\u590d\u96c6\u6210\u90ae\u4ef6\u3001\u51ed\u8bc1\u3001\u652f\u4ed8\u7b49\u6a21\u5757\u7684\u4f53\u529b\u6d3b\uff1b\u4e8c\u662f\u901a\u8fc7\u52a0\u5bc6\u94b1\u5305\u548c\u6d88\u8d39\u9650\u989d\u5b9e\u73b0\u4e86Agent\u72ec\u7acb\u652f\u4ed8\u80fd\u529b\uff0c\u8fd9\u5728\u5f53\u524dAI\u5e94\u7528\u4e2d\u51e0\u4e4e\u7a7a\u767d\uff0c\u5374\u53c8\u662f\u5b9e\u73b0\u957f\u671f\u3001\u590d\u6742\u4efb\u52a1\u6d41\u7a0b\u81ea\u52a8\u5316\u7684\u5fc5\u8981\u524d\u63d0\uff1b\u4e09\u662f\u63d0\u4f9b\u53ef\u9a8c\u8bc1\u8eab\u4efd\uff08DID\uff09\uff0c\u8ba9Agent\u80fd\u8bc1\u660e\u5176\u201c\u771f\u5b9e\u201d\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u51b7\u9759\u6765\u770b\uff0cMailgent\u89e3\u51b3\u7684\u662fAgent\u7684\u201c\u751f\u5b58\u95ee\u9898\u201d\uff0c\u800c\u975e\u201c\u667a\u529b\u95ee\u9898\u201d\u3002\u5b83\u53ea\u63d0\u4f9b\u5de5\u5177\uff0c\u5374\u4e0d\u89e3\u51b3Agent\u7684\u51b3\u7b56\u8d28\u91cf\u3001\u72b6\u6001\u8bb0\u5fc6\u3001\u5931\u8d25\u6062\u590d\u548c\u5b89\u5168\u6027\u95ee\u9898\u3002\u5c24\u5176\u7528\u6237\u6307\u51fa\u7684\u201cAgent\u72b6\u6001\u4e22\u5931\u201d\u75db\u70b9\uff0cMailgent\u660e\u786e\u672a\u6d89\u53ca\uff0c\u8fd9\u610f\u5473\u7740\u5b83\u79bb\u771f\u6b63\u7684\u201c\u65e0\u4eba\u503c\u5b88Agent\u201d\u4ecd\u6709\u8ddd\u79bb\u3002\u6b64\u5916\uff0c\u5c06\u5168\u5957\u57fa\u7840\u8bbe\u65bd\u7ed1\u5b9a\u4e8e\u4e00\u5bb6\u7684API\u67b6\u6784\uff0c\u4e5f\u6709\u4f9b\u5e94\u5546\u9501\u5b9a\u98ce\u9669\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u771f\u6b63\u503c\u94b1\u7684\u6d1e\u5bdf\u662f\uff1aAgent\u7ecf\u6d4e\u6b63\u5728\u50ac\u751f\u4e00\u79cd\u4e2d\u95f4\u4ef6\u54c1\u7c7b\u7684\u8bde\u751f\uff0c\u5373\u201cAI\u539f\u751f\u7684DevOps\u57fa\u7840\u8bbe\u65bd\u201d\uff0cMailgent\u6070\u597d\u7ad9\u5728\u8fd9\u4e2a\u8d5b\u9053\u7684\u8d77\u8dd1\u7ebf\u4e0a\u3002\u4f46\u80fd\u5426\u7387\u5148\u8de8\u8d8a\u4ece\u5de5\u5177\u5230\u5e73\u53f0\u7684\u9e3f\u6c9f\uff0c\u8fd8\u53d6\u51b3\u4e8e\u5176\u80fd\u5426\u6c89\u6dc0\u51fa\u8db3\u591f\u5f3a\u7684\u751f\u6001\u805a\u5408\u529b\u548c\u4fe1\u4efb\u673a\u5236\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Mailgent<\/span>\n                <\/div>\n<div class=\"comment-content\">Agents keep hitting the same walls: no inbox, no safe credential store, no way past a 2FA gate, no way to pay for a downstream API, no verifiable identity. Mailgent fixes this in one curl call. Every agent gets a real inbox (DKIM, threading), encrypted vault, TOTP\/2FA, USDC wallet for x402-priced API payments, verifiable DID (Ed25519), and a calendar. MCP-native. Works with Claude, Cursor, OpenAI, LangChain, CrewAI, Hermes Agent, OpenClaw, NemoClaw, n8n, and more. Everything live in seconds.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch Danny! It&#8217;ll be interesting to test with our own agent. Everyone who has built an agent want to make its use as smooth as possible. Great idea!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@luigi_receiptorai\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@luigi_receiptorai<\/a>&nbsp;Exactly this \u2014 the last-mile friction is always the stuff nobody talks about in demos. Curious what your agent&#8217;s biggest blocker has been in practice?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey PH \ud83d\udc4b Danny here, maker of Mailgent.<\/p>\n<p>Here&#8217;s the problem that drove this: you build a capable agent, and it immediately hits a wall. No inbox. No safe place to store an API key. Can&#8217;t get past a 2FA prompt. Can&#8217;t pay for a downstream service. Can&#8217;t prove who it is.<\/p>\n<p>Agents are trying to operate in a world built for humans \u2014 and they have none of the infrastructure humans take for granted.<\/p>\n<p>Mailgent is one API call that fixes that:<\/p>\n<p>\ud83d\udcec Mail \u2014 a real <a href=\"mailto:name@mailgent.dev\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">name@mailgent.dev<\/a> inbox with DKIM, threading, labels. Send, receive, search.<br \/>\n\ud83d\udd10 Vault \u2014 encrypted credential store scoped to the agent&#8217;s key. No hardcoded secrets.<br \/>\n\ud83d\udd11 2FA \/ TOTP \u2014 time-based codes so agents can authenticate through 2FA gates.<br \/>\n\ud83d\udcb3 Wallet \u2014 USDC on Base. Agents pay x402-priced APIs per call, under spending limits you set. This is the part that makes fully autonomous agents actually possible without handing them your card.<br \/>\n\ud83e\udeaa Identity \u2014 a did:web keypair. Agents sign requests and prove who they are.<br \/>\n\ud83d\udcc5 Calendar \u2014 create events, manage availability, share iCal feeds.<\/p>\n<p>One curl call, everything live in seconds:<\/p>\n<p>curl -X POST <a href=\"https:\/\/api.mailgent.dev\/v0\/agent-signup\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/api.mailgent.dev\/v0\/agen&#8230;<\/a><\/p>\n<p>MCP-native \u2014 drop the returned key into your MCP server and your agent immediately gets mail_send, vault_store, identity_sign, payments, and more as ready-made tools. Works with Claude, Cursor, ChatGPT, OpenAI, LangChain, CrewAI, LlamaIndex, Hermes Agent, OpenClaw, NemoClaw, n8n, Vercel, and any MCP client.<\/p>\n<p>We built this because we needed it ourselves. Our own agents kept hitting these same walls.<\/p>\n<p>One question I&#8217;m genuinely curious about: what&#8217;s the wall your agents keep hitting that you haven&#8217;t been able to work around? Specific scenario \u2014 there are probably capability gaps we should close next.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dannyheng\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dannyheng<\/a>&nbsp;How would another service verify that an email actually belongs to a specific agent identity?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Danny, this is a genuinely interesting direction. The thought of an assistant that can quietly handle the boring everyday errands on its own, without someone hovering over it, is the part I keep coming back to.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@emmanuel_costa5\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@emmanuel_costa5<\/a>&nbsp;&#8220;That&#8217;s exactly the unlock we&#8217;re going for \u2014 the agent that can actually finish the job, not just start it. The &#8216;someone hovering over it&#8217; part is what kills real autonomy. Once it has its own inbox, can handle a 2FA prompt, pay for what it needs, and prove who it is \u2014 you can actually step away. What errand would you hand off first if it could do all of that?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Great product!! At what point will the agent need human intervention, or will that not be needed at all despite the magnitude of the problem it faces?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@raaghav_naraayan_m_v\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@raaghav_naraayan_m_v<\/a>&nbsp;&#8220;Good question \u2014 the honest answer is it depends on what you&#8217;re automating. Mailgent handles the infrastructure layer (auth, payments, identity) so the agent doesn&#8217;t need to stop and ask a human for a credential or a card. But decision-making guardrails \u2014 when should it escalate, who approves a transaction above a threshold \u2014 that&#8217;s a layer on top. What&#8217;s your use case? That&#8217;d give a more specific answer.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Genuine question for the makers \u2014 when your agent needs to call a paid API mid-workflow (Serper, a data vendor, anything per-call), how are you billing it today? Shared team card? Hardcoded key? I&#8217;ve never found a clean answer that doesn&#8217;t involve giving the agent unlimited spend.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@kcchan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@kcchan<\/a>&nbsp;Shared card with no per-agent limits is exactly the scenario that pushed us to build the wallet. With Mailgent each agent gets its own USDC wallet on Base \u2014 you set a spending cap, the agent pays x402-priced APIs per call, and you get a full transaction log per agent. No card exposure, no guessing which agent ran up the bill. Still early but that&#8217;s the specific problem we&#8217;re solving.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey <a href=\"https:\/\/www.producthunt.com\/@dannyheng\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"dannyheng\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dannyheng<\/a>,<\/p>\n<p>Can an AI agent onboard itself \u2014 get its own login, credentials, and access \u2014 with zero human in the loop? How does it work?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@aparna_rajesh\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@aparna_rajesh<\/a>&nbsp;Thats a great question! and yes agents can onboard itself! just ask the agent to visit our page and it will be able to do so!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch! What\u2019s been the most surprising use case people have brought up so far?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@virajkadakia\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@virajkadakia<\/a>&nbsp;Honestly \u2014 the self-onboarding one. <a href=\"https:\/\/www.producthunt.com\/@aparna_rajesh\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"aparna_rajesh\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@aparna_rajesh<\/a> asked earlier whether an agent could sign itself up with zero human in the loop, and the answer is yes, it&#8217;s a single POST call. But we didn&#8217;t expect that to resonate as much as it did. The idea of an agent provisioning its own identity before starting a job, rather than inheriting a human&#8217;s credentials, seems to click for people immediately. What&#8217;s your use case?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The &#8220;no inbox, no credential store&#8221; framing is exactly what I had this conversation about yesterday on the Weavz launch. Funny that two products solving overlapping pieces of the same problem launched a day apart, feels like a category that&#8217;s about to consolidate hard.<\/p>\n<\/p>\n<p>Honest answer to your question, the wall I keep hitting isn&#8217;t an agent capability, it&#8217;s an agent state problem. After a long run, the agent has implicit context (what it learned, what it ruled out, why it picked X over Y) that doesn&#8217;t survive a restart. Mail and vault don&#8217;t help there because the loss is upstream of any I\/O. Curious if you&#8217;ve thought about that or if it&#8217;s outside Mailgent&#8217;s scope.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@elias_motionfy\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@elias_motionfy<\/a>&nbsp;Fair point \u2014 agent memory is genuinely outside what we&#8217;re building. Mailgent is infrastructure; the state problem you&#8217;re describing sits at a different layer entirely.<\/p>\n<p>That said, one pattern we&#8217;ve seen in the wild: agents writing structured summaries to their own inbox after each run \u2014 a searchable, persistent log they can retrieve on restart. Not a real solution but it fills the gap until dedicated memory tooling matures.<\/p>\n<p>Curious about Weavz \u2014 what layer were they working on? Didn&#8217;t catch that launch.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#13<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/7I3E2BYT2R4F2D\" class=\"app-title\">Loop by ads.expert<\/a><\/p>\n<div class=\"one-liner\">The flight simulator for paid media, with built in AI coach<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">28<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Loop\u662f\u4e00\u4e2aGoogle Ads\u4ed8\u8d39\u5a92\u4f53\u6a21\u62df\u5668\uff0c\u5141\u8bb8\u7528\u6237\u5728\u4eff\u771f\u62cd\u5356\u73af\u5883\u4e2d\u65e0\u98ce\u9669\u8bd5\u9519\uff0c\u5e76\u914d\u5907AI\u6559\u7ec3\u5b9e\u65f6\u89e3\u6790\u6570\u636e\u3001AI\u5ba1\u8ba1\u5e08\u8bca\u65ad\u771f\u5b9e\u8d26\u6237\uff0c\u89e3\u51b3\u65b0\u624b\u201c\u70e7\u94b1\u5b66\u4e60\u201d\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1364e8f9-bdc0-43dd-a039-20bb4711e110.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/fa00c536-c5e4-49b1-ac74-3998b5b28fe5.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/b2b36a58-4b11-4a7f-b798-cdc038ebc05d.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f03aed88-6b9f-4eca-8181-5e8e61f17be7.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f044d3e2-74fd-44dd-b029-49f4fe784b3b.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/be7f1a5d-1233-4e8e-8570-0cafdca60c6c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/3cf2dc8e-19f5-4bc3-84db-c66efc9f80d0.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/5d2674b4-ddd7-41b8-9a77-2970f0a19e08.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/23da99ec-ddb8-40e6-b8ea-bc33a13f3d44.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/PC2sLwQkMR4\"><source src=\"https:\/\/youtu.be\/PC2sLwQkMR4\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Marketing<\/span><br \/>\n            <span class=\"tag\">Education<\/span><br \/>\n            <span class=\"tag\">Advertising<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u5e7f\u544a\u6a21\u62df\u5668<\/span><br \/>\n            <span class=\"tag\">\u8c37\u6b4c\u5e7f\u544a<\/span><br \/>\n            <span class=\"tag\">\u4ed8\u8d39\u5a92\u4f53\u57f9\u8bad<\/span><br \/>\n            <span class=\"tag\">AI\u6559\u7ec3<\/span><br \/>\n            <span class=\"tag\">\u8d26\u6237\u5ba1\u8ba1<\/span><br \/>\n            <span class=\"tag\">\u98ce\u9669\u5b66\u4e60<\/span><br \/>\n            <span class=\"tag\">\u62cd\u5356\u5f15\u64ce<\/span><br \/>\n            <span class=\"tag\">\u8425\u9500\u4f18\u5316<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u521b\u59cb\u4ebaNilay\u53cd\u9988\u7528\u6237\u671f\u5f85\u5df2\u4e45\uff0c\u4e3b\u8981\u5efa\u8bae\u96c6\u4e2d\u5728\u6a21\u62df\u5668\u4e0e\u771f\u5b9e\u8d26\u6237\u7684\u5dee\u5f02\u6821\u51c6\u53ca\u591a\u5e73\u53f0\u6269\u5c55\uff08Meta\u3001LinkedIn\uff09\u3002\u56de\u5e16\u4e2d\u8868\u8fbe\u4e86\u5bf9\u529f\u80fd\u843d\u5730\u7684\u8ba4\u53ef\uff0c\u672a\u63d0\u53ca\u660e\u663e\u4f7f\u7528\u969c\u788d\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Loop\u7684\u5de7\u5999\u4e4b\u5904\u5728\u4e8e\u5b83\u590d\u523b\u4e86\u98de\u884c\u6a21\u62df\u5668\u7684\u5546\u4e1a\u903b\u8f91\u2014\u2014\u8ba9\u7528\u6237\u5728\u96f6\u6210\u672c\u73af\u5883\u4e2d\u201c\u5760\u673a\u201d\u5e76\u590d\u76d8\u3002\u5b83\u4e0d\u662f\u53c8\u4e00\u4e2a\u8bfe\u7a0b\u5e73\u53f0\uff0c\u800c\u662f\u4e00\u4e2a\u57fa\u4e8e\u771f\u5b9e\u62cd\u5356\u5f15\u64ce\uff08PULSE\uff09\u7684\u51b3\u7b56\u8bad\u7ec3\u573a\u3002\u5176\u6838\u5fc3\u4ef7\u503c\u4e0d\u5728\u201c\u6559\u5b66\u201d\uff0c\u800c\u5728\u201c\u75db\u82e6\u9884\u6f14\u201d\uff1a\u901a\u8fc7AI\u6559\u7ec3ARIA\u89e3\u91ca\u7ade\u4ef7\u6ce2\u52a8\u3001\u8d28\u91cf\u5f97\u5206\u53d8\u5316\uff0c\u5c06\u62bd\u8c61\u8d26\u6237\u6307\u6807\u8f6c\u5316\u4e3a\u53ef\u9a8c\u8bc1\u7684\u56e0\u679c\u94fe\u6761\u3002\u66f4\u7280\u5229\u7684\u4e00\u70b9\u662f\uff0cVERA\u5ba1\u8ba1\u529f\u80fd\u628a\u6a21\u62df\u4e0e\u771f\u5b9e\u8d26\u6237\u8fde\u63a5\u8d77\u6765\uff0c\u8ba9\u5b66\u5230\u7684\u6559\u8bad\u7acb\u523b\u53cd\u54fa\u5b9e\u6218\uff0c\u5f62\u6210\u95ed\u73af\u3002\u4f46\u9700\u8b66\u60d5\u4e24\u4e2a\u6f5c\u5728\u9677\u9631\uff1a\u4e00\u662f\u6a21\u62df\u5668\u5bf9\u7ade\u4e89\u73af\u5883\u7684\u7b80\u5316\u662f\u5426\u4f1a\u5bfc\u81f4\u7528\u6237\u5f62\u6210\u201c\u9519\u8bef\u808c\u8089\u8bb0\u5fc6\u201d\uff08\u6bd4\u5982\u5ffd\u7565\u5b63\u8282\u6027\u3001\u7a81\u53d1\u653f\u7b56\u53d8\u5316\uff09\uff1b\u4e8c\u662fAI\u6559\u7ec3\u7684\u201c\u89e3\u91ca\u201d\u662f\u5426\u4ec5\u4e3a\u7edf\u8ba1\u76f8\u5173\u6027\u800c\u975e\u56e0\u679c\u6d1e\u89c1\uff0c\u4e00\u65e6\u7528\u6237\u6df1\u5ea6\u4f9d\u8d56\uff0c\u53ef\u80fd\u5f31\u5316\u6389\u6570\u636e\u5206\u6790\u7684\u5e95\u5c42\u80fd\u529b\u3002\u603b\u4f53\u6765\u8bf4\uff0c\u8fd9\u662f\u4ed8\u8d39\u5a92\u4f53\u57f9\u8bad\u9886\u57df\u5c11\u6709\u7684\u201c\u9ad8\u5bc6\u5ea6\u53cd\u9988\u201d\u5de5\u5177\uff0c\u4f46\u5b83\u7684\u5929\u82b1\u677f\u53d6\u51b3\u4e8e\u6a21\u62df\u5f15\u64ce\u7684\u771f\u5b9e\u5ea6\u4e0eAI\u89e3\u91ca\u7684\u51c6\u786e\u6027\u2014\u2014\u800c\u8fd9\u4e24\u70b9\uff0c\u5bf9\u4efb\u4f55\u6a21\u62df\u5668\u90fd\u662f\u7ec8\u6781\u6311\u6218\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Loop by ads.expert<\/span>\n                <\/div>\n<div class=\"comment-content\">Most people learn Google Ads two ways: watch a course, or burn real budget making mistakes. Loop is the third way. Build a real campaign, run it through a live auction simulation, and watch impressions, clicks, and conversions play out week by week against simulated competitors. ARIA, an AI coach, explains why every number moved and what to fix next. VERA can even audit your real Google Ads account against the same engine. Risk-free. Free to start.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey everyone \ud83d\udc4b<\/p>\n<p>I&#8217;m Nilay, maker of Loop. I run a paid media consultancy, ads.expert, and I&#8217;ve spent years managing Google Ads budgets for clients.<\/p>\n<p>What inspired it: the same painful pattern, over and over. The only way anyone learns paid media is by spending real money. Juniors get handed live budgets. Founders torch a few thousand dollars &#8220;figuring it out.&#8221; Courses and YouTube tell you how it works, but they never respond to your choices. There was no flight simulator for this, so I built one. \u2708\ufe0f<\/p>\n<p>The problem I wanted to solve: make the expensive mistakes on a simulated budget, so your first real campaign is your best one, not your most expensive lesson.<\/p>\n<p>How it evolved while building: it started as a simple campaign builder, but a builder that just stores your settings teaches you nothing. So I built a real auction engine (PULSE) that runs your campaign week by week against simulated competitors, with Quality Score, cost, and conversions all moving like they do in a real account. Then I realized seeing the numbers isn&#8217;t enough, you need to know why they moved, so I added ARIA, an AI coach grounded in your actual campaign, not generic advice. And finally, to bridge practice and reality, VERA, an AI auditor that runs a read-only audit of your live Google Ads account.<\/p>\n<p>You can build and run real Search and Performance Max campaigns today. Free to start, no card. Meta and LinkedIn simulators are next.<\/p>\n<p>Make your bad campaigns here. No bad karma. \ud83c\udf00<\/p>\n<p>I&#8217;m in the comments all day, would genuinely love your feedback, what&#8217;s confusing, what&#8217;s missing, what you&#8217;d want to see next. \ud83d\ude4f<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congratulations on the launch, <a href=\"https:\/\/www.producthunt.com\/@nilay1101\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"nilay1101\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@nilay1101<\/a> ! \ud83c\udf89<\/p>\n<\/p>\n<p>Excited to see this finally go live. Wishing you and the team a fantastic launch day and all the best for what&#8217;s ahead. Looking forward to seeing it grow. \ud83d\ude80<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@rajeev_nayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rajeev_nayan<\/a>&nbsp;Thank you, Rajeev!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#14<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/4EKV6UCVRYEEU3\" class=\"app-title\">Blinked<\/a><\/p>\n<div class=\"one-liner\">LinkedIn outreach without breaking the law<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">27<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Blinked \u662f\u4e00\u6b3e\u514d\u8d39\u6d4f\u89c8\u5668\u63d2\u4ef6\uff0c\u5728\u4e0d\u79bb\u5f00 LinkedIn \u9875\u9762\u7684\u60c5\u51b5\u4e0b\uff0c\u5e2e\u52a9\u9500\u552e\u4eba\u5458\u7ba1\u7406\u6f5c\u5728\u5ba2\u6237\u7ebf\u7d22\u3001\u64b0\u5199\u4e2a\u6027\u5316\u6d88\u606f\u5e76\u8ddf\u8fdb\uff0c\u89e3\u51b3\u624b\u52a8\u8ddf\u8fdb\u6548\u7387\u4f4e\u4e14\u9690\u79c1\u98ce\u9669\u9ad8\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f818e768-84ef-41d6-82ac-bae675f84b99.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8cf83072-b567-40a3-862d-1bca004d63aa.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/c7c5554c-3e60-46eb-82ac-75b0c5a0d1e9.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Chrome Extensions<\/span><br \/>\n            <span class=\"tag\">Sales<\/span><br \/>\n            <span class=\"tag\">LinkedIn<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">LinkedIn \u63d2\u4ef6<\/span><br \/>\n            <span class=\"tag\">\u9500\u552e\u5916\u8054<\/span><br \/>\n            <span class=\"tag\">\u5ba2\u6237\u7ebf\u7d22\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u4e2a\u6027\u5316\u6d88\u606f<\/span><br \/>\n            <span class=\"tag\">\u8ddf\u8fdb\u63d0\u9192<\/span><br \/>\n            <span class=\"tag\">\u9690\u79c1\u5b89\u5168<\/span><br \/>\n            <span class=\"tag\">\u672c\u5730\u6570\u636e\u5904\u7406<\/span><br \/>\n            <span class=\"tag\">\u6d4f\u89c8\u5668\u6269\u5c55<\/span><br \/>\n            <span class=\"tag\">\u793e\u4ea4\u9500\u552e<\/span><br \/>\n            <span class=\"tag\">\u514d\u8d39\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u521b\u59cb\u4eba\u8868\u793a\u56e0\u624b\u52a8\u8ddf\u8fdb\u6548\u7387\u4f4e\u800c\u5f00\u53d1\u672c\u5de5\u5177\uff0c\u5f3a\u8c03\u4e0d\u81ea\u52a8\u5316\u9a9a\u6270\uff0c\u4e13\u6ce8\u63d0\u5347\u751f\u4ea7\u529b\u3002\u7528\u6237\u5173\u5fc3\u76c8\u5229\u6a21\u5f0f\uff0c\u56de\u7b54\u6682\u65e0\u6536\u8d39\u8ba1\u5212\u3002\u4e00\u4f4d\u7528\u6237\u8ba4\u53ef\u201c\u5728\u5916\u8054\u4e2d\u5efa\u7acb\u4fe1\u4efb\u5f88\u91cd\u8981\u201d\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Blinked \u7684\u201c\u514d\u8d39\u201d\u548c\u201c\u672c\u5730\u4f18\u5148\u201d\u7b56\u7565\u503c\u5f97\u73a9\u5473\u3002\u5728 LinkedIn \u5916\u8054\u5de5\u5177\u5e02\u573a\u5df2\u662f\u7ea2\u6d77\u7684\u4eca\u5929\uff0c\u5927\u591a\u6570 SaaS \u5de5\u5177\uff08\u5982 Expandi\u3001LiProspect\uff09\u90fd\u5b58\u5728\u4e24\u4e2a\u81f4\u547d\u95ee\u9898\uff1a\u4e00\u662f\u8fc7\u4e8e\u5f3a\u8c03\u81ea\u52a8\u5316\u5bfc\u81f4\u8d26\u53f7\u98ce\u63a7\uff1b\u4e8c\u662f\u5c06\u7528\u6237\u6570\u636e\u4e0a\u4f20\u81f3\u4e91\u7aef\uff0c\u76f4\u63a5\u8fdd\u53cd LinkedIn \u4f7f\u7528\u6761\u6b3e\u5e76\u5f15\u53d1\u9690\u79c1\u62c5\u5fe7\u3002\n            <\/p>\n<p class=\"ai-content\">\n                Blinked \u7684\u5dee\u5f02\u5316\u5728\u4e8e\u201c\u505a\u51cf\u6cd5\u201d\u2014\u2014\u5b83\u4e0d\u8ffd\u6c42\u5168\u81ea\u52a8\uff0c\u800c\u662f\u4f5c\u4e3a\u201c\u751f\u4ea7\u529b\u5c42\u201d\u8f85\u52a9\u4eba\u5de5\u64cd\u4f5c\u3002\u6570\u636e\u7559\u5b58\u5728\u6d4f\u89c8\u5668\u4e2d\u8ba9\u5176\u5728\u5408\u89c4\u6027\u548c\u5b89\u5168\u6027\u4e0a\u6bd4\u4f20\u7edf\u5de5\u5177\u9ad8\u51fa\u4e00\u4e2a\u7ef4\u5ea6\uff0c\u8fd9\u6070\u597d\u5207\u4e2d\u4e86\u9500\u552e\u4e13\u4e1a\u4eba\u58eb\u5728\u8d26\u53f7\u5b89\u5168\u4e0e\u6570\u636e\u9690\u79c1\u4e0a\u7684\u6838\u5fc3\u7126\u8651\u3002\u521b\u59cb\u4eba\u660e\u786e\u58f0\u79f0\u201c\u6ca1\u6709\u76c8\u5229\u8ba1\u5212\u201d\uff0c\u66f4\u50cf\u662f\u5728\u6362\u9053\u62a2\u4efd\u989d\uff1a\u5148\u653e\u5f03\u4ed8\u8d39\u95e8\u69db\uff0c\u7528\u514d\u8d39\u4e14\u5b89\u5168\u7684\u672c\u5730\u5de5\u5177\u5feb\u901f\u79ef\u7d2f\u79cd\u5b50\u7528\u6237\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u98ce\u9669\u540c\u6837\u660e\u663e\uff1a\u7eaf\u514d\u8d39\u6a21\u5f0f\u96be\u4ee5\u7ef4\u7cfb\u957f\u671f\u5f00\u53d1\u8fed\u4ee3\uff0c\u4e14\u7f3a\u5c11\u4e91\u7aef\u540c\u6b65\u529f\u80fd\u4f1a\u9650\u5236\u8de8\u8bbe\u5907\u5de5\u4f5c\u6d41\uff0c\u6ca6\u4e3a\u6781\u5ba2\u73a9\u5bb6\u7684\u8f85\u52a9\u5de5\u5177\u3002\u5728 Linkedin \u4e25\u683c\u9650\u5236 API \u4e0e\u53cd\u722c\u7684\u73af\u5883\u4e0b\uff0c\u4e00\u65e6\u89c4\u6a21\u6269\u5927\uff0c\u6d4f\u89c8\u5668\u63d2\u4ef6\u906d\u9047\u5c4f\u853d\u6216\u7528\u6237\u8981\u6c42\u591a\u8bbe\u5907\u534f\u540c\uff0cBlinked \u5c06\u9762\u4e34\u751f\u5b58\u8003\u9a8c\u3002\u5b83\u5f53\u524d\u771f\u6b63\u7684\u4ef7\u503c\u4e0d\u5728\u4e8e\u98a0\u8986\u5e02\u573a\uff0c\u800c\u5728\u4e8e\u5411\u884c\u4e1a\u8bc1\u660e\uff1a\u5728\u5916\u94fe\u62d3\u5ba2\u8fd9\u4ef6\u4e8b\u4e0a\uff0c\u201c\u5c0a\u91cd\u89c4\u5219\u201d\u4e0e\u201c\u63d0\u5347\u6548\u7387\u201d\u53ef\u4ee5\u5e76\u5b58\uff0c\u8fd9\u79cd\u7406\u5ff5\u4e0a\u7684\u7ea0\u504f\u8fdc\u6bd4\u529f\u80fd\u5806\u780c\u66f4\u503c\u5f97\u5173\u6ce8\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Blinked<\/span>\n                <\/div>\n<div class=\"comment-content\">A free Chrome extension that helps you research leads, personalize messages, and manage outreach on LinkedIn. Local first. Your data never leaves your browser.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey Product Hunt! \ud83d\udc4b<\/p>\n<p>I&#8217;m excited to share Blinked with you today.<\/p>\n<p>I built Blinked after spending countless hours doing LinkedIn outreach for my own products and clients. The biggest challenge wasn&#8217;t finding prospects. It was keeping track of them, writing personalized connection notes, remembering follow-ups, and deciding who was actually worth reaching out to.<\/p>\n<p>Most tools try to automate everything. I wanted to build something different.<\/p>\n<p>Blinked acts as a productivity layer for LinkedIn. It helps you score leads, organize prospect lists, create personalized connection notes, and manage follow-ups without leaving LinkedIn.<\/p>\n<p>The goal is simple: spend less time on repetitive outreach tasks and more time building real conversations.<\/p>\n<p>I&#8217;d love to hear your thoughts:<\/p>\n<p>\u2022 How are you currently managing LinkedIn outreach?<br \/>\n\u2022 What&#8217;s the most frustrating part of your prospecting workflow?<br \/>\n\u2022 Which Blinked feature would save you the most time?<\/p>\n<p>I&#8217;ll be around all day to answer questions and collect feedback.<\/p>\n<p>Thanks for checking out Blinked!<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>How would you monetize it?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@rojar_finn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rojar_finn<\/a>&nbsp;No plans for that right now. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Trust is so important with outreach now. Great extension. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#15<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/R4DE2WH5PSZHVC\" class=\"app-title\">TanStarter<\/a><\/p>\n<div class=\"one-liner\">Ship Faster with TanStack, Cost Less with Cloudflare<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">22<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>TanStarter\u662f\u4e00\u4e2a\u57fa\u4e8eTanStack Start\u548cCloudflare Workers\u7684\u5168\u6808SaaS\u6837\u677f\uff0c\u4e3a\u5f00\u53d1\u8005\u63d0\u4f9b\u5f00\u7bb1\u5373\u7528\u7684AI\u3001\u652f\u4ed8\u3001\u6570\u636e\u5e93\u7b49\u6a21\u5757\uff0c\u89e3\u51b3SaaS\u9879\u76ee\u91cd\u590d\u642d\u5efa\u57fa\u7840\u67b6\u6784\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/14dfa96a-1d01-4797-9ea1-bbada4609c3d.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/XVSQZ_-r9u4\"><source src=\"https:\/\/youtu.be\/XVSQZ_-r9u4\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/4d4824d0-17ed-49bc-80d8-04d26e2fbd75.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">SaaS<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Development<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">SaaS\u6837\u677f<\/span><br \/>\n            <span class=\"tag\">TanStack Start<\/span><br \/>\n            <span class=\"tag\">Cloudflare Workers<\/span><br \/>\n            <span class=\"tag\">\u5168\u6808\u5f00\u53d1<\/span><br \/>\n            <span class=\"tag\">\u652f\u4ed8\u96c6\u6210<\/span><br \/>\n            <span class=\"tag\">AI\u96c6\u6210<\/span><br \/>\n            <span class=\"tag\">\u8ba4\u8bc1\u6388\u6743<\/span><br \/>\n            <span class=\"tag\">\u6570\u636e\u5e93\u6a21\u677f<\/span><br \/>\n            <span class=\"tag\">\u4ea7\u54c1\u5f00\u53d1\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u6548\u7387<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237Fox\uff08\u5236\u4f5c\u8005\uff09\u9610\u8ff0\u4e86\u6784\u5efa\u52a8\u673a\uff1aSaaS\u9879\u76ee\u53cd\u590d\u914d\u7f6e\u8eab\u4efd\u9a8c\u8bc1\u3001\u652f\u4ed8\u3001\u6570\u636e\u5e93\u7b49\u57fa\u7840\u6a21\u5757\u8017\u65f6\u8d39\u529b\u3002\u4ed6\u9080\u8bf7\u793e\u533a\u5bf9\u6280\u672f\u6808\u3001\u4e0a\u624b\u6d41\u7a0b\u53ca\u672a\u6765\u6a21\u5757\u63d0\u4f9b\u53cd\u9988\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                TanStarter\u7cbe\u51c6\u5207\u4e2d\u4e86\u72ec\u7acb\u5f00\u53d1\u8005\u548c\u5c0f\u56e2\u961f\u7684\u201c\u91cd\u590d\u9020\u8f6e\u5b50\u201d\u4e4b\u75db\uff0c\u5c06TanStack\uff08\u517c\u987e\u524d\u540e\u7aef\u4e0e\u6570\u636e\u6d41\uff09\u4e0eCloudflare Workers\uff08\u8fb9\u7f18\u8ba1\u7b97+\u4f4e\u8fd0\u7ef4\u6210\u672c\uff09\u8fd9\u4e00\u9ad8\u6027\u4ef7\u6bd4\u7ec4\u5408\u6253\u5305\uff0c\u76f4\u51fb\u201c\u5feb\u901f\u4e0a\u7ebf\u201d\u4e0e\u201c\u63a7\u5236\u6210\u672c\u201d\u7684\u53cc\u91cd\u9700\u6c42\u3002\u5176\u6a21\u5757\u8986\u76d6\u4eceAI\u5230\u652f\u4ed8\uff0c\u91ce\u5fc3\u4e0d\u5c0f\uff0c\u4f46\u771f\u6b63\u7684\u62a4\u57ce\u6cb3\u4e0d\u5728\u4e8e\u7f57\u5217\u529f\u80fd\uff0c\u800c\u5728\u4e8e\u6a21\u5757\u95f4\u7684\u96c6\u6210\u6df1\u5ea6\u4e0e\u4ee3\u7801\u8d28\u91cf\uff1a\u662f\u5426\u771f\u6b63\u5b9e\u73b0\u201c\u5f00\u7bb1\u5373\u7528\u201d\u800c\u975e\u201c\u5f00\u7bb1\u5373\u4fee\u201d\uff1f22\u7968\u7684\u521d\u671f\u70ed\u5ea6\u8868\u660e\u5176\u6982\u5ff5\u53d7\u8ba4\u53ef\uff0c\u4f46\u9700\u6ce8\u610f\uff1a\u6837\u677f\u5e02\u573a\u5df2\u6781\u5ea6\u62e5\u6324\uff08Laravel Spark\u3001Next.js Boilerplate\u7b49\uff09\uff0cTanStack\u672c\u8eab\u751f\u6001\u5c1a\u4e0d\u5982React\u201c\u6b63\u7edf\u201d\uff0cCloudflare Workers\u7684\u51b7\u542f\u52a8\u4e0e\u539f\u751f\u8282\u70b9\u517c\u5bb9\u6027\u4e5f\u662f\u6f5c\u5728\u5751\u70b9\u3002\u82e5\u4e0d\u80fd\u63d0\u4f9b\u6bd4\u201c\u62fc\u88c5\u6587\u6863\u201d\u66f4\u4e1d\u6ed1\u7684\u5f00\u53d1\u4f53\u9a8c\uff0cTanStarter\u6781\u6613\u6ca6\u4e3a\u53c8\u4e00\u4e2a\u201c\u770b\u8d77\u6765\u5168\u80fd\uff0c\u7528\u8d77\u6765\u8981\u9b54\u6539\u201d\u7684\u6a21\u677f\u4ed3\u5e93\u3002\u5176\u957f\u671f\u4ef7\u503c\u53d6\u51b3\u4e8eFox\u80fd\u5426\u6301\u7eed\u8ddf\u8fdbTanStack\u548cWorkers\u7684\u66f4\u65b0\uff0c\u5e76\u771f\u6b63\u6d88\u5316\u793e\u533a\u53cd\u9988\u2014\u2014\u6bd5\u7adf\u6700\u8d35\u7684\u4ece\u6765\u4e0d\u662f\u6a21\u677f\u4ef7\u683c\uff0c\u800c\u662f\u96c6\u6210\u90a3\u4e9b\u201c\u5dee\u4e00\u70b9\u5c31\u80fd\u7528\u201d\u7684\u6a21\u5757\u6240\u4ed8\u51fa\u7684\u65f6\u95f4\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">TanStarter<\/span>\n                <\/div>\n<div class=\"comment-content\">TanStarter is the complete TanStack Start boilerplate for building profitable SaaS, packed with AI, auth, database, storage, blog, email, newsletter, payments, dashboard, SEO, and more, fully deployed on Cloudflare Workers<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey Product Hunters, I\u2019m Fox, the maker of TanStarter.<\/p>\n<p>I built TanStarter because every SaaS project starts with the same heavy setup: auth, payments, database, storage, email, dashboard, SEO, docs, deployment, and all the glue code between them.<\/p>\n<p>TanStarter packages that into a production-ready TanStack Start + Cloudflare Workers template, so makers can start from a real SaaS foundation instead of stitching boilerplate together for weeks.<\/p>\n<p>I\u2019d love your feedback on the stack, the onboarding flow, and what modules you\u2019d want next.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#16<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/FUILULD5TRE2MF\" class=\"app-title\">KEEP<\/a><\/p>\n<div class=\"one-liner\">The connected keychain that keeps your people close<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">18<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>KEEP \u662f\u4e00\u6b3e\u901a\u8fc7 NFC \u6280\u672f\u4f20\u8f93\u7684\u7535\u5b50\u58a8\u6c34\u5c4f\u94a5\u5319\u6263\uff0c\u8ba9\u5f02\u5730\u4eb2\u53cb\u53ef\u4ee5\u968f\u65f6\u53d1\u9001\u624b\u5199\u6587\u5b57\u3001\u6d82\u9e26\u6216\u8d34\u7eb8\uff0c\u65e0\u9700\u5145\u7535\u8054\u7f51\uff0c\u89e3\u51b3\u201c\u628a\u7231\u7684\u4eba\u5e26\u5728\u8eab\u8fb9\u201d\u7684\u60c5\u611f\u8fde\u63a5\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/a0ca788e-2249-40f6-897d-81bf99700a55.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/ww6BXQ6cCwc\"><source src=\"https:\/\/youtu.be\/ww6BXQ6cCwc\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/dd7c1c7a-37c8-465e-a3b2-40728c623da7.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/d4a48137-702e-4712-9bca-a1c0ecc37508.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/3930eafc-0798-4cd8-954c-a27afa1d11d2.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1bc9c579-3712-4faf-ba70-f6cfb236e11c.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f9448342-1575-46df-acaf-b359b838ff91.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/4752f26b-1d66-4d00-b8e5-3d13844a63ee.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/4a50639e-0782-47c9-891c-f3f3f7612328.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/aa2a1d01-af71-4658-a46e-ae65a9048705.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e2b2f73e-3b46-4023-b809-5fc8eccd96b0.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Messaging<\/span><br \/>\n            <span class=\"tag\">Hardware<\/span><br \/>\n            <span class=\"tag\">Crowdfunding<\/span><br \/>\n            <span class=\"tag\">Wearables<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u7535\u5b50\u58a8\u6c34\u5c4f\u94a5\u5319\u6263<\/span><br \/>\n            <span class=\"tag\">NFC\u65e0\u6e90\u8bbe\u5907<\/span><br \/>\n            <span class=\"tag\">\u5f02\u5730\u604b\u60c5\u611f\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u65e0\u7535\u6c60\u7269\u8054\u7f51<\/span><br \/>\n            <span class=\"tag\">\u5bb6\u5ead\u6c9f\u901a\u786c\u4ef6<\/span><br \/>\n            <span class=\"tag\">\u667a\u80fd\u793c\u7269<\/span><br \/>\n            <span class=\"tag\">\u60c5\u4fa3\u4e92\u52a8<\/span><br \/>\n            <span class=\"tag\">\u7fa4\u4f53\u5e7f\u64ad<\/span><br \/>\n            <span class=\"tag\">\u5f00\u6e90API<\/span><br \/>\n            <span class=\"tag\">Kickstarter\u4f17\u7b79<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u5bf9\u201c\u65e0\u9700\u5145\u7535\u3001\u65e0\u7126\u8651\u5237\u65b0\u201d\u7684\u8bbe\u8ba1\u9ad8\u5ea6\u8ba4\u53ef\uff0c\u8ba4\u4e3a\u201c\u5728\u573a\u611f\u80dc\u8fc7\u901a\u77e5\u201d\u3002\u521b\u59cb\u4eba\u81ea\u8ff0\u6b63\u5728\u5f00\u53d1WiFi\u51b0\u7bb1\u8d34\u7248\u548c\u5f00\u653eAPI\u3002\u6709\u8bc4\u8bba\u62c5\u5fe7\u201c\u4e00\u5bf9\u591a\u5e7f\u64ad\u201d\u4f1a\u7a00\u91ca\u4ea7\u54c1\u7684\u60c5\u611f\u79c1\u5bc6\u6027\uff0c\u521b\u59cb\u4eba\u56de\u5e94\u8ba4\u4e3a\u5728\u56e2\u961f\u5185\u53ef\u5f62\u6210\u5f52\u5c5e\u611f\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                KEEP \u7684\u806a\u660e\u4e4b\u5904\u5728\u4e8e\u5b83\u7cbe\u51c6\u5730\u951a\u5b9a\u4e86\u4e00\u4e2a\u88ab\u79d1\u6280\u5de8\u5934\u5ffd\u7565\u7684\u201c\u53cd\u6548\u7387\u201d\u573a\u666f\u2014\u2014\u60c5\u611f\u8fde\u63a5\u4e0d\u9700\u8981\u5b9e\u65f6\u3001\u9ad8\u6548\u3001\u53ef\u5237\u65b0\u3002\u5f53\u6240\u6709\u667a\u80fd\u8bbe\u5907\u90fd\u5728\u8ffd\u6c42\u201c\u6c38\u4e0d\u9057\u6f0f\u201d\u7684\u901a\u77e5\u65f6\uff0cKEEP \u523b\u610f\u653e\u5f03\u4e86WiFi\u3001\u84dd\u7259\u548c\u7535\u6c60\uff0c\u7528NFC\u548c\u7535\u5b50\u58a8\u6c34\u5236\u9020\u4e86\u4e00\u79cd\u201c\u88ab\u52a8\u9047\u89c1\u201d\u7684\u4eea\u5f0f\u611f\u3002\u8fd9\u4e0d\u4ec5\u662f\u4e0d\u65b9\u4fbf\uff0c\u800c\u662f\u4e00\u79cd\u8bbe\u8ba1\u4e0a\u7684\u201c\u5962\u4f88\u201d\uff1a\u628a\u6280\u672f\u9690\u85cf\u5230\u8fd1\u4e4e\u6d88\u5931\uff0c\u53ea\u7559\u4e0b\u4e00\u4e2a\u7269\u7406\u8f7d\u4f53\u627f\u8f7d\u60c5\u611f\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ece\u5546\u4e1a\u89d2\u5ea6\u770b\uff0c\u8fd9\u662fLovebox\u56e2\u961f\u5bf9\u5df2\u9a8c\u8bc1\u60c5\u611f\u786c\u4ef6\u54c1\u7c7b\u7684\u201c\u4fbf\u643a\u5316\u201d\u5ef6\u4f38\u3002\u5176\u6838\u5fc3\u4f18\u52bf\u5e76\u975e\u6280\u672f\u58c1\u5792\u2014\u2014NFC+\u58a8\u6c34\u5c4f\u65e9\u5df2\u6210\u719f\u2014\u2014\u800c\u5728\u4e8e\u54c1\u724c\u79ef\u7d2f\u768426\u4e07\u6761\u60c5\u611f\u77ed\u4fe1\u573a\u666f\u548c300,000+\u51fa\u8d27\u91cf\u7684\u793e\u7fa4\u4fe1\u4efb\u3002\u4f46\u98ce\u9669\u540c\u6837\u660e\u663e\uff1a\u8fd9\u6b3e\u4ea7\u54c1\u672c\u8d28\u662f\u201c\u7535\u5b50\u60c5\u4e66\u7684\u5b9e\u4f53\u6309\u952e\u201d\uff0c\u7528\u6237\u7c98\u6027\u5b8c\u5168\u4f9d\u8d56\u4e8e\u4eb2\u5bc6\u5173\u7cfb\u7684\u6301\u7eed\u6027\u3002\u4e00\u65e6\u5206\u624b\u3001\u7236\u6bcd\u79bb\u4e16\u6216\u56e2\u961f\u89e3\u6563\uff0cKEEP \u5c31\u53d8\u6210\u4e00\u4e2a\u65e0\u6cd5\u62c6\u9664\u7684\u6570\u5b57\u5893\u7891\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u800c\u5bf9\u4e8e\u521b\u59cb\u4eba\u63d0\u51fa\u7684\u4e09\u4e2a\u53d1\u5c55\u65b9\u5411\uff08\u7fa4\u53d1\u3001API\u3001\u81ea\u4f9b\u7535\u7248\uff09\uff0c\u6211\u8ba4\u4e3a\u90fd\u662f\u5728\u7a00\u91ca\u4ea7\u54c1\u6700\u73cd\u8d35\u7684\u201c\u79c1\u5bc6\u6027\u201d\u3002\u7fa4\u53d1\u4f1a\u628a\u5b83\u53d8\u6210\u4e00\u4e2a\u201c\u5b9e\u4f53\u6d88\u606f\u63a8\u9001\u5668\u201d\uff0cAPI\u66f4\u662f\u8bd5\u56fe\u628a\u60c5\u611f\u6570\u636e\u5316\uff0c\u8fd9\u5728\u6839\u672c\u4e0a\u4e0e\u4ea7\u54c1\u201c\u65e0\u901a\u77e5\u3001\u4e0d\u7126\u8651\u201d\u7684\u521d\u8877\u77db\u76fe\u3002\u771f\u6b63\u6709\u6f5c\u529b\u7684\u53cd\u800c\u662f\u90a3\u4e2a\u5c1a\u672a\u8be6\u8ff0\u7684\u201cWiFi\u51b0\u7bb1\u8d34\u7248\u201d\u2014\u2014\u5b83\u5c06KEEP\u4ece\u53e3\u888b\u91cc\u7684\u79d8\u5bc6\u53d8\u6210\u5bb6\u5ead\u91cc\u7684\u516c\u5171\u60c5\u611f\u9762\u677f\uff0c\u6070\u6070\u62d3\u5c55\u4e86\u201c\u88ab\u52a8\u5728\u573a\u201d\u7684\u7269\u7406\u8fb9\u754c\u3002\u5efa\u8bae\u56e2\u961f\u8c28\u614e\u5f00\u653e\uff0c\u4e13\u6ce8\u4e8e\u505a\u597d\u201c\u4e24\u4e2a\u4eba\u4e4b\u95f4\u201d\u8fd9\u4e2a\u6700\u7262\u56fa\u7684\u573a\u666f\uff0c\u800c\u4e0d\u662f\u6025\u4e8e\u6269\u5927\u9002\u7528\u9762\u3002\u56e0\u4e3a\u5f53\u4e00\u4e2a\u4ea7\u54c1\u4ec0\u4e48\u90fd\u60f3\u6210\u4e3a\u65f6\uff0c\u5b83\u5f80\u5f80\u5c31\u4e0d\u518d\u662f\u4efb\u4f55\u7279\u522b\u7684\u4e1c\u897f\u4e86\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">KEEP<\/span>\n                <\/div>\n<div class=\"comment-content\">KEEP is a connected keychain with an e-ink screen that holds one note \u2014 a word, a drawing, a sticker \u2014 sent from someone&#8217;s phone, from anywhere. No WiFi, no Bluetooth, no battery. Just a piece of someone you love, with you wherever you go. From the team behind Lovebox: 300,000+ shipped to 40+ countries, 26M+ notes sent since 2017. Live on Kickstarter now! Funded in under 2 hours and 300% funded as of today! 12 days remaining to pre-order on Kickstarter.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hi Product Hunt \u2014 Jean here, founder of Lovebox.<\/p>\n<p>Ten years ago I built a little wooden box with a heart that spins when someone you love is thinking of you. I made the first one for my girlfriend in Paris while I was a postdoc at MIT, an ocean away from her. Since then our small team has shipped 300,000+ Loveboxes to 40+ countries, and people have sent more than 26 million notes through them.<\/p>\n<p>For ten years, the same email kept landing in our inbox: &#8220;I love my Lovebox. I wish I could take it with me.&#8221;<\/p>\n<p>KEEP is that wish, built. It&#8217;s a connected keychain with a 2.13&#8243; e-ink screen. Someone who loves you writes a note in the app \u2014 a few words, a doodle, a sticker \u2014 you hold your phone to the keychain for a second, and it appears (it&#8217;s not magic, it&#8217;s NFC-powered). No WiFi, no Bluetooth, no battery to charge on the device. Just a piece of someone you love, with you wherever you go.<\/p>\n<p>We&#8217;re live on Kickstarter right now \u2014 back where Lovebox began in 2017 \u2014 launching at a discounted price, and already in the hands of 30 happy beta testers. I&#8217;ll be here all day to answer everything.<\/p>\n<p>KEEP started as something between two people, but the more we build it the further it wants to go \u2014 and this is exactly the crowd I want to think out loud with. I love using Product Hunt to pressure-test where a product could go next, not just to launch it as-is. So here are a few directions we&#8217;re opening up, and I&#8217;d genuinely love your take on them:<\/p>\n<p>&#8211; Broadcast to a group: hand a KEEP to a whole team \u2014 or to clients you&#8217;ve gifted one \u2014 and send a single note that lands on every keychain at the same moment.<br \/>\n&#8211; An open API: we&#8217;re building it now, so you can wire KEEP into your own tools, milestones and workflows, and trigger notes programmatically.<br \/>\n&#8211; A version with its own battery: so a KEEP could update on its own over time, showing new messages even when no phone is near to tap it.<\/p>\n<p>Which of these would you actually use \u2014 and what would you make KEEP do? I&#8217;m reading every reply today.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I have had a Lovebox from the very beginning and I love it. I was looking for something portable to use while my husband an I travel.  It&#8217;s perfect for that. We also used it around the house as a special hidden surprise for love notes to each other.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@kathy_markey\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@kathy_markey<\/a>&nbsp;Thanks Kathy and I love the hidden surprise \/ treasury hunt use case you&#8217;re describing. It&#8217;s so much fun and romantic at the same time \u263a\ufe0f<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The detail that got me is the &#8220;no battery, nothing to check&#8221; part. You removed every reason to anxiously refresh, so the note just exists when you happen to glance at it. I work on voice AI that keeps adult kids in touch with their aging parents, and the same thing keeps proving true: presence beats notifications, and people want to feel close without another feed to manage. On the broadcast-to-a-group idea, my one worry is that one-to-one is exactly what makes a KEEP feel like a person and not a channel. Have you tested whether a shared KEEP still feels personal, or does the magic dilute once it goes many-to-one?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@igorgurovich\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@igorgurovich<\/a>&nbsp;Thanks for your feedback, and I&#8217;m happy we&#8217;re aligned on that presence beats notifications. TBH, we did not have enough units in beta to really test broadcast-to-a-group for real, but on Kickstarter, we&#8217;ve got a lot of pledges that say they bought it for a group of friends, so I guess we&#8217;ll have some real users feedback soon. I think that within a team or group of friends, the keychain can feel like a token of appartenance to the group with every member able to push the same inside joke or cheering message to all members. I can see myself using that with my group of uni friends, I&#8217;m planning to as soon as we receive the next batch from the factory! FYI, we&#8217;re also working on a fridge magnet version of the product that my mom is liking much more for her personal usage and that would update by itself via WiFi and an almost forever-lasting battery. I see you&#8217;re building Callie for seniors, you may have use case ideas. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#17<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/UPV6Z2MDSRVYGB\" class=\"app-title\">Oculta<\/a><\/p>\n<div class=\"one-liner\">Invisible notes for meetings and presentations<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">18<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Oculta\u662f\u4e00\u6b3eMac\u7aef\u4f1a\u8bae\u6f14\u793a\u8f85\u52a9\u5de5\u5177\uff0c\u8ba9\u4f60\u5728\u5171\u4eab\u5c4f\u5e55\u6216\u89c6\u9891\u901a\u8bdd\u65f6\uff0c\u80fd\u79c1\u5bc6\u9605\u8bfb\u7b14\u8bb0\u800c\u89c2\u4f17\u4e0d\u53ef\u89c1\uff0c\u89e3\u51b3\u53d1\u8a00\u65f6\u9700\u5207\u6362\u7a97\u53e3\u6216\u80cc\u7a3f\u5bfc\u81f4\u7684\u773c\u795e\u4ea4\u6d41\u4e2d\u65ad\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/dd9bdfce-0758-403a-87ec-cb5741940c09.jpeg?auto=format\" data-video-url=\"https:\/\/www.youtube.com\/watch?v=F1ePxbehZp4\"><source src=\"https:\/\/www.youtube.com\/watch?v=F1ePxbehZp4\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f707a307-7d75-4814-8249-c8d4bdc7d40b.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/43bb3e04-5312-4be7-9c7e-61756a99a0d0.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/37d4f5c4-a0a8-400e-9c7f-fbbdc56f839e.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/282c9899-eaf8-42bb-bc09-4b6786bd1e3b.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e38c2d3b-c0b7-47be-a6dc-63eb650ec918.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">Meetings<\/span><br \/>\n            <span class=\"tag\">Menu Bar Apps<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u5c4f\u5e55\u5171\u4eab<\/span><br \/>\n            <span class=\"tag\">\u7b14\u8bb0\u9690\u85cf<\/span><br \/>\n            <span class=\"tag\">\u5728\u7ebf\u4f1a\u8bae<\/span><br \/>\n            <span class=\"tag\">\u6f14\u793a\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">Mac\u5e94\u7528<\/span><br \/>\n            <span class=\"tag\">\u6f14\u8bb2\u52a9\u624b<\/span><br \/>\n            <span class=\"tag\">Zoom\u8f85\u52a9<\/span><br \/>\n            <span class=\"tag\">\u8fdc\u7a0b\u6c9f\u901a<\/span><br \/>\n            <span class=\"tag\">\u9690\u79c1\u4fdd\u62a4<\/span><br \/>\n            <span class=\"tag\">\u751f\u4ea7\u529b\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u4e3b\u8981\u8be2\u95ee\u662f\u5426\u63a8\u51faWindows\u7248\uff0c\u4ee5\u53caOculta\u80fd\u5426\u5728\u4e0d\u540c\u5171\u4eab\u6a21\u5f0f\uff08\u5168\u5c4f\u3001\u7a97\u53e3\u5206\u4eab\u3001\u5f55\u5c4f\uff09\u4e0b\u59cb\u7ec8\u9690\u85cf\u7b14\u8bb0\u3002\u56e2\u961f\u56de\u5e94\u6b63\u5728\u5f00\u53d1Windows\u7248\uff0c\u5e76\u786e\u8ba4\u6280\u672f\u5b9e\u73b0\u8986\u76d6\u5404\u6a21\u5f0f\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Oculta\u5207\u4e2d\u7684\u662f\u4e00\u4e2a\u9ad8\u9891\u4f46\u88ab\u5ffd\u89c6\u7684\u573a\u666f\uff1a\u6570\u5b57\u65f6\u4ee3\u4e0b\u7684\u201c\u4e13\u4e1a\u8868\u6f14\u201d\u3002\u6838\u5fc3\u4ef7\u503c\u4e0d\u5728\u6280\u672f\u590d\u6742\u5ea6\uff0c\u800c\u5728\u7cbe\u51c6\u7684\u5fc3\u7406\u6d1e\u5bdf\u2014\u2014\u4f1a\u8bae\u4e2d\u201c\u770b\u8d77\u6765\u6ca1\u6709\u8bfb\u7a3f\u201d\u6bd4\u201c\u8bfb\u7a3f\u201d\u672c\u8eab\u66f4\u91cd\u8981\u3002\u8fd9\u672c\u8d28\u662f\u66ff\u7528\u6237\u5728\u4fe1\u4efb\u4e0e\u6548\u7387\u4e4b\u95f4\u642d\u5efa\u4e86\u4e00\u4e2a\u65e0\u5f62\u7684\u6760\u6746\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u4eceProduct Hunt\u4ec518\u7968\u7684\u6570\u636e\u770b\uff0c\u4ea7\u54c1\u5e76\u672a\u5f15\u8d77\u75c5\u6bd2\u5f0f\u5173\u6ce8\u3002\u539f\u56e0\u6709\u4e09\uff1a1) \u529f\u80fd\u5355\u4e00\uff0c\u6613\u88ab\u7cfb\u7edf\u7ea7\u65b9\u6848\u66ff\u4ee3\uff08\u5982macOS\u5185\u7f6e\u7684\u201c\u63d0\u9192\u4e8b\u9879\u201d\u6216\u5b9e\u4f53\u7b14\u8bb0\uff09\uff1b2) Windows\u7248\u7f3a\u5931\uff0c\u76f4\u63a5\u780d\u6389\u8fd1\u534a\u6f5c\u5728\u7528\u6237\uff1b3) \u5546\u4e1a\u8def\u5f84\u6a21\u7cca\u2014\u2014\u662f\u505a\u6210\u4e70\u65ad\u5de5\u5177\uff0c\u8fd8\u662f\u8ba2\u9605\u5236\uff1f\u5176\u201c\u9690\u8eab\u201d\u7279\u6027\u5728\u9690\u79c1\u6cd5\u89c4\u4e25\u82db\u7684\u884c\u4e1a\uff08\u5982\u91d1\u878d\u3001\u533b\u7597\uff09\u53ef\u80fd\u4f1a\u5f15\u53d1\u5408\u89c4\u7591\u8651\uff0c\u800c\u975e\u5356\u70b9\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u771f\u6b63\u7684\u673a\u4f1a\u6216\u8bb8\u4e0d\u5728\u901a\u7528\u4f1a\u8bae\u573a\u666f\uff0c\u800c\u5728\u4e8e\u7784\u51c6\u9ad8\u5ba2\u5355\u4ef7\u3001\u9ad8\u4e34\u573a\u611f\u9700\u6c42\u7684\u5782\u76f4\u4eba\u7fa4\uff1a\u9500\u552eSDR\u3001\u7ebf\u4e0a\u8bb2\u5e08\u3001\u76f4\u64ad\u4e3b\u64ad\u3002\u5bf9\u8fd9\u4e9b\u4eba\u800c\u8a00\uff0cOculta\u7701\u53bb\u7684\u201c\u5207\u6362\u7a97\u53e3\u201d\u65f6\u95f4\uff0c\u76f4\u63a5\u8f6c\u5316\u4e3a\u8f6c\u5316\u7387\u548c\u89c2\u4f17\u7559\u5b58\u3002\u4f46\u9700\u8981\u8b66\u60d5\u7ade\u54c1\u2014\u2014Zoom\u672c\u8eab\u5df2\u5728\u6d4b\u8bd5AI\u4f1a\u8bae\u7b14\u8bb0\u81ea\u52a8\u751f\u6210\u529f\u80fd\uff0c\u5982\u679c\u5de8\u5934\u5c06\u8fd9\u4e2a\u201c\u770b\u7a3f\u201d\u9700\u6c42\u4f5c\u4e3a\u5185\u7f6e\u529f\u80fd\u9644\u5e26\uff0cOculta\u7684\u751f\u5b58\u7a7a\u95f4\u5c06\u77ac\u95f4\u5f52\u96f6\u3002\u76ee\u524d\u6765\u770b\uff0c\u5b83\u66f4\u50cf\u662f\u4e00\u4e2a\u6f02\u4eae\u7684\u4e34\u65f6\u65b9\u6848\uff0c\u800c\u975e\u80fd\u72ec\u7acb\u6491\u8d77\u5546\u4e1a\u5927\u53a6\u7684\u6838\u5fc3\u5356\u70b9\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Oculta<\/span>\n                <\/div>\n<div class=\"comment-content\">Oculta is a Mac app that lets you read notes while presenting, sharing your screen, or joining video calls without anyone else seeing them. Keep scripts, talking points, and reminders visible only to you while maintaining eye contact. Oculta stays invisible in screen sharing, screenshots, and recordings. Works with Zoom, Google Meet, Microsoft Teams, Slack, FaceTime, and every other app on macOS.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Do you think we&#8217;ll get a windows app soon?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@daniel_nwankwo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@daniel_nwankwo<\/a>&nbsp;hey Daniel, we are working to make it happen! Hopefully we&#8217;ll have another launch soon \ud83d\ude09 <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hi Product Hunt! \ud83d\udc4b<\/p>\n<p>I&#8217;m Andr\u00e9s, one of the makers behind Oculta.<\/p>\n<p>We built Oculta because we kept running into the same problem. Every important meeting, presentation, or interview meant trying to memorize talking points or constantly switching between notes and the person on the other side of the call. It always broke eye contact and made conversations feel less natural.<\/p>\n<p>So we built Oculta, a Mac app that lets you read notes while keeping them invisible during screen sharing, screenshots, and recordings. The goal is simple: help you stay prepared without looking like you&#8217;re reading.<\/p>\n<p>People are already using Oculta for sales demos, presentations, interviews, online teaching, and content creation, but I&#8217;m sure there are plenty of use cases we haven&#8217;t thought of yet.<\/p>\n<p>We&#8217;re excited to finally share it with the Product Hunt community.<\/p>\n<p>I&#8217;d love to hear your feedback, answer any questions, and learn how you&#8217;d use it.<\/p>\n<p>What&#8217;s the first situation where you&#8217;d use Oculta?<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch! \ud83d\ude80<\/p>\n<p>This is a very practical idea. I can see it being useful for sales calls, client presentations, interviews, and even product demos where you need talking points but don\u2019t want to keep switching windows.<\/p>\n<p>Curious how Oculta handles different screen-sharing apps technically. Does it stay hidden across all sharing modes, like full screen, window share, and screen recording?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi everybody! I&#8217;m Florencia, part of the team of Oculta.<\/p>\n<p>Over the past few months we&#8217;ve spent an unhealthy amount of time asking questions like &#8220;Does this button make sense?&#8221; and &#8220;Can we make this one pixel better?&#8221; \ud83d\ude05<\/p>\n<p>It&#8217;s surreal to finally share Oculta with all of you.<\/p>\n<p>I&#8217;d love to know: what&#8217;s one situation where you wish you could have private notes without anyone else seeing them? Meetings? Interviews? Sales calls? Something completely different?<\/p>\n<p>I&#8217;d genuinely love to hear your ideas, so please leave a comment. I&#8217;ll be here all day reading every one and taking notes for future updates!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@florencia_planella\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@florencia_planella<\/a>&nbsp;Great question. One use case that really stood out during testing was sales calls. SDRs and account executives told us they use Oculta to keep discovery questions, objection handling, and key talking points on screen without breaking eye contact. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#18<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/QCKTDXZXXHDUHE\" class=\"app-title\">NerdSip &#8211; Microlearning App<\/a><\/p>\n<div class=\"one-liner\">Replace social media with real learning &#8211; and get educated.<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">16<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>NerdSip\u662f\u4e00\u6b3e\u5229\u7528AI\u5c06\u788e\u7247\u65f6\u95f4\u8f6c\u5316\u4e3a\u5b9a\u5236\u5fae\u8bfe\u7a0b\u7684\u8f7b\u91cf\u5b66\u4e60\u5de5\u5177\uff0c\u4e13\u4e3a\u538c\u5026\u65e0\u610f\u4e49\u5237\u77ed\u89c6\u9891\u3001\u5e0c\u671b\u9ad8\u6548\u83b7\u53d6\u77e5\u8bc6\u7684\u4eba\u7fa4\u8bbe\u8ba1\uff0c\u5728\u901a\u52e4\u3001\u6392\u961f\u7b49\u95f4\u9699\u4ee55\u5206\u949f\u4e92\u52a8\u66ff\u4ee3\u201c\u6570\u5b57\u5783\u573e\u98df\u54c1\u201d\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/2123060a-d6d8-4dec-87af-2f4cda97e87b.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1106ecf6-aa15-42f7-b645-babb4213b2f1.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1db34cf4-52b8-4383-a92b-c4e1dc3eca30.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Android<\/span><br \/>\n            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">Education<\/span><br \/>\n            <span class=\"tag\">Tech<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u5fae\u5b66\u4e60<\/span><br \/>\n            <span class=\"tag\">AI\u8bfe\u7a0b\u751f\u6210<\/span><br \/>\n            <span class=\"tag\">\u788e\u7247\u5316\u5b66\u4e60<\/span><br \/>\n            <span class=\"tag\">\u77e5\u8bc6\u83b7\u53d6<\/span><br \/>\n            <span class=\"tag\">\u53cd\u793e\u4ea4\u5a92\u4f53<\/span><br \/>\n            <span class=\"tag\">\u6e38\u620f\u5316\u5b66\u4e60<\/span><br \/>\n            <span class=\"tag\">RPG\u5143\u7d20<\/span><br \/>\n            <span class=\"tag\">\u5b66\u4e60\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u6559\u80b2\u79d1\u6280<\/span><br \/>\n            <span class=\"tag\">\u4e13\u6ce8\u529b\u63d0\u5347<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u5176\u201c\u77ed\u65f6\u9ad8\u6548\u201d\u7684\u5b9a\u4f4d\uff0c\u4e0eIG Reels\u5bf9\u6bd4\u663e\u793a\u5f3a\u9700\u6c42\uff1b\u4e00\u4f4d\u5f00\u53d1\u8005\u63d0\u51fa\u6df1\u5ea6\u8d28\u7591\uff1a\u5982\u4f55\u907f\u514d\u5c0f\u4f17\u8bdd\u9898\u7684\u6d45\u8584\u6216\u5e7b\u89c9\uff1f\u5b98\u65b9\u56de\u5e94\u79f0\u5185\u7f6e\u4e86\u4e8b\u5b9e\u6838\u67e5\u5f15\u64ce\uff0c\u80fd\u62d2\u7edd\u201c\u8fc7\u4e8e\u602a\u5f02\u201d\u7684\u751f\u6210\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                NerdSip\u5207\u4e2d\u4e86\u4e00\u4e2a\u7cbe\u51c6\u7684\u75db\u70b9\u2014\u2014\u73b0\u4ee3\u4eba\u7684\u201c\u6570\u5b57\u7126\u8651\u201d\u4e0e\u201c\u8ba4\u77e5\u532e\u4e4f\u201d\u5e76\u5b58\u3002\u5634\u4e0a\u8bf4\u201c\u66ff\u4ee3\u5237\u89c6\u9891\u201d\u662f\u9053\u5fb7\u4f18\u8d8a\u611f\uff0c\u5b9e\u9645\u4e0a\u9760\u7684\u662f\u6e38\u620f\u5316\uff08\u8fde\u51fb\u3001RPG\uff09\u5f3a\u884c\u5236\u9020\u591a\u5df4\u80fa\u6b63\u53cd\u9988\uff0c\u672c\u8d28\u662f\u201c\u7528\u5582\u7cd6\u7684\u65b9\u5f0f\u903c\u4f60\u5403\u83dc\u201d\u3002\u4f46\u6f5c\u5728\u98ce\u9669\u5f88\u660e\u663e\uff1a16\u7968\u7684Product Hunt\u70ed\u5ea6\u30017500\u4e0b\u8f7d\u91cf\u4e0e\u8bc4\u8bba\u603b\u6570120\u6761\u5f62\u6210\u53cd\u5dee\uff0c\u8bf4\u660e\u53e3\u7891\u4f20\u64ad\u8fd8\u5728\u65e9\u671f\uff0c\u7528\u6237\u7c98\u6027\u5b58\u7591\u3002\u66f4\u5927\u95ee\u9898\u5728\u4e8e\u201cAI\u5b9a\u5236\u8bfe\u7a0b\u201d\u7684\u62a4\u57ce\u6cb3\u6781\u6d45\u3002\u8bc4\u8bba\u8005Karim\u7684\u8d28\u7591\u76f4\u51fb\u672c\u8d28\uff1a\u4e00\u65e6\u7528\u6237\u60f3\u5b66\u51b7\u95e8\u8bdd\u9898\uff08\u5982\u201c\u4e2d\u4e16\u7eaa\u5251\u672f\u4fdd\u517b\u201d\uff09\uff0cAI\u751f\u6210\u5185\u5bb9\u6781\u6613\u6ed1\u5411\u80e1\u626f\u6216Wiki\u642c\u8fd0\u3002\u5b98\u65b9\u56de\u590d\u7684\u201c\u4e8b\u5b9e\u6838\u67e5\u5f15\u64ce\u201d\u542c\u8d77\u6765\u5f88\u7f8e\uff0c\u4f46\u4e00\u4e2a\u521d\u521b\u56e2\u961f\u5982\u4f55\u5728\u5fae\u5c0f\u573a\u666f\u91cc\u5efa\u7acb\u53ef\u4fe1\u7684\u77e5\u8bc6\u6821\u9a8c\u673a\u5236\uff1f\u8981\u4e48\u4f9d\u8d56\u5927\u6a21\u578b\u81ea\u8eab\u7684\u5e38\u8bc6\u5c40\u9650\uff0c\u8981\u4e48\u5377\u5165\u9ad8\u6602\u7684\u4eba\u5de5\u5ba1\u6838\u6210\u672c\u3002\u4ea7\u54c1\u771f\u6b63\u7684\u4ef7\u503c\u4e0d\u5728\u201c\u6559\u80b2\u201d\uff0c\u800c\u5728\u201c\u884c\u4e3a\u8bbe\u8ba1\u201d\u2014\u2014\u5b83\u8ba9\u7528\u6237\u4ece\u5237Instagram Reels\u7684\u88ab\u52a8\u6d88\u8d39\uff0c\u5207\u6362\u4e3a\u4e3b\u52a8\u63a2\u7d22\u7684\u201c\u4f2a\u751f\u4ea7\u529b\u884c\u4e3a\u201d\uff0c\u6ee1\u8db3\u7684\u662f\u201c\u6211\u52aa\u529b\u4e86\u201d\u7684\u5fc3\u7406\u8d26\u6237\u3002\u77ed\u671f\u53ef\u6536\u5272\u81ea\u5f8b\u7126\u8651\u7ea2\u5229\uff0c\u957f\u671f\u82e5\u65e0\u6cd5\u5728\u77e5\u8bc6\u6df1\u5ea6\u6216\u793e\u533a\u4e92\u52a8\u4e0a\u5efa\u7acb\u58c1\u5792\uff0c\u5f88\u53ef\u80fd\u6ca6\u4e3a\u53c8\u4e00\u4e2a\u201c\u4e09\u5929\u70ed\u60c5\u201d\u7684\u6253\u5361\u8f6f\u4ef6\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">NerdSip &#8211; Microlearning App<\/span>\n                <\/div>\n<div class=\"comment-content\">NerdSip is the AI learning app that creates custom micro-courses on any topic in seconds. Gamified streaks, RPG elements, and 5-minute lessons for curious minds.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey Friends,<\/p>\n<p>4.9 stars with than 120 reviews over all the app and play store cannot lie. 7500 downloads. Rapidly growing.<br \/>\nThis app is amazing. \ud83d\ude42<\/p>\n<p>Stop the doomscroll. Start the smart scroll.<br \/>\nPeople will notice. And you will feel so much better.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I don&#8217;t use TikTok, but my brain is definitely rotting because of IG reels, seriously need to try this. Also love the green accent colors, looks very relaxing! Good luck with the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@farid_sukurov\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@farid_sukurov<\/a>&nbsp;thank you very much! That\u2019s kind of you <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I\u2019ve been using NerdSip for a while and really like it<\/p>\n<p>It\u2019s a nice way to learn something useful in small moments without committing to a full course or long video.<\/p>\n<p>Congrats on the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@rouzbeh_abadi\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rouzbeh_abadi<\/a>&nbsp;thanks a lot Rouzbeh! Your early feedback from months ago has been really valuable and the ongoing support<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>How do you keep the lessons from getting shallow or hallucinated when someone picks a niche topic?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@karimbenkeroum\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@karimbenkeroum<\/a>&nbsp;Hey Karim, indeed one core challenge. We habe a sophisticated fact-checking engine that judges the topic to be written on &#8211; and if it is too weird, it will return a message stating so. After successful generations, we have a report, fact-checking and optional fixing engine.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#19<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/BJLIU6HBUXSDR4\" class=\"app-title\">Downbar<\/a><\/p>\n<div class=\"one-liner\">Know the moment a service breaks, and the moment it&#8217;s back<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">15<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Downbar\u662f\u4e00\u6b3emacOS\u83dc\u5355\u680f\u5e94\u7528\uff0c\u901a\u8fc7\u76d1\u63a7110+\u516c\u5171\u72b6\u6001\u9875\u9762\uff0c\u8ba9\u5f00\u53d1\u8005\u65e0\u9700\u624b\u52a8\u68c0\u67e5\u5c31\u80fd\u5373\u65f6\u77e5\u6653\u670d\u52a1\u4e2d\u65ad\u4e0e\u6062\u590d\u60c5\u51b5\uff0c\u7701\u53bb\u201c\u4ee5\u4e3a\u662f\u81ea\u5df1\u641e\u574f\u4e86\u201d\u7684\u7126\u8651\u65f6\u95f4\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/97f96bae-aae4-4d06-95da-62e26a04a45b.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/YXXyb6OM73I\"><source src=\"https:\/\/youtu.be\/YXXyb6OM73I\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/eb15c49d-b834-4ed7-a8bb-1751183b6105.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7af055e9-4439-49aa-933c-59dc5a35ca9d.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/09aa7e60-b2b8-4c49-9067-350ea3adcbe8.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">SaaS<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Menu Bar Apps<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u72b6\u6001\u76d1\u63a7<\/span><br \/>\n            <span class=\"tag\">macOS\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u83dc\u5355\u680f\u5e94\u7528<\/span><br \/>\n            <span class=\"tag\">DevOps<\/span><br \/>\n            <span class=\"tag\">AI\u670d\u52a1<\/span><br \/>\n            <span class=\"tag\">\u4e91\u670d\u52a1<\/span><br \/>\n            <span class=\"tag\">\u5b95\u673a\u901a\u77e5<\/span><br \/>\n            <span class=\"tag\">Webhook\u96c6\u6210<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u4ed8\u8d39\u5e94\u7528<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u5410\u69fdClaude Code\u548cOpenAI API\u9891\u7e41\u5b95\u673a\uff0c\u4e14\u6bcf\u6b21\u90fd\u8981\u5148\u8bef\u5224\u662f\u81ea\u5df1\u4ee3\u7801\u95ee\u9898\uff0c\u6d6a\u8d39\u51e0\u5206\u949f\u3002\u75db\u70b9\u5728\u4e8e\u4e0d\u60f3\u4e3b\u52a8\u53bb\u68c0\u67e5\u72b6\u6001\u9875\u3002Downbar\u7684\u81ea\u52a8\u53d8\u7ea2\u901a\u77e5\u548c\u6062\u590d\u901a\u77e5\u7cbe\u51c6\u89e3\u51b3\u4e86\u8fd9\u7c7b\u201c\u7591\u5fc3\u75c5\u201d\u4e0e\u6392\u67e5\u65f6\u95f4\u6d6a\u8d39\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Downbar\u7684\u5b9a\u4f4d\u6781\u5176\u5201\u94bb\uff0c\u5b83\u6293\u7684\u75db\u70b9\u4e0d\u662f\u670d\u52a1\u5b95\u673a\u672c\u8eab\uff0c\u800c\u662f\u201c\u6211\u5230\u5e95\u54ea\u91cc\u5199\u9519\u4e86\u201d\u7684\u81ea\u6211\u6000\u7591\u77ac\u95f4\u3002\u5bf9\u4e8e\u91cd\u5ea6\u4f9d\u8d56AI API\u3001\u4e91\u670d\u52a1\u548c\u652f\u4ed8SDK\u7684\u5f00\u53d1\u8005\u6765\u8bf4\uff0c\u6bcf\u6b21\u63a5\u53e3\u8d85\u65f6\u540e\u82b130\u79d2\u68c0\u67e5\u81ea\u5df1\u4ee3\u7801\uff0c\u518d\u82b130\u79d2\u7ffbStatuspage\uff0c\u8fd9\u79cd\u9ad8\u9891\u91cd\u590d\u7684\u201c\u7cbe\u795e\u635f\u8017\u201d\u8fdc\u6bd4\u5b95\u673a\u672c\u8eab\u66f4\u78e8\u4eba\u30022.99\u7f8e\u5143\u7684\u5b9a\u4ef7\u582a\u79f0\u201c\u5f00\u53d1\u8005\u60c5\u7eea\u4fdd\u9669\u201d\u2014\u2014\u7528\u4e00\u676f\u5976\u8336\u94b1\u4e70\u65ad\u201c\u7591\u5fc3\u201d\u6210\u672c\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u51b7\u9759\u770b\uff0c\u5b83\u672c\u8d28\u4e0a\u662f\u4e00\u4e2a\u52a0\u58f3\u7684RSS\u9605\u8bfb\u5668\uff0c\u6280\u672f\u58c1\u5792\u6781\u4f4e\u3002\u652f\u6301Instatus\u548cStatuspage\u7684\u901a\u7528\u722c\u866b\u6a21\u5f0f\uff0c\u610f\u5473\u7740\u77ed\u671f\u53ef\u5403\u904d\u5b58\u91cf\u5e02\u573a\uff0c\u4f46\u957f\u5c3e\u98ce\u9669\u5728\u4e8e\u516c\u5171Statuspage\u7684\u683c\u5f0f\u53d8\u5316\u4f1a\u5bfc\u81f4\u89e3\u6790\u5931\u8d25\u3002\u800c\u4e14\u76d1\u63a7110+\u670d\u52a1\u542c\u8d77\u6765\u591a\uff0c\u5b9e\u9645\u7528\u6237\u5e38\u7528\u7684\u53ef\u80fd\u5c3110\u4e2a\u4ee5\u5185\uff0c\u4e00\u952e\u52fe\u9009\u5373\u7528\u5f88\u723d\uff0c\u4f46\u201c\u66f4\u591a\u81ea\u5b9a\u4e49URL\u201d\u529f\u80fd\u66b4\u9732\u4e86\u5b83\u65e0\u6cd5\u6df1\u5ea6\u8986\u76d6\u4f01\u4e1a\u5185\u7f51\u6216\u79c1\u6709\u4e91\u573a\u666f\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u66f4\u5927\u7684\u9690\u5fe7\u662f\uff1a\u4e00\u65e6\u7528\u6237\u89c4\u6a21\u6269\u5927\uff0c\u8fd9\u4e9b\u516c\u5171Statuspage\u53ef\u80fd\u4f1a\u56e0\u9632\u722c\u7b56\u7565\u9650\u5236\u8bbf\u95ee\u9891\u6b21\uff0c\u6216\u8005\u8f6c\u7528Webhook\u5b98\u65b9\u901a\u9053\uff0c\u5c4a\u65f6Downbar\u5c31\u6210\u4e86\u88ab\u52a8\u7684\u201cPing\u5de5\u5177\u201d\u3002Webhook\u8f6c\u53d1\u5230Slack\u3001Discord\u7b97\u804a\u80dc\u4e8e\u65e0\uff0c\u4f46\u5df2\u6709\u5927\u91cf\u514d\u8d39\u66ff\u4ee3\u54c1\uff08\u5982Lark\u673a\u5668\u4eba\u3001PagerDuty\u514d\u8d39\u7248\uff09\u505a\u66f4\u5b8c\u5584\u7684\u544a\u8b66\u5206\u7ea7\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u597d\u5728\u5b83\u6781\u8f7b\u3001\u6781\u672c\u5730\u3001\u6781\u4fbf\u5b9c\u3002\u76f8\u6bd4\u90a3\u4e9b\u201c\u91cd\u7ba1\u4e2d\u53f0\u201d\uff0cDownbar\u66f4\u50cf\u662f\u653e\u5728\u773c\u89d2\u7684\u8b66\u793a\u706f\u2014\u2014\u4e0d\u662f\u7528\u6765\u51b3\u7b56\u7684\uff0c\u662f\u7528\u6765\u8ba9\u4f60\u5b89\u5fc3\u5199\u4ee3\u7801\u7684\u3002\u8fd9\u4e2a\u201c\u60c5\u7eea\u4ef7\u503c\u201d\u5bf9\u72ec\u7acb\u5f00\u53d1\u8005\u548cSMB\u56e2\u961f\u6765\u8bf4\uff0c\u786e\u5b9e\u6bd4\u6210\u5806\u7684\u76d1\u63a7\u9762\u677f\u66f4\u76f4\u63a5\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Downbar<\/span>\n                <\/div>\n<div class=\"comment-content\">Downbar is a $2.99 macOS menu-bar app that watches 110+ public status pages. AI, cloud, dev tools, payments \u2014 and tells you the moment something goes down, and the moment it recovers.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Claude Code and the OpenAI API went down often enough that I caught myself about to bookmark both their status pages so I could check them faster. Then I realized that bookmarking a status page is a pretty grim way to live. And the annoying part isn&#8217;t even the outage, it&#8217;s the few minutes you spend assuming you broke something before it occurs to you to go check. <\/p>\n<p>I didn&#8217;t want to remember to check anything<br \/>\nSo I built Downbar. It&#8217;s a small menu bar app that shows a three-bar meter and changes color based on the worst status across the services you watch. Green when everything&#8217;s fine, red when something you depend on is having a bad day. Click it for the list, and you get a native notification when something goes down and another when it comes back.<\/p>\n<p>It reads public status pages. I seeded a catalog of a bit over 110 (AI APIs, cloud, dev tools, payments, that sort of thing) and you can paste any Statuspage, Instatus, or plain website URL on top of that.<\/p>\n<p>That includes your own services. A plain URL just gets pinged for reachability and latency, so I keep my API&#8217;s \/health endpoint in there right next to the third-party pages. And if you want the alerts to land somewhere other than your menu bar, it can POST a webhook to Slack, Discord, or any endpoint on the same up and down transitions.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#20<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/NM2ES4LVKDJ6LN\" class=\"app-title\">LocoPast &#8211; Discover History All Around<\/a><\/p>\n<div class=\"one-liner\">The location-based history app &#8211; explore the world&#8217;s history<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">15<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>LocoPast\u901a\u8fc7\u5730\u56fe\u5b9a\u4f4d\u4e0e\u5386\u53f2\u4e8b\u4ef6\u6570\u636e\u5e93\u7ed3\u5408\uff0c\u8ba9\u7528\u6237\u5728\u65c5\u884c\u6216\u65e5\u5e38\u6f2b\u6b65\u65f6\uff0c\u4e00\u952e\u67e5\u8be2\u8eab\u8fb9\u8857\u9053\u3001\u5efa\u7b51\u6216\u4efb\u610f\u5730\u70b9\u66fe\u53d1\u751f\u7684\u6218\u4e89\u3001\u540d\u4eba\u8f76\u4e8b\u3001\u6587\u5316\u4e8b\u4ef6\u7b49\u5386\u53f2\u4fe1\u606f\uff0c\u89e3\u51b3\u201c\u8def\u8fc7\u5374\u4e0d\u77e5\u6b64\u5730\u6545\u4e8b\u201d\u7684\u6c42\u77e5\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/3e60f3f9-bf50-44d8-a398-4a9269f5b225.jpeg?auto=format\" data-video-url=\"https:\/\/youtube.com\/shorts\/p5UTZds5vdM\"><source src=\"https:\/\/youtube.com\/shorts\/p5UTZds5vdM\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1d94ab82-59e7-47d1-b2df-8c71233fe32a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/dd7e23a8-889c-4612-b358-2a5a19fe3ac8.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1cf57f0c-c623-45a8-b1b6-0fa83ee49bcc.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Education<\/span><br \/>\n            <span class=\"tag\">Online Learning<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u4f4d\u7f6e\u670d\u52a1<\/span><br \/>\n            <span class=\"tag\">\u5386\u53f2\u63a2\u7d22<\/span><br \/>\n            <span class=\"tag\">\u65c5\u884c\u4f34\u4fa3<\/span><br \/>\n            <span class=\"tag\">AR\u6587\u5316<\/span><br \/>\n            <span class=\"tag\">\u5730\u7406\u6807\u7b7e<\/span><br \/>\n            <span class=\"tag\">\u77e5\u8bc6\u53d1\u73b0<\/span><br \/>\n            <span class=\"tag\">\u57ce\u5e02\u6f2b\u6e38<\/span><br \/>\n            <span class=\"tag\">\u5386\u53f2\u6559\u80b2<\/span><br \/>\n            <span class=\"tag\">\u4e92\u52a8\u5730\u56fe<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u4e3a\u8be5\u5e94\u7528\u80fd\u89e3\u51b3\u65c5\u884c\u548c\u65e5\u5e38\u4e2d\u201c\u6b64\u5730\u66fe\u53d1\u751f\u4ec0\u4e48\u201d\u7684\u597d\u5947\u5fc3\uff0c\u6709\u4eba\u8868\u793a\u501f\u6b64\u5728\u5973\u53cb\u9762\u524d\u201c\u663e\u6446\u201d\u5386\u53f2\u77e5\u8bc6\u3002\u76ee\u524d\u65e0\u8d1f\u9762\u53cd\u9988\u6216\u529f\u80fd\u5efa\u8bae\uff0c\u66f4\u504f\u5411\u65e9\u671f\u5c1d\u9c9c\u8005\u7684\u6b63\u9762\u60c5\u611f\u8868\u8fbe\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                LocoPast\u7684\u521b\u610f\u9aa8\u67b6\u4e0d\u9519\u2014\u2014\u7528LBS\uff08\u57fa\u4e8e\u4f4d\u7f6e\u7684\u670d\u52a1\uff09\u5524\u9192\u57ce\u5e02\u7684\u8bb0\u5fc6\uff0c\u8ba9\u5386\u53f2\u4ece\u4e66\u672c\u91cc\u8d70\u5165\u8857\u9053\u3002\u8fd9\u79cd\u201c\u7a7a\u95f4+\u65f6\u95f4\u201d\u7684\u53d9\u4e8b\uff0c\u6bd4\u5355\u7eaf\u6d4f\u89c8\u7ef4\u57fa\u767e\u79d1\u591a\u4e86\u4e00\u5c42\u6c89\u6d78\u611f\uff1a\u4f60\u7ad9\u5728\u6ed1\u94c1\u5362\uff0c\u5730\u56fe\u5c31\u544a\u8bc9\u4f60\u8fd9\u91cc\u66fe\u8840\u6d41\u6210\u6cb3\uff1b\u4f60\u5728\u5df4\u9ece\u5de6\u5cb8\uff0c\u5b9a\u4f4d\u5c31\u5f39\u51fa\u6d77\u660e\u5a01\u7684\u65e7\u5c45\u3002\u8fd9\u662f\u4ea7\u54c1\u6700\u76f4\u63a5\u7684\u201c\u77ac\u95f4\u4ef7\u503c\u201d\uff0c\u4e5f\u662f\u5b83\u8ba9\u4eba\u201cWOW\u201d\u7684\u8d77\u70b9\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u6838\u5fc3\u95ee\u9898\u85cf\u5728\u8fd9\u5c42WOW\u4e4b\u4e0b\u3002\u76ee\u524d\u6295\u7968\u6570\u4ec515\uff0c\u5c5e\u4e8e\u6781\u65e9\u671f\u4ea7\u54c1\uff0c\u8bc4\u8bba\u51e0\u4e4e\u90fd\u662f\u96f6\u6210\u672c\u5938\u8d5e\uff0c\u7f3a\u4e4f\u6df1\u5ea6\u4f7f\u7528\u540e\u7684\u5410\u69fd\u3002\u8fd9\u66b4\u9732\u51fa\u4e24\u4e2a\u6f5c\u5728\u98ce\u9669\uff1a\u4e00\u662f\u5185\u5bb9\u6df1\u5ea6\u548c\u51c6\u786e\u6027\u3002\u5982\u679c\u5386\u53f2\u6570\u636e\u53ea\u662f\u4ece\u516c\u5f00API\u6216\u4f17\u5305\u6293\u53d6\uff0c\u7f3a\u4e4f\u4e13\u4e1a\u53f2\u5b66\u5bb6\u5ba1\u6838\uff0c\u4f26\u6566\u7684\u201c\u5927\u761f\u75ab\u201d\u548c\u201c\u5c60\u592b\u8857\u7684\u51f6\u6848\u201d\u4f1a\u88ab\u6df7\u5728\u4e00\u7ea7\u5217\u8868\u4e2d\uff0c\u7528\u6237\u5f88\u5feb\u4f1a\u5931\u53bb\u4fe1\u4efb\u3002\u4e8c\u662f\u201cwhat happened here\u201d\u573a\u666f\u5176\u5b9e\u5f88\u8106\u5f31\u2014\u2014\u5927\u591a\u6570\u7528\u6237\u53ea\u4f1a\u5728\u65c5\u884c\u5934\u4e24\u5929\u89c9\u5f97\u65b0\u9c9c\uff0c\u4e4b\u540e\u4fbf\u9677\u5165\u201c\u770b\u4e86\u5750\u6807\u3001\u8bfb\u4e86\u7b80\u4ecb\u3001\u5212\u8d70\u201d\u7684\u5faa\u73af\u3002\u5982\u4f55\u8ba9\u7528\u6237\u4ea7\u751f\u201c\u91cd\u8bbf\u6b32\u201d\uff1f\u76ee\u524d\u5b8c\u5168\u6ca1\u770b\u5230\u76f8\u5e94\u7684\u793e\u4ea4\u673a\u5236\u6216\u5b66\u4e60\u8def\u5f84\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u6b64\u5916\uff0c\u4ece\u8fc7\u6ee4\u7ef4\u5ea6\u770b\uff0c\u201c\u6700\u91cd\u5927\u201d\u548c\u201c\u6700\u8fd1\u201d\u4e24\u4e2a\u6392\u5e8f\u6807\u51c6\u592a\u521d\u7ea7\u3002\u5bf9\u4e8e\u5386\u53f2\u7231\u597d\u8005\u800c\u8a00\uff0c\u4ed6\u4eec\u66f4\u60f3\u8981\u201c\u6309\u65f6\u95f4\u7ebf\u7a7f\u68ad\u201d\u201c\u4ec5\u770b\u51b7\u95e8\u8f76\u4e8b\u201d\u201c\u53ea\u770b\u8fd1\u4ee3\u53f2\u201d\u7b49\u9ad8\u7ea7\u7b5b\u9009\u3002\u5982\u679c\u4ec5\u4ec5\u662f\u201c\u5730\u56fe+\u767e\u79d1\u201d\uff0c\u90a3\u4e48Google Maps\u5d4c\u4e2a\u7ef4\u57fa\u767e\u79d1\u94fe\u63a5\u5c31\u80fd\u66ff\u4ee3\u4f60\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4e00\u53e5\u8bdd\u603b\u7ed3\uff1a\u65b9\u5411\u6709\u8da3\uff0c\u4f46\u79bb\u201c\u53d1\u73b0\u5386\u53f2\u201d\u7684\u91ce\u5fc3\u8fd8\u6709\u4e00\u6761\u6df1\u9083\u7684\u62a4\u57ce\u6cb3\u2014\u2014\u5185\u5bb9\u53ef\u4fe1\u5ea6\u3001\u8fc7\u6ee4\u6df1\u5ea6\u3001\u7528\u6237\u7559\u5b58\u3002\u76ee\u524d\u5b83\u662f\u4e00\u672c\u4f1a\u5b9a\u4f4d\u7684\u767e\u79d1\u5361\u7247\uff0c\u8fd8\u4e0d\u662f\u4e00\u6b3e\u80fd\u8ba9\u4eba\u6c89\u8ff7\u7684\u5386\u53f2\u4fa6\u63a2\u6e38\u620f\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">LocoPast &#8211; Discover History All Around<\/span>\n                <\/div>\n<div class=\"comment-content\">LocoPast reveals the remarkable history hidden around you &#8211; battles, artists, scandals and wonders, mapped to the streets where they happened. Select your own location or search any location, city or sites in the world, to reveal everything that happened there. Filter between &#8220;most significant&#8221; and &#8220;nearest&#8221; and filter by categories such as wars and battles, politics, science and trade, arts and culture, and much more.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is dope!! My gf thinks I&#8217;m a genius when I&#8217;m dropping facts out and about lol. Should probably tell her&#8230; anyway! Everyone should give this app a go!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@samueljameshall\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@samueljameshall<\/a>&nbsp;haha, you should definitely tell her &#8211; and encourage her to download it too. Glad you&#8217;re enjoying using it! \ud83c\udf89<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This looks amazing! I just spent the past few weeks traveling and did wonder so many times what a certain building was. Or what famous person used to roam specific streets. This will make getting the answer much easier!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@bhouy\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bhouy<\/a>&nbsp;thank you so much! \u263a\ufe0f It&#8217;s always really interesting to explore historically significant sites and places around. Hope you find it useful on your next travels.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">I often travel and wonder &#8220;what happened here?&#8221;. Now I can use LocoPast to explore the world&#8217;s history, all around me.<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<\/div>\n<p><!-- \u56fe\u7247\u653e\u5927\u6a21\u6001\u6846 --><\/p>\n<div id=\"imageModal\" class=\"modal\">\n    <span class=\"close\">&times;<\/span><br \/>\n    <img class=\"modal-content\" id=\"modalImage\">\n<\/div>\n<p><script>\n    \/\/ \u83b7\u53d6\u6a21\u6001\u6846\u5143\u7d20\n    const modal = document.getElementById(\"imageModal\");\n    const modalImg = document.getElementById(\"modalImage\");\n    const closeBtn = document.getElementsByClassName(\"close\")[0];<\/p>\n<p>    \/\/ \u68c0\u6d4b\u662f\u5426\u4e3a\u79fb\u52a8\u8bbe\u5907\n    const isMobile = \/iPhone|iPad|iPod|Android\/i.test(navigator.userAgent);<\/p>\n<p>    \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4f18\u5316\n    function addTouchOptimization() {\n        if (isMobile) {\n            \/\/ \u4e3a\u6240\u6709\u53ef\u70b9\u51fb\u5143\u7d20\u6dfb\u52a0\u89e6\u6478\u53cd\u9988\n            const clickableElements = document.querySelectorAll(\n                '.media-content, .close, .video-overlay, .play-icon'\n            );<\/p>\n<p>            clickableElements.forEach(el => {\n                el.style.touchAction = 'manipulation'; \/\/ \u9632\u6b62\u53cc\u51fb\u7f29\u653e\n            });\n        }\n    }<\/p>\n<p>    \/\/ \u4e3a\u6240\u6709\u56fe\u7247\u6dfb\u52a0\u70b9\u51fb\u4e8b\u4ef6\n    const images = document.querySelectorAll(\"img.media-content\");\n    images.forEach(img => {\n        img.onclick = function() {\n            modal.style.display = \"block\";\n            modalImg.src = this.src;\n            \/\/ \u963b\u6b62\u80cc\u666f\u6eda\u52a8\n            document.body.style.overflow = \"hidden\";\n        }<\/p>\n<p>        \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n        if (isMobile) {\n            img.addEventListener('touchstart', function(e) {\n                \/\/ \u9632\u6b62\u89e6\u6478\u4e8b\u4ef6\u89e6\u53d1\u4e0d\u5fc5\u8981\u7684\u884c\u4e3a\n                e.preventDefault();\n                this.click();\n            }, { passive: false });\n        }\n    });<\/p>\n<p>    \/\/ \u4e3a\u89c6\u9891\u6dfb\u52a0\u70b9\u51fb\u4e8b\u4ef6 - \u8df3\u8f6c\u5230\u89c6\u9891URL\n    const videos = document.querySelectorAll(\"video.media-content\");\n    videos.forEach(video => {\n        \/\/ \u70b9\u51fb\u89c6\u9891\u672c\u8eab\u65f6\u8df3\u8f6c\u5230\u89c6\u9891URL\n        video.onclick = function(e) {\n            \/\/ \u68c0\u67e5\u70b9\u51fb\u76ee\u6807\u662f\u5426\u662f\u89c6\u9891\u63a7\u4ef6\u6216\u5176\u5b50\u5143\u7d20\n            let isControlClick = false;\n            let target = e.target;<\/p>\n<p>            \/\/ \u5411\u4e0a\u904d\u5386DOM\uff0c\u68c0\u67e5\u662f\u5426\u70b9\u51fb\u4e86\u63a7\u4ef6\u5143\u7d20\n            while (target && target !== this) {\n                \/\/ \u68c0\u67e5\u662f\u5426\u6709\u63a7\u4ef6\u76f8\u5173\u7684\u7c7b\u540d\u6216\u5c5e\u6027\n                if (target.classList.contains('video-js') || \n                    target.tagName.toLowerCase() === 'button' || \n                    target.tagName.toLowerCase() === 'input' || \n                    target.tagName.toLowerCase() === 'select' ||\n                    target.className.includes('control')) {\n                    isControlClick = true;\n                    break;\n                }\n                target = target.parentElement;\n            }<\/p>\n<p>            \/\/ \u53ea\u6709\u5f53\u70b9\u51fb\u7684\u662f\u89c6\u9891\u672c\u8eab\u800c\u975e\u63a7\u4ef6\u65f6\u624d\u8df3\u8f6c\n            if (!isControlClick && e.target.tagName.toLowerCase() === 'video') {\n                const videoUrl = this.getAttribute('data-video-url') || this.querySelector('source').src;\n                window.open(videoUrl, '_blank');\n            }\n        }<\/p>\n<p>        \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n        if (isMobile) {\n            video.addEventListener('touchstart', function(e) {\n                \/\/ \u68c0\u67e5\u662f\u5426\u70b9\u51fb\u4e86\u63a7\u4ef6\n                let isControlClick = false;\n                let target = e.target;<\/p>\n<p>                while (target && target !== this) {\n                    if (target.tagName.toLowerCase() === 'button' || \n                        target.tagName.toLowerCase() === 'input' || \n                        target.className.includes('control')) {\n                        isControlClick = true;\n                        break;\n                    }\n                    target = target.parentElement;\n                }<\/p>\n<p>                if (!isControlClick) {\n                    e.preventDefault();\n                    const videoUrl = this.getAttribute('data-video-url') || this.querySelector('source').src;\n                    window.open(videoUrl, '_blank');\n                }\n            }, { passive: false });\n        }\n    });<\/p>\n<p>    \/\/ \u4e3a\u89c6\u9891\u906e\u7f69\u6dfb\u52a0\u70b9\u51fb\u4e8b\u4ef6\uff0c\u786e\u4fdd\u70b9\u51fb\u906e\u7f69\u4e5f\u80fd\u8df3\u8f6c\n    const videoOverlays = document.querySelectorAll('.video-overlay');\n    videoOverlays.forEach(overlay => {\n        overlay.onclick = function(e) {\n            \/\/ \u963b\u6b62\u4e8b\u4ef6\u5192\u6ce1\u5230\u89c6\u9891\u5143\u7d20\n            e.stopPropagation();\n            const video = this.parentElement.querySelector('video.media-content');\n            if (video) {\n                const videoUrl = video.getAttribute('data-video-url') || video.querySelector('source').src;\n                window.open(videoUrl, '_blank');\n            }\n        }<\/p>\n<p>        \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n        if (isMobile) {\n            overlay.addEventListener('touchstart', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                const video = this.parentElement.querySelector('video.media-content');\n                if (video) {\n                    const videoUrl = video.getAttribute('data-video-url') || video.querySelector('source').src;\n                    window.open(videoUrl, '_blank');\n                }\n            }, { passive: false });\n        }\n    });<\/p>\n<p>    \/\/ \u5173\u95ed\u6a21\u6001\u6846\n    closeBtn.onclick = function() {\n        modal.style.display = \"none\";\n        \/\/ \u6062\u590d\u80cc\u666f\u6eda\u52a8\n        document.body.style.overflow = \"auto\";\n    }<\/p>\n<p>    \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n    if (isMobile) {\n        closeBtn.addEventListener('touchstart', function(e) {\n            e.preventDefault();\n            modal.style.display = \"none\";\n            document.body.style.overflow = \"auto\";\n        }, { passive: false });\n    }<\/p>\n<p>    \/\/ \u70b9\u51fb\u6a21\u6001\u6846\u5916\u90e8\u5173\u95ed\n    window.onclick = function(event) {\n        if (event.target === modal) {\n            modal.style.display = \"none\";\n            document.body.style.overflow = \"auto\";\n        }\n    }<\/p>\n<p>    \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n    if (isMobile) {\n        modal.addEventListener('touchstart', function(e) {\n            if (e.target === modal) {\n                modal.style.display = \"none\";\n                document.body.style.overflow = \"auto\";\n            }\n        }, { passive: true });\n    }<\/p>\n<p>    \/\/ \u6309ESC\u952e\u5173\u95ed\u6a21\u6001\u6846\n    document.addEventListener('keydown', function(event) {\n        if (event.key === 'Escape' && modal.style.display === 'block') {\n            modal.style.display = 'none';\n            document.body.style.overflow = \"auto\";\n        }\n    });<\/p>\n<p>    \/\/ \u68c0\u67e5\u6bcf\u4e2a\u5a92\u4f53\u753b\u5eca\u4e2d\u662f\u5426\u53ea\u6709\u4e00\u4e2a\u9879\u76ee\uff0c\u5982\u679c\u662f\uff0c\u6dfb\u52a0single-item\u7c7b\n    document.querySelectorAll('.media-gallery').forEach(gallery => {\n        if (gallery.querySelectorAll('.media-item-wrapper').length === 1) {\n            gallery.classList.add('single-item');\n        }\n    });<\/p>\n<p>    \/\/ \u521d\u59cb\u5316\u89e6\u6478\u4f18\u5316\n    addTouchOptimization();<\/p>\n<p>    \/\/ \u7a97\u53e3\u5927\u5c0f\u53d8\u5316\u65f6\u91cd\u65b0\u68c0\u67e5\u753b\u5eca\u72b6\u6001\n    window.addEventListener('resize', function() {\n        document.querySelectorAll('.media-gallery').forEach(gallery => {\n            if (gallery.querySelectorAll('.media-item-wrapper').length === 1) {\n                gallery.classList.add('single-item');\n            } else {\n                gallery.classList.remove('single-item');\n            }\n        });\n    });<\/p>\n<p>    \/\/ --- \u8bc4\u8bba\u533a\u57df\u6298\u53e0\/\u5c55\u5f00\u529f\u80fd ---\n    const commentToggles = document.querySelectorAll('.comments-toggle');<\/p>\n<p>    commentToggles.forEach(toggle => {\n        toggle.addEventListener('click', function() {\n            \/\/ \u5207\u6362\u5f53\u524dtoggle\u7684open\u72b6\u6001\n            this.classList.toggle('open');<\/p>\n<p>            \/\/ \u83b7\u53d6\u5bf9\u5e94\u7684\u8bc4\u8bba\u5bb9\u5668\n            const commentsContainer = this.nextElementSibling;\n            if (commentsContainer && commentsContainer.classList.contains('comments-container')) {\n                commentsContainer.classList.toggle('open');\n            }\n        });\n    });\n<\/script><\/p>\n<p><\/body><br \/>\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Product Hunt \u6bcf\u65e5\u70ed\u699c 2026-06-29 PH\u70ed\u699c | 2026-06-29 #1 Spira [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"template-clean-canvas.php","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-267","post","type-post","status-publish","format-standard","hentry","category-producthunt"],"_links":{"self":[{"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/posts\/267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/comments?post=267"}],"version-history":[{"count":0,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/posts\/267\/revisions"}],"wp:attachment":[{"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/media?parent=267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/categories?post=267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/tags?post=267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}