Integrate local business workflow and SaaS redesign
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-13
|
||||
title: Build the audit and outreach review workspace
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-03 19:14'
|
||||
updated_date: '2026-06-05 14:21'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels:
|
||||
- mvp
|
||||
- review
|
||||
@@ -56,3 +56,9 @@ Implemented first TASK-13 prerequisite: PageSpeed completion now queues audit_ge
|
||||
|
||||
2026-06-05: Completed TASK-13 implementation subagent-driven and test-driven on branch codex-task-13-review-workspace. Worker A added authenticated Convex review workspace contracts, save/approve draft mutations, protected existing outreach create/list, audit ownership checks, sent-record protection, approval reset on regenerated copy, and combined review eligibility indexes. Worker B replaced /dashboard/outreach placeholder with the review workspace UI, editable audit/outreach drafts, raw/source toggles, used skills, phone-script gating, and save-before-approve/publish safeguards. Worker C fixed funnel regression so approved-but-unsent outreach remains in Freigabe offen. Reviews: backend spec approved, backend quality approved after fixes, UI spec approved, UI quality approved after fixes, funnel spec/quality approved, final TASK-13 spec approved. Verification passed: pnpm test (263/263), pnpm exec tsc --noEmit, pnpm lint (0 errors; existing BetterAuth generated warnings only), pnpm build with network escalation for Google Fonts.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-15
|
||||
title: Add follow-up and manual sales status tracking
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-03 19:14'
|
||||
updated_date: '2026-06-05 19:49'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels:
|
||||
- mvp
|
||||
- sales
|
||||
@@ -49,3 +49,9 @@ Started implementation pass for tasks 15-19 and 27. TASK-27 note says it is supe
|
||||
|
||||
Implemented and verified follow-up draft creation after send, manual approval boundaries for follow-up records, manual sales status labels/mutation, reply/no-interest suppression, and 12-month do-not-contact recheck visibility. Verification: pnpm test 305/305; pnpm lint 0 errors.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-16
|
||||
title: Orchestrate recurring Convex agent jobs and audit lifecycle
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-03 19:14'
|
||||
updated_date: '2026-06-05 19:49'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels:
|
||||
- mvp
|
||||
- convex
|
||||
@@ -51,3 +51,9 @@ Started implementation pass for recurring Convex agent jobs, run locking, logs,
|
||||
|
||||
Implemented and verified Convex crons, due-campaign runner, single-active-run guard, visible campaign run logs, and audit lifecycle notification/deactivation controls. Verification: pnpm test 305/305; pnpm lint 0 errors.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-17
|
||||
title: Add Rybbit audit analytics dashboard
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-03 19:14'
|
||||
updated_date: '2026-06-05 19:50'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels:
|
||||
- mvp
|
||||
- analytics
|
||||
@@ -51,3 +51,9 @@ Implemented public-audit-only Rybbit tracking, on-demand Rybbit API routes for a
|
||||
|
||||
Completed remaining Rybbit campaign aggregation path: campaignMetrics now exposes audit path segments with campaign/niche/region, Rybbit campaign API returns per-path activity, and the Analytics dashboard groups audit opens/CTA clicks by campaign, niche, and region. Verification: targeted analytics tests pass.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-18
|
||||
title: Add MVP quality gates and operational polish
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-03 19:15'
|
||||
updated_date: '2026-06-05 19:49'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels:
|
||||
- mvp
|
||||
- quality
|
||||
@@ -51,3 +51,9 @@ Started implementation pass for MVP quality gates, error observability, verifica
|
||||
|
||||
Implemented and verified German operational readiness surfaces, secret-safe integration status rows, verification notes for critical flows, and Coolify deployment notes. Verification: pnpm test 305/305; pnpm lint 0 errors.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-19
|
||||
title: Add campaign performance metrics
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-03 19:15'
|
||||
updated_date: '2026-06-05 19:49'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels:
|
||||
- mvp
|
||||
- analytics
|
||||
@@ -51,3 +51,9 @@ Started implementation pass for campaign performance metrics and filters.
|
||||
|
||||
Implemented and verified lightweight campaign metrics query/dashboard, filter contract, run detail rows, and Rybbit-derived audit opens/CTA clicks alongside Convex metrics. Verification: pnpm test 305/305; pnpm lint 0 errors.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-21
|
||||
title: Replace oversized Convex browser runtime dependency
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-04 15:30'
|
||||
updated_date: '2026-06-04 16:41'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -43,3 +43,9 @@ Follow-up for repeated /tmp/chromium cannot execute binary file: Context7 confir
|
||||
|
||||
Follow-up for libnspr4.so runtime error: Context7 and local @sparticuz/chromium-min docs show remote pack includes al2023.tar.br, but package only auto-inflates it when AL2023 detection fires. Convex needs those shared libs without being detected. Added explicit AL2023 shared-library preparation after executablePath(): inflate CHROMIUM_PACK_PATH/al2023.tar.br and setupLambdaEnvironment(/tmp/al2023/lib) before Playwright launch. Verification passed: pnpm exec tsc -p tsconfig.json; pnpm test (109/109); pnpm lint (existing generated BetterAuth warnings only); pnpm exec convex codegen --dry-run --typecheck enable.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-22
|
||||
title: Add source assertions for Convex AL2023 Chromium lib setup
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-04 16:37'
|
||||
updated_date: '2026-06-04 16:41'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -38,3 +38,9 @@ Added source-only assertion in tests/website-enrichment-action.test.ts for AL202
|
||||
|
||||
GREEN follow-up completed: runtime action now exposes chromium-min inflate/setupLambdaEnvironment, prepares /tmp/al2023/lib after executablePath resolution and before Playwright launch, and focused/full verification passes.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-23
|
||||
title: Improve website email extraction
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-04 17:28'
|
||||
updated_date: '2026-06-04 17:34'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -33,3 +33,9 @@ Updated website-crawler extractor to support mailto query stripping/decoding, HT
|
||||
|
||||
Implemented via subagents/TDD: added RED tests for mailto query params, obfuscated email forms, footer/impressum usability, no-guessing false-positive guard, and mailto dedupe. Extractor now decodes common HTML entities, strips/decodes mailto query strings, parses [at]/(at)/punkt/dot/spaced forms with guardrails, expands footer/impressum/contact business context, and leaves TASK-7 selection unchanged. Verification passed: pnpm exec tsc -p tsconfig.json; pnpm test (114/114); pnpm lint (existing generated BetterAuth warnings only); pnpm exec convex codegen --dry-run --typecheck enable.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-24
|
||||
title: Improve crawler handling for Bock Rechtsanwaelte edge cases
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-04 18:04'
|
||||
updated_date: '2026-06-04 18:09'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -48,3 +48,9 @@ Minimal scoped fix applied in lib/website-crawler.ts: mailto business-context no
|
||||
|
||||
Reproduced Bock Impressum against captured public HTML. Extractor found 5 candidates but all were business=false because mailto anchor offsets from original HTML were checked against normalized HTML; TASK-7 therefore returned null. Added RED tests for Bock-like Impressum mailto context and email-label contactPerson behavior. Fixed mailto path to evaluate business context against original input offsets and suppress contactPerson when anchor label is the email itself. Verified captured real HTML now returns usable chemnitz@bock-rechtsanwaelte.de. Full verification passed: pnpm exec tsc -p tsconfig.json; pnpm test (116/116); pnpm lint (existing generated BetterAuth warnings only); pnpm exec convex codegen --dry-run --typecheck enable. Timeout mitigation not changed yet because timeout root cause is not identified.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-25
|
||||
title: Harden website enrichment against Convex action runtime aborts
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-05 06:59'
|
||||
updated_date: '2026-06-05 07:04'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -41,3 +41,9 @@ Website enrichment actions can be killed by Convex with a transient invalid envi
|
||||
|
||||
2026-06-05: Implemented action-level budget guard (default 120s, TASK8_ACTION_BUDGET_MS override) around Playwright import, Chromium executable resolution, AL2023 library preparation, browser launch/context creation, page crawls, internal link checks, and desktop/mobile screenshots so long work rejects inside the action catch path before Convex invalidates the runtime. Verified with targeted website-enrichment action tests, full pnpm test, TypeScript, lint, and Convex dev typecheck/deploy.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-27
|
||||
title: Trigger audit generation after PageSpeed audit
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-05 12:10'
|
||||
updated_date: '2026-06-05 19:49'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -34,3 +34,9 @@ Started verification pass. Implementation notes say TASK-27 is superseded by TAS
|
||||
|
||||
Verified existing PageSpeed-to-audit-generation handoff in pageSpeedAction. Successful and failure paths queue audit generation for the started lead, queue failures are warning-logged, existing queueLeadAuditGeneration dedupe remains in place, and regression source tests pass. Verification: pnpm test 305/305; pnpm lint 0 errors.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-29
|
||||
title: Surface audit generations on dashboard audits
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-05 20:30'
|
||||
updated_date: '2026-06-05 22:45'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -40,3 +40,9 @@ Show audit-generation pipeline data on /dashboard/audits when final audits rows
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
Implemented listDashboardRows with authenticated audit + audit_generation rows. Addressed QA finding by suppressing generation rows via direct auditId lookup and by_leadId lookup, not only the fetched dashboard audit page. Verified with pnpm test and pnpm lint; lint has only existing generated Better Auth warnings.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-30
|
||||
title: Externalisiere die persönliche Audit-Pipeline
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 18:44'
|
||||
updated_date: '2026-06-07 20:27'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -74,3 +74,9 @@ Orchestrator final verification: AC #1 checked after external Capture/Generation
|
||||
|
||||
2026-06-07 follow-up live Convex investigation for run j97d4ytrzccqcx3vc05dre30rh886wz4 on dev deployment different-caterpillar-213: Azure schema blocker is resolved; classification/multimodal/germanCopy succeeded. Current hard failure is qualityReview. Convex auditGenerations quality parsedJson shows LLM QA isValid=false for subjective copy notes (langatmig/redundant), plus German-Copy-Guard issues. Local reproduction of the live German copy showed deterministic guard false positives: emailBody missed observation/suggestion because observed text used "festgestellt" outside the narrow token pattern, and callScript.closeLine incorrectly required Ich-form for a collaborative closing line. Implemented TDD fix: German guard now recognizes festgestellt/feststellen/feststellbar and noun-form "Vorschlag"; call-script close lines no longer require Ich-form. Audit action now hard-blocks only deterministic German-Copy-Guard failures; subjective LLM QA false is persisted/logged as warning while allowing the audit to continue. Added regression tests for the live copy and source contract. Verification passed: pnpm test 366/366, pnpm exec tsc -p tsconfig.json --pretty false, pnpm lint 0 errors with two existing BetterAuth generated warnings, pnpm exec tsc -p convex/tsconfig.json --pretty false. Attempted Convex dev deployment was rejected by approval reviewer because it changes shared Dev behavior and user has not explicitly approved deployment.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-31
|
||||
title: Require auth for usage event reads
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 20:27'
|
||||
updated_date: '2026-06-06 20:31'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -41,3 +41,9 @@ RED: pnpm test -- tests/usage-events-source.test.ts is blocked by pre-existing t
|
||||
|
||||
GREEN: node --test tests/usage-events-source.test.ts passes 6/6. pnpm test -- tests/usage-events-source.test.ts compiles and usageEvents tests pass, but the overall runner fails on existing external-audit-pipeline-source.test.js: audit generation action sanitizes raw errors before run events and run failure summaries, outside Worker F scope.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-32
|
||||
title: Wire v3 skill registry into audit generation
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 20:27'
|
||||
updated_date: '2026-06-06 20:36'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -42,3 +42,9 @@ RED: pnpm test tests/audit-generation-action-source.test.ts tests/ai-schemas.tes
|
||||
|
||||
GREEN: pnpm exec tsc -p tsconfig.test.json exited 0. Focused compiled tests passed: node --test .test-output/tests/audit-generation-action-source.test.js .test-output/tests/ai-schemas.test.js .test-output/tests/audit-skills-schema.test.js .test-output/tests/audit-skill-registry-v3.test.js => 32/32 pass. Full pnpm test passed: 345/345. Self-review: no changes to convex/usageEvents.ts, no commit/staging; usedSkills optional fields are conditionally spread before persistence.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-33
|
||||
title: Fix v3 live wiring quality issues
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 20:41'
|
||||
updated_date: '2026-06-06 20:47'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -42,3 +42,9 @@ RED: tsc passed. node --test .test-output/tests/audit-evidence.test.js .test-out
|
||||
|
||||
GREEN: pnpm exec tsc -p tsconfig.test.json exited 0. Focused tests passed: node --test .test-output/tests/audit-evidence.test.js .test-output/tests/audit-generation-action-source.test.js => 23/23 pass. Full pnpm test passed: 347/347. Self-review: only touched audit-evidence skill selection, auditGenerationAction registry warning fallback, and focused tests; no staging/commit; no convex/usageEvents.ts changes.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-34
|
||||
title: Harden v3 selection and Convex payloads
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 20:54'
|
||||
updated_date: '2026-06-06 21:03'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -40,3 +40,9 @@ Fix v3 quality review issues by removing explicit undefined values from Convex m
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
RED: tsc passed, focused node --test .test-output/tests/audit-evidence.test.js .test-output/tests/audit-generation-action-source.test.js failed as expected on registry-order v3 cap and explicit undefined stage payload contract. GREEN: tsc passed; focused tests passed 26/26; full pnpm test passed 350/350. Self-review: no commits/staging, no changes to convex/usageEvents.ts, no ScreenshotOne missing-key behavior changes.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-35
|
||||
title: Remove remaining undefined audit generation payloads
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 21:06'
|
||||
updated_date: '2026-06-06 21:13'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -42,3 +42,9 @@ RED: tsc passed. Focused node --test .test-output/tests/audit-generation-action-
|
||||
|
||||
RED: tsc passed. Focused node --test .test-output/tests/audit-generation-action-source.test.js failed as expected on appendRunEvent details, success finishAuditGenerationRun errorSummary ternary, and qualityReview persistAuditStage errorSummary ternary. GREEN: focused source test passed 21/21; full pnpm test passed 353/353. Self-review: changed only convex/auditGenerationAction.ts and tests/audit-generation-action-source.test.ts in this turn; no commits/staging; no UsageEvents or ScreenshotOne behavior changes.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-36
|
||||
title: Remove optional helper undefined args
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 21:15'
|
||||
updated_date: '2026-06-06 21:23'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -42,3 +42,9 @@ RED: tsc passed. Focused node --test .test-output/tests/audit-generation-action-
|
||||
|
||||
GREEN: pnpm exec tsc -p tsconfig.test.json passed. Focused node --test .test-output/tests/audit-generation-action-source.test.js passed 24/24. Full pnpm test passed 356/356. Implemented conditional auditId spreads at persist/helper callsites and stage usage builder for callsite usage objects.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-37
|
||||
title: Prioritize v3 local audit skills
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 21:30'
|
||||
updated_date: '2026-06-06 21:38'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -42,3 +42,9 @@ RED: pnpm exec tsc -p tsconfig.test.json passed. Focused node --test .test-outpu
|
||||
|
||||
GREEN: pnpm exec tsc -p tsconfig.test.json passed. Focused node --test .test-output/tests/audit-evidence.test.js passed 8/8. Full pnpm test passed 356/356. Added deterministic v3 local-audit priority before cap while preserving applicability/input gating and legacy category selection.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-38
|
||||
title: Add ScreenshotOne missing-key run warning
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 21:41'
|
||||
updated_date: '2026-06-06 21:46'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -42,3 +42,9 @@ RED verified: pnpm exec tsc -p tsconfig.test.json passed, then node --test .test
|
||||
|
||||
GREEN verified: focused node --test .test-output/tests/external-audit-pipeline-source.test.js passed 11/11 after implementation. Full pnpm test passed 357/357 with exit 0.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-39
|
||||
title: Secure Convex operator APIs
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 21:52'
|
||||
updated_date: '2026-06-06 22:00'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -32,3 +32,9 @@ Worker I audit slice: Added source-contract coverage for audit admin auth guards
|
||||
|
||||
Worker J RED/GREEN: Added leads/runs source contracts; initial pnpm test failed on missing lead/run requireOperator guards and missing internal lead/run action refs. Implemented operator auth for public leads/runs APIs, added internal lead get/review update and run append event mutations, and switched auditGenerationAction/pageSpeedAction/websiteEnrichmentAction to internal refs. GREEN: pnpm test passed (363/363). Did not touch convex/audits.ts and did not stage/commit.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-40
|
||||
title: Behebe abschliessende Lint-Blocker
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 22:10'
|
||||
updated_date: '2026-06-06 22:15'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -38,3 +38,9 @@ Fix the final lint blockers after the v2 pipeline implementation without changin
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
TASK-40 worker update: fixed final lint blockers by ignoring v2_elemente reference snippets in ESLint and removing an unused helper from tests/external-audit-pipeline-source.test.ts. Verification: pnpm lint exits 0 with only generated convex/betterAuth/_generated unused-disable warnings; pnpm test passes 363/363; git diff --check exits 0. Task intentionally left In Progress pending user confirmation.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-41
|
||||
title: Repariere Convex-Typecheck fuer Usage Events
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 22:13'
|
||||
updated_date: '2026-06-06 22:16'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -45,3 +45,9 @@ Verification/results:
|
||||
- `pnpm exec tsc --noEmit` exits 2 only because of unrelated pre-existing v2_elemente/* errors (missing local generated modules/imports and implicit any issues); no TASK-41/convex/auditGenerationAction.ts errors remain. Per user instruction, v2_elemente fixes were not touched.
|
||||
- `pnpm test` exits 0: 363 tests passed, 0 failed.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-42
|
||||
title: Scope v2 Referenzdateien aus dem Typecheck
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-06 22:16'
|
||||
updated_date: '2026-06-06 22:18'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -41,3 +41,9 @@ Reproduced pnpm exec tsc --noEmit failure: production tsconfig includes v2_eleme
|
||||
|
||||
Applied minimal scope fix: tsconfig.json now excludes v2_elemente/** from the production TypeScript program, matching the existing ESLint ignore for reference snippets. Verification passed: pnpm exec tsc --noEmit (exit 0), pnpm lint (exit 0 with two existing generated-file warnings), pnpm test (exit 0, 363 tests passed), git diff --check (exit 0). v2_elemente contents were not edited.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-43
|
||||
title: Stabilisiere Website-Enrichment ohne Playwright-Abbruch
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-07 19:40'
|
||||
updated_date: '2026-06-07 20:57'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -48,3 +48,9 @@ Follow-up fix: The live Convex run j9737mz0tkgdbg6mzjxjd1w7018878b1 failed becau
|
||||
|
||||
Final verification after robustness cleanup: pnpm test -- tests/website-enrichment-action.test.ts passed (392/392 in focused harness); pnpm exec tsc -p convex/tsconfig.json --pretty false passed; pnpm exec tsc -p tsconfig.json --pretty false passed; git diff --check passed; pnpm test passed (368/368); pnpm lint passed with the same two generated BetterAuth unused-disable warnings and 0 errors.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-44
|
||||
title: Port audit pipeline fully into the MVP
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-07 21:16'
|
||||
updated_date: '2026-06-07 21:34'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -44,3 +44,9 @@ Implemented GREEN slice after RED tests: added bundled MVP v3 audit skill regist
|
||||
|
||||
Masked Convex env check confirms SCREENSHOTONE_API_KEY is present in the dev deployment. AC #4 remains open until a fresh live audit run confirms no ScreenshotOne missing-key warning in Run Events.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-45
|
||||
title: Show audit evidence on detail pages
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-07 21:50'
|
||||
updated_date: '2026-06-07 22:01'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -41,3 +41,9 @@ Fix the audit detail view so stored checked pages and compact website-enrichment
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
Implemented getDetail sourceSummaries.checkedPages with latest successful website_enrichment evidence by lead, bounded crawl/technical/screenshot joins, storage URL resolution, and checkedPages fallback rows. AuditDetail now renders a compact Geprüfte Seiten card between overview and skills. Verification passed: focused tests, pnpm test, app tsc, lint, git diff --check, convex codegen dry-run/typecheck, and convex dev --once. Browser plugin reached login because its session is unauthenticated; Arc/local authenticated session should show the deployed query after reload.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-46
|
||||
title: Add Convex specialist fan-out audit pipeline
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-08 09:04'
|
||||
updated_date: '2026-06-08 09:19'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -46,3 +46,9 @@ RED: pnpm exec tsc -p tsconfig.test.json fails because AuditEvidenceInput has no
|
||||
|
||||
GREEN: Focused audit fan-out/source/UI tests passed 67/67. Full pnpm test passed 384/384. Implemented specialist fan-out stages, evidence ledger, auditFindings persistence, blocking model+guard QA, real skill summaries, and findings-first audit detail UI.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-47
|
||||
title: Fix evidence verifier audit generation failure
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-08 09:35'
|
||||
updated_date: '2026-06-08 10:07'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -46,3 +46,9 @@ Second live failure root cause: after the strict schema fix, specialist stages s
|
||||
Fix: changed evidenceVerifier output to compact verifiedFindingIds plus small rejected decisions, then deterministically map accepted IDs back to original specialist findings in the action. This preserves strict evidence gates while removing verifier echoing/mutation of findings.
|
||||
Verification: added RED schema regression for compact verifier IDs and many findings; focused schema/action tests pass; adjacent audit persistence/schema/UI/evidence tests pass; pnpm test passes 387/387; git diff --check passes; ESLint on touched files passes; npx convex dev --once synced the fix to dev deployment.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-48
|
||||
title: Integrate impeccable critique into audit pipeline
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-08 12:02'
|
||||
updated_date: '2026-06-08 12:10'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -41,3 +41,9 @@ Extend the evidence-first audit pipeline with design critique/impeccable-style v
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
Implemented the impeccable/critique integration as an evidence-bound audit extension. Inspected the local impeccable and critique skills; no project-specific .impeccable.md was present, so the product guidance was translated into bounded audit behavior instead of broad design taste claims. Added the V3 skill registry entry `impeccable-critique`, prioritized it in selected local audit skills, and wired a new Convex `critiqueSpecialist` stage between visual trust and performance/accessibility. The stage is instructed to produce only evidence-linked findings using skillId `impeccable-critique`; the existing compact verifier and German synthesis path remain the gate, so raw specialist output is not customer-facing. UI tests continue to cover evidence chips and real registry purpose text. Verification: focused specialist/evidence tests 45/45 passed; skill/UI tests 15/15 passed; full `pnpm test` 388/388 passed; `git diff --check` passed; targeted ESLint passed; `npx convex dev --once` synced successfully.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-49
|
||||
title: Improve audit outreach email tone
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-08 19:30'
|
||||
updated_date: '2026-06-08 19:48'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -41,3 +41,9 @@ Add evidence-first, collegial-direct tonal guidelines for generated outreach ema
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
Implemented the evidence-first outreach email tone pass. Added `lib/ai/customer-tone-guidelines.ts` with the selected collegial-direct sender posture, short first-contact email constraints, banned phrases, and prompt helper. Updated German copy generation to remove the old Ich-Ich instruction, include the shared tone section, pass normalized evidence context, and keep the existing generation call structure. Added hard deterministic email tone checks for subject length/pitch patterns, email length, sentence/paragraph count, formulaic Ich-habe/Ich-schlage-vor patterns, brochure language, mini-audit structure, informal address, and missing low-friction asks. Public audit hard guard behavior remains limited to the existing rules. Quality review now explicitly asks whether the email sounds like a real first email from Matthias, not AI sales copy, and whether concrete claims are backed by verified findings. Verification: focused tests 60/60 passed; full `pnpm test` 395/395 passed; targeted ESLint passed; `git diff --check` passed; `npx convex dev --once` synced successfully after fixing the Convex-only typecheck issue by passing `evidenceInput` instead of raw evidence.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-50
|
||||
title: Refactor dashboard views into compact cards
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-08 19:56'
|
||||
updated_date: '2026-06-08 20:21'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
@@ -50,3 +50,9 @@ Task remains In Progress pending user manual confirmation before Done.
|
||||
|
||||
Independent code-review agent found no correctness, hook-order, or broken-interaction blockers. Residual risk: current UI tests are source-regex based, so future work should consider render-level interaction tests for modal opening, filters, and selected detail behavior.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
id: TASK-51
|
||||
title: >-
|
||||
Replace Google Places discovery with Local Business Data and manual audit
|
||||
starts
|
||||
status: In Progress
|
||||
assignee: []
|
||||
created_date: '2026-06-10 19:49'
|
||||
updated_date: '2026-06-10 20:26'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
ordinal: 53000
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
Replace the campaign lead discovery provider with RapidAPI Local Business Data, stop automatic enrichment/audit chaining after discovery, and add an explicit user-triggered audit start from lead review.
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- AC:BEGIN -->
|
||||
- [x] #1 Campaign runs use Local Business Data via LOCAL_BUSINESS_DATA_API_KEY and no longer require Google Geocoding or Places keys.
|
||||
- [x] #2 Campaign lead discovery persists direct contact emails from the provider and does not queue website enrichment.
|
||||
- [x] #3 Website enrichment no longer auto-queues PageSpeed or audit generation.
|
||||
- [x] #4 Operators can start an audit manually from a lead review row via an authenticated mutation.
|
||||
- [x] #5 Operational readiness, env docs, usage providers, source assertions, and regression tests cover the new flow.
|
||||
<!-- AC:END -->
|
||||
|
||||
## Implementation Plan
|
||||
|
||||
<!-- SECTION:PLAN:BEGIN -->
|
||||
1. Add tests for Local Business Data adapter, schema/provider changes, and removed auto-trigger source paths
|
||||
2. Implement provider adapter and swap Convex lead discovery to single Local Business Data search
|
||||
3. Entangle manual audit start from automatic discovery/enrichment chain
|
||||
4. Add Lead Review UI action and update campaign/ops copy and env docs
|
||||
5. Run focused tests, full pnpm test, and update acceptance criteria notes
|
||||
<!-- SECTION:PLAN:END -->
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
Implemented Local Business Data lead discovery adapter and swapped campaign runs to LOCAL_BUSINESS_DATA_API_KEY/RapidAPI search. Removed automatic website enrichment queueing from discovery and automatic PageSpeed queueing from website enrichment. Added authenticated manual pageSpeed.requestLeadAudit mutation plus Lead Review Audit starten UI with disabled reasons. Updated schema/domain/source provider fields, Source Business ID blacklist matching, ops readiness/env docs/copy, and regression tests. Verification passed: pnpm test (407/407).
|
||||
|
||||
Bug follow-up: First Local Business Data campaign test showed no emails in Lead Review. Root cause investigation found provider emails under data[].emails_and_contacts.emails while the adapter only parsed top-level email fields. Planned fix: parse nested emails and update existing duplicate leads with missing email on campaign re-run, without automatic enrichment/audit queueing.
|
||||
|
||||
Bug fix implemented: Local Business Data adapter now parses data[].emails_and_contacts.emails, normalizes and dedupes email candidates, and campaign re-runs backfill missing email fields on duplicate leads when safe. Verified focused lead-discovery tests and full pnpm test (409/409). TASK-51 remains In Progress pending user confirmation.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
id: TASK-52
|
||||
title: Make lead card contact fields clickable
|
||||
status: In Progress
|
||||
assignee: []
|
||||
created_date: '2026-06-10 20:49'
|
||||
updated_date: '2026-06-10 20:55'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: medium
|
||||
ordinal: 54000
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
Implement clickable email, phone, and website links in the dashboard leads card view so operators can contact or inspect leads directly from each card.
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- AC:BEGIN -->
|
||||
- [x] #1 Lead email values render as mailto links when present while the no-email fallback stays plain text
|
||||
- [x] #2 Lead phone values render as tel links when present
|
||||
- [x] #3 Lead website/domain values render as external website links when present
|
||||
- [x] #4 Existing leads review source tests cover the clickable link behavior
|
||||
<!-- AC:END -->
|
||||
|
||||
## Implementation Plan
|
||||
|
||||
<!-- SECTION:PLAN:BEGIN -->
|
||||
1. Inspect current leads card rendering and tests
|
||||
2. Add safe href helpers for email, phone, and website/domain values
|
||||
3. Render available contact fields as accessible links with existing overflow styling
|
||||
4. Extend source tests for link behavior
|
||||
5. Run focused verification
|
||||
<!-- SECTION:PLAN:END -->
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
Implemented helper-backed contact links in components/leads/leads-review-table.tsx and extended tests/leads-review-table.test.ts source assertions.
|
||||
|
||||
Verified with pnpm test: TypeScript test compile and 409 node tests passed.
|
||||
|
||||
Verified with pnpm lint: exit 0 with 3 existing warnings outside this change. Browser navigation to /dashboard/leads redirected to /login without an authenticated in-app browser session, so clickable DOM could not be manually exercised there.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
53
backlog/tasks/task-53 - Refine-SaaS-MVP-visual-identity.md
Normal file
53
backlog/tasks/task-53 - Refine-SaaS-MVP-visual-identity.md
Normal file
@@ -0,0 +1,53 @@
|
||||
---
|
||||
id: TASK-53
|
||||
title: Refine SaaS MVP visual identity
|
||||
status: In Progress
|
||||
assignee: []
|
||||
created_date: '2026-06-11 11:29'
|
||||
updated_date: '2026-06-12 18:54'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
ordinal: 55000
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
Review the current SaaS MVP interface with impeccable design principles and an agency-style subagent critique, then improve the generic shadcn UI feel while preserving existing product workflows.
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- AC:BEGIN -->
|
||||
- [x] #1 Dashboard shell and core workspace screens have a more distinctive visual language than default shadcn styling
|
||||
- [x] #2 Changes preserve existing responsive behavior and workflow semantics
|
||||
- [x] #3 Relevant automated checks pass or any remaining blockers are documented
|
||||
<!-- AC:END -->
|
||||
|
||||
## Implementation Plan
|
||||
|
||||
<!-- SECTION:PLAN:BEGIN -->
|
||||
1. Review product/design context and current dashboard surfaces
|
||||
2. Run an agency-style critique across visual identity, workflow clarity, and implementation risk
|
||||
3. Apply a focused UI polish pass to reduce generic shadcn feel
|
||||
4. Verify with lint/tests and a local browser pass
|
||||
5. Leave TASK-53 in progress until user confirms manual acceptance
|
||||
<!-- SECTION:PLAN:END -->
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
Initial low-risk visual pass applied to global theme tokens, shared Card/Button/Badge primitives, dashboard shell, sidebar, dashboard overview, and lead funnel styling. Kept Convex hooks, mutations, routes, and workflow logic untouched.
|
||||
|
||||
Verification: pnpm run lint completed with 0 errors and 3 pre-existing warnings outside this UI pass. pnpm test passed 409 tests. Browser opened http://localhost:3001/dashboard; route compiled, but unauthenticated browser session hit existing Convex operator auth error on leads:listFunnel, so authenticated visual inspection remains manual.
|
||||
|
||||
User feedback: first visual pass is not visibly transformative enough. Next step: run impeccable teach by extracting explicit target audience, use cases, brand tone, design direction, and visual principles from PRD into .impeccable.md before making a bolder UI pass.
|
||||
|
||||
Created .impeccable.md via impeccable teach context setup using PRD content: target audience, workflows, brand tone, visual direction, palette/typography guidance, UX priorities, and current design gaps. This should guide the next bolder craft pass.
|
||||
|
||||
Clarified .impeccable.md for the actual SaaS repo: primary audience is external web designers, small agencies, and local marketing providers. Matthias is now framed as seed user/domain expert, not the primary product audience. Updated brand, UX priorities, visual direction, and constraints to SaaS/customer-account framing.
|
||||
|
||||
User requested a full design rebuild using skills and agents. Scope expanded from context setup/theme polish to a bolder SaaS-facing redesign of dashboard shell and core workspace surfaces guided by .impeccable.md.
|
||||
|
||||
Full redesign pass applied after agent review: rebuilt SaaS visual identity around Agency Evidence Desk tokens, dark sidebar, dashboard approval queue, evidence pipeline, safety ledger, campaign control cards, audit evidence dossier cards, outreach approval bench, lead intake, and customer-facing workspace login. Preserved Convex query/mutation semantics and protected workflow boundaries. Verification: pnpm lint passed with 0 errors and the same 3 unrelated warnings in generated/Convex files; pnpm test passed 409 tests; Browser verified http://localhost:3001/login renders Agency Evidence Desk / Workspace Login, old MVP/Admin copy removed, and no console errors. Dashboard remains auth-protected and redirects unauthenticated sessions to login as expected.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-8
|
||||
title: Implement Playwright website crawling and screenshot capture
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-06-03 19:13'
|
||||
updated_date: '2026-06-04 18:09'
|
||||
updated_date: '2026-06-10 19:27'
|
||||
labels:
|
||||
- mvp
|
||||
- audit
|
||||
@@ -73,3 +73,9 @@ TASK-23 extractor improvement applied: website enrichment now extracts published
|
||||
|
||||
TASK-24 Bock Rechtsanwaelte follow-up: mailto candidates on real Impressum HTML were found but incorrectly marked non-business due index mismatch in context detection. Fixed mailto business-context detection and email-label contactPerson suppression; captured Bock HTML now yields usable chemnitz@bock-rechtsanwaelte.de.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Closed per explicit user request while switching project tracking to pitchfast.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
Reference in New Issue
Block a user