Overview
Dossier is a B2B research and personalization platform designed to help outbound sales teams create relevant cold email campaigns at scale. It automates prospect research, evaluates data quality, generates personalized email variants, and validates results before delivery.
Requirements
Personalizing cold emails manually takes significant time, especially when working with hundreds of prospects. Existing automation often produces generic messages or relies on incomplete information. The challenge was building a system that could automate research and personalization while maintaining data quality, reliability, and consistency.
Implementation
I developed a multi-stage backend pipeline that handles prospect ingestion, automated research, quality scoring, email generation, and validation. Each prospect moves through a series of tracked states, allowing the system to identify failures, retry unsuccessful operations, and prevent incomplete results from reaching the final delivery.
My Contribution
I was responsible for the backend architecture, database design, workflow orchestration, external API integrations, and research logic. I implemented research scoring, failure handling, retry mechanisms, and quality control checks. I also worked on monitoring and improving the pipeline based on issues discovered during real deliveries.
Technical Decisions
I used PostgreSQL to persist workflow states and track each prospect throughout the pipeline. Research scoring helped distinguish useful information from incomplete results, while validation gates prevented low-quality outputs from progressing. Retry mechanisms and dead-letter tracking made failures easier to investigate and recover from without losing completed work.
Challenges
One of the biggest challenges was handling unpredictable responses from external research providers. Some requests failed, while others returned incomplete or inconsistent information. Another challenge was managing partial failures across multiple workflow stages, especially when processing larger batches of prospects.
What I Learned
Moving from a 100-prospect pilot to a 500-prospect delivery showed me how quickly small reliability issues become more noticeable at scale. I learned the importance of tracking individual workflow states, validating data before using it, and designing recovery mechanisms for partial failures. I also learned that successful API requests don't necessarily mean successful results, and that monitoring data quality is just as important as monitoring execution.
Result
Dossier was tested through an external pilot involving 100 researched prospects, followed by a larger 500-prospect delivery. The second delivery exposed challenges related to data consistency, retry behavior, and operational visibility. These experiences helped identify areas for improving reliability and handling larger workloads.
What I'd Improve
I'd improve operational visibility by introducing a centralized dashboard for tracking prospect states, failure reasons, and processing times. I'd also explore more adaptive retry strategies, stronger research quality metrics, and better cost tracking for external API usage. These improvements would make the system easier to maintain and more predictable during larger deliveries.