Open-Source Cold Email & Warmup Platform
Warmbly는 메일함을 예열하고 캠페인 전송·답변 triage를 지원하는 오픈소스 콜드 이메일 플랫폼입니다
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Score how generic an AI-written landing page is, then rebuild it around the founder's own story.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Most landing pages written with AI look like each other: a purple gradient, a headline that starts with "Unlock", three feature cards with emoji, six different buttons, and nobody on the page.
Desloper reads your landing page, scores how generic it is, and shows you every finding. Then it hands you a prompt to paste into your own AI coding tool, so the fix happens in your codebase, on your stack.
91 F "🚀 The AI-Powered Platform to Supercharge Your Workflow and Unlock Your Team's Full Potential"
CTA 1.1 screens down · 20 emoji, 4 of them rockets · 12.7 screens tall on mobile
0 A the hand-made fixture
Both are test fixtures in lib/analyze/__fixtures__. The test suite checks that the sloppy page scores above 65 and the hand-made page below 35.
.md file.Scoring and the fix prompt both run on the same eight principles, written out in lib/doctrine.ts:
If you disagree with how a page is judged, change that file. The judge reads its instructions from it and the fix prompt quotes it, so the scoring and the instructions change together.
lib/ai.ts.@sparticuz/chromium on Vercel, regular Chromium locally. Every request the browser makes goes through a small egress proxy that refuses private and loopback addresses, including after redirects and DNS changes.yarn
npx playwright install chromium
cp .env.example .env.local # add AI_GATEWAY_API_KEY
yarn dev
AI_GATEWAY_API_KEY turns on the model judge. Without it, the detectors score the page alone. Without Supabase settings, reports are kept in memory and accounts are turned off.
To persist reports, create a Supabase project, fill in the Supabase variables in .env.local, then:
npx supabase link --project-ref <ref>
npx supabase db push --linked
The same capture, detectors, score and fix prompt run from a terminal, against any URL, localhost included:
bin/desloper analyze http://localhost:3000 # screenshots, findings, a detector-only score
bin/desloper finish <run-dir> --judgement j.json # blend in a judgement, write fix-prompt.md
bin/desloper doctrine # the eight principles
bin/desloper analyze readme # the README in this directory
A README is scored on six of the principles (no folds, buttons or fonts), plus four checks only Markdown can answer: no example, no install path, a badge wall and a template outline. Its fix prompt edits the README instead of a page.
--judge on analyze runs the model judge when AI_GATEWAY_API_KEY is set. Without it, a coding agent can write the judgement itself: skills/desloper/SKILL.md walks Claude Code through capturing the page, judging it against the doctrine, and applying the fix prompt in whatever repo it is working in. Install it for every repo with:
ln -s "$PWD/skills/desloper" ~/.claude/skills/desloper
The command line skips the egress proxy so it can read your own dev server. Keep it on your machine; the web app is the one meant for strangers' URLs.
yarn test # detectors, scoring, the fix prompt, the egress guard, persistence
yarn typecheck
yarn lint
CAPTURE_E2E=1 yarn test # also drives a real browser
app/page.tsx the whole flow, one staged screen
app/r/[id] a saved report, reopened on its results
app/api/analyze capture → detectors → judge, streamed as server-sent events
app/api/interview saves the optional answers for the report's author
lib/analyze/ capture, snapshot, egress guard, detectors, judge, score
lib/fix-prompt.ts builds the fix prompt, deterministically
lib/generate/ interview questions, request schemas
lib/doctrine.ts what a good page is
cli/desloper.ts the command line (bin/desloper runs it from any directory)
skills/desloper/ the Claude Code skill that drives it
supabase/migrations/ schema, row-level security, storage bucket