Vibe Prospecting
채팅 안에서 전문적인 영업 탐색, 50개 이상 B2B 데이터 소스로 리드 리스트·계정 조사·결정권자 찾기
공공 부문 매출 기회를 찾아 기업 사이트에서 신호·구매자·연락처·다음 행동을 스캔합니다
Find public-sector revenue opportunities hiding in plain sight. Scan your company website for sourced public-sector signals, buyer targets, contact paths, and next actions.
마케팅TypeScript · JavaScriptGitHub @Joelle-Ayala온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Lightweight B2B MVP that turns a company URL into a structured company profile, opportunity search strategy, and sourced public-sector opportunity report.
/admin/reportsnpm install
npm run dev
Set the variables in .env.local. For Supabase database setup, use the ordered migration process below rather than applying db/schema.sql alone.
db/migration-manifest.json is the production database source of truth. Its entries are append-only and contain a stable version, ordered prerequisites, and the SHA-256 checksum of every required SQL file. This includes billing, scan nurture, scan attribution, account ownership and report access, lead-magnet capture expansion, monitoring, and alert delivery.
Run the credential-free parity check before any database change:
node scripts/test-migration-manifest.mjs
The check fails if a production SQL file is missing from the manifest, a dependency moves after its consumer, a historical migration changes without a new version, or the ledger contract is weakened. In pull requests and pushes to main, the launch workflow fetches full Git history and supplies the trusted base commit through MIGRATION_BASE_REF. The test then requires existing manifest entries to remain an exact prefix and requires every migration SQL file present at the merge base to remain byte-for-byte unchanged. Updating historical SQL and its checksum together therefore still fails.
To run the same history comparison locally against the shared base branch:
git fetch origin main
MIGRATION_BASE_REF=origin/main node scripts/test-migration-manifest.mjs
Without MIGRATION_BASE_REF, the test still runs current-tree parity, dependency, checksum, ledger-idempotency, and ledger-security checks, but it cannot prove Git history immutability. Never put a database URL, password, or service key in the manifest, ledger, workflow, or commands committed to the repository.
db/schema-migrations.sql first. It safely creates the operator-owned, append-only public.schema_migrations ledger and can be run more than once.public.record_schema_migration with the entry's version, file, checksum, and manifest version. The call is idempotent, serializes concurrent operator writes, requires the immediately preceding version, and rejects metadata that disagrees with an existing version.With a database URL supplied through the operator's environment, the transaction shape for one entry is:
psql "$SUPABASE_DB_URL" -v ON_ERROR_STOP=1 --single-transaction \
--file db/schema.sql \
--command "select public.record_schema_migration('v0001', 'db/schema.sql', '790001580a9cc77ca2dbae13dd13f6837edf211e8d7b68a83a98805813179bc7', 1);"
Repeat that shape for each manifest entry using its exact metadata. The URL remains in the environment and is never written into a repository file. In the Supabase SQL editor, use the same order: run the migration and its matching record_schema_migration call together as a transaction.
db/schema-migrations.sql so the latest idempotent ledger contract exists.public.schema_migration_effective_checksums ordered by version and compare each file and effective checksum with the manifest. For databases that predate v0033, compare public.schema_migrations directly.a291754b0456a734d41881e6b439b11c21200795e3d30eef84083dbfd6311e4a: apply v0033, which validates that exact value and appends a correction to the final v0032 checksum, then compare through the effective-checksum view. Any other mismatch remains a hard stop.node scripts/test-migration-manifest.mjs, then the normal launch checks.For a database created before the ledger existed, do not assume that every historical migration ran. Verify the expected tables, columns, functions, and deployment history for each manifest entry, then call public.record_schema_migration in order only for versions confirmed present. Apply any first missing version and all later required versions through the normal upgrade flow.
In this Codex workspace, a zero-dependency preview runner is available for quick testing:
node scripts/local-preview.mjs
It uses the same local .data/local-db.json storage fallback and mirrors the Milestone 1 form, profile page, and admin completed-scans view.
Refinements discovered during report review are tracked in docs/report-quality-rules.md.
Run the local evaluator after changing report logic or adding new industry rules:
npm run evaluate:reports
The evaluator defaults to the latest Jammcard, SchoolGig, and Reparel scans so source changes can be regression-tested quickly. Use npm run evaluate:reports -- --all to audit every completed local scan, or npm run evaluate:reports -- --scan [scan_id] to target one report. It flags likely relevance mistakes, prints source/actionability counts, and writes the latest QA output to output/quality/report-quality-latest.json.
Connector rollout steps are tracked in docs/connector-testing-plan.md.
Vertical playbooks live in lib/playbooks.ts. A scan is classified into one or more reusable playbooks after company profiling. Selected playbooks enrich:
Implemented playbooks currently include Healthcare / Rehab / DME, Music / Arts / Creative Economy, and Education / Workforce / Training. Additional playbooks are stubbed as planned so the source engine can be expanded iteratively.
Active or wired sources:
SAM_API_KEY is configuredReports include a Sources Checked panel. Sources that are modeled but not connected yet are shown as planned rather than silently implied.
SAM.gov can be smoke-tested without creating a scan:
npm run test:sam
npm run test:sam -- "live music services"
Paid launch operations are documented in docs/paid-launch-runbook.md. Before publishing a production release, configure the production services and run:
pnpm run check:launch-env
pnpm run verify:launch
check:launch-env requires the production scan, Supabase Auth, Stripe live payment, monitoring cron, Resend, unsubscribe, and rate-limit configuration. verify:launch runs the launch contract suite, report regressions, typecheck, and production build. Use GET /api/health on the deployed release to distinguish demo readiness from real paid-signup readiness without exposing configuration values. Paid Report readiness also requires configured customer email delivery and product analytics. The health route checks configuration and Stripe mode only; it does not query production migration-manifest/ledger parity, which remains a separate launch-runbook check.
Production access is account- and purchase-based. A customer buys a one-time full report from an existing free report. Monitor and Growth remain unavailable unless both ENABLE_SUBSCRIPTION_CHECKOUT=true and MONITORING_SCHEDULER_READY=true; when enabled, a customer signs in with a Supabase magic link before buying either subscription. Legacy ?access= report and admin codes are local-development tools only unless the explicit emergency production override is enabled.
Copy .env.example to .env.local.
OPENAI_API_KEY enables AI-generated company profiles.SAM_API_KEY enables SAM.gov active opportunity search.SUPABASE_URL, SUPABASE_ANON_KEY, and SUPABASE_SERVICE_ROLE_KEY enable production storage and customer magic-link authentication.APP_URL, the Stripe live secret and webhook secret, and STRIPE_PRICE_REPORT enable one-time Report checkout.ENABLE_SUBSCRIPTION_CHECKOUT=true, MONITORING_SCHEDULER_READY=true, and all four Monitor/Growth Stripe Price IDs explicitly enable subscription checkout. Any other state keeps subscriptions unavailable.CRON_SECRET enables authenticated monitoring and nurture jobs.RESEND_API_KEY, RESEND_FROM_EMAIL, and the alert/nurture unsubscribe secrets enable customer email delivery.VERCEL_WEB_ANALYTICS_ENABLED=true for privacy-friendly traffic and UTM reporting. NEXT_PUBLIC_POSTHOG_KEY and NEXT_PUBLIC_POSTHOG_HOST optionally add privacy-limited product events. NEXT_PUBLIC_GA_MEASUREMENT_ID optionally adds Google Analytics 4 page views on the first page load. The production measurement ID is G-0MLMTPZ84W. Leave the variable unset to disable Google Analytics. Visitors can turn analytics off from the site notice or footer.OPPORTUNITY_SCANNER_REPORT_ACCESS_CODE and OPPORTUNITY_SCANNER_ADMIN_CODE are legacy local-only URL access codes. Production ignores them unless OPPORTUNITY_SCANNER_EMERGENCY_ENABLE_LEGACY_URL_ACCESS_CODES_IN_PRODUCTION=true; any emergency code must be at least 32 characters..data/local-db.json for development. Production requires Supabase unless ALLOW_LOCAL_STORAGE_IN_PRODUCTION=true is set for temporary internal testing./ scan form/reports/[id] free report preview/pricing live Report checkout when Stripe is configured; Monitor and Growth are shown as unavailable until explicitly enabled/auth/sign-in customer magic-link sign-in/dashboard account-owned reports, saved searches, monitoring, and billing/dashboard/onboarding post-purchase monitoring setup/opportunities/[id]?scanId=[scan_id] paid opportunity workspace for an entitled customer/admin/reports internal completed scan list/admin/feedback internal feedback review for good-fit and bad-fit labels/admin/sources internal connector/source coverage