Builds · Completed
Official Lead System
An internal Rails operations platform that turns marketplace opportunities into a human-reviewed pipeline with AI qualification, source-backed research, outreach drafts, tasks, and sales handoff.
One working loop instead of twelve tabs
Finding leads was not the hardest part. The expensive part was everything between finding a listing and taking useful action: checking whether it fit the studio, researching the company, finding a legitimate contact path, drafting a relevant message, remembering the next touch, and keeping the rest of the pipeline straight.
I built the Official Lead System as an internal operations tool for that middle. It brings discovery, qualification, research, outreach preparation, follow-ups, and handoff into one Rails application. The current version is an MVP—still rough in places, but already useful because it replaces a scattered browser workflow with a repeatable operating loop.
The goal is not to remove judgment. It is to put the information and next action in one place so judgment gets faster.
The flow
- Discover: pull website and software opportunities from Upwork and Craigslist, normalize them, and avoid duplicates.
- Qualify: ask AI to evaluate the title and description against the studio's services, then show its reasoning to a human.
- Research: identify the likely company, collect source-backed business context, and inspect first-party pages for contact paths.
- Activate: move a useful opportunity into a CRM-style pipeline with clear outreach status.
- Work the follow-up: prepare human-reviewed email, SMS, and phone touches, schedule the next task, and preserve the history.

AI triage, with a human holding the decision
Each listing can be scanned against the services the studio actually offers. The useful output is not only a viable or irrelevant label; the system also keeps the reason, the matched service, the confidence, and whether the operator agreed.
That distinction matters. Marketplace posts are noisy. Some are real project opportunities, some are employment listings, and some simply lack enough context. A human can accept the result, override it, or flag the classification as incorrect. Those corrections become prompt-tuning notes for a separate update script. The product does not pretend that one click teaches the model automatically.
The Viable queue becomes the review boundary: inspect the original listing, open the full workspace, export a PDF brief, move the lead into active work, or remove it from the queue.
Research with an honest fallback
The lead workspace combines the source listing, AI and human qualification state, job details, contact information, research evidence, outreach tools, follow-ups, and communication history.

The automated research path uses OpenAI's web-search tooling to identify the likely business, requests structured fields, keeps the supporting URLs, then crawls relevant first-party pages to reconcile company and contact details. Results can include confidence, sources, people, phone numbers, email addresses, social accounts, and notes.
That one-click path is still being improved. In the recorded walkthrough, the more reliable MVP workflow is deliberately visible: copy a prepared research prompt, review the result in ChatGPT, and paste the structured JSON back into the lead. It is a manual seam, and it is better to show it than to describe the system as more autonomous than it is.
Turning a qualified lead into a work queue
Once a lead is worth contacting, it moves into an active pipeline with New, Researching, Contacted, Qualified, Negotiating, Won, and Lost stages. The active view answers the operational questions that usually get lost in notes: who still needs an email, who can be texted, who has not been called, and who has already received each kind of touch.

The same record can produce a PDF sales brief for a handoff. That brief gathers the client snapshot, opportunity, contact information, needs, pitch direction, conversation notes, and source links so another person can pick up the work without reconstructing the research.
Outreach drafts, not an unsupervised sender
The system can prepare personalized email, SMS, and phone drafts from the listing, researched company context, service fit, agency voice, budget, and proof points. A five-touch sequence provides a default rhythm: Day 0 email, Day 1 SMS, Day 3 follow-up email, Day 5 phone, and Day 7 closing email.

The sequence does not silently send itself. Each touch can be edited, regenerated, skipped, sent, or marked complete by a person. A positive or scheduled response stops the remaining sequence, as do Won and Lost outcomes. That keeps automation focused on preparation and reminders while the operator controls the relationship.

Under the hood
- Application: Ruby 3.2.6, Rails 8, PostgreSQL, Devise, server-rendered ERB, Turbo, and Stimulus.
- Background work: Solid Queue for classification, research, draft generation, scraper schedules, and maintenance.
- Discovery: a Python and Selenium Upwork worker plus a Ruby and Nokogiri Craigslist worker.
- AI: OpenAI for qualification, structured research, outreach drafting, sales playbooks, and market analysis.
- Handoff and delivery: Prawn PDF briefs and Action Mailer through a configured mail provider.
- Operations: scraper controls, queue state, schedules, health information, and log visibility inside the internal tool.
The application is also agency-aware. Sender identity, positioning, brand voice, contact information, and portfolio links can change with the active agency. That supports work under Always Coded Fresh and individual work under Life of AI without hard-coding one voice throughout the product.
What the walkthrough exposed
A useful walkthrough should reveal the unfinished parts too. The research button needs to become as dependable as the reviewed manual path. Classification feedback currently feeds a separate prompt-update process. The source mix can expand, but each addition needs thoughtful handling of marketplace rules, data quality, and duplicate records.
Before any broader rollout, the next engineering pass also needs to prioritize credential hygiene, authenticated operational endpoints, agency-level data isolation, privacy-safe logging, and a clean separation between demo and live data. This is an effective private operations MVP, not a claim of a finished multi-tenant SaaS product.
The result
The biggest win is continuity. A listing can move from discovery to qualification, research, contact preparation, follow-up, and sales handoff without losing its reasoning or history along the way. I have not attached a made-up conversion metric to it; the practical result is simpler: it removes repetitive tab switching and saves meaningful time in daily lead work.

The next version will keep the human checkpoints while reducing the manual research seam, improving research verification, hardening access and data boundaries, and adding carefully selected sources. The MVP already proves the shape of the system: one place to find an opportunity, understand it, decide what to do, and remember what happens next.
Privacy note
The original desktop recording contained live account, prospect, contact, and infrastructure details. For this public case study, I retained the original narration but replaced the entire visual track with screens captured from a separate synthetic-data database. Every visible name, listing, URL, email, phone number, agency, and counter in the published media is fictional.