Proof it's real: Emergent's own case study, Revo Leads, was built this way and made about $6,000 in three weeks (source). The point isn't "you'll make $6k", it's that a lead tool you own is a real, buildable thing now.
Three jobs, one app:
One honest line up front: the app stores and queues the follow-ups, and a real sending tool delivers them (more in the honest bit below). Everything up to "hit send" is yours to build and own.
๐ Copy this whole block and paste it into Emergent as your very first message. You do not need to read it, it's the full build manual that makes Emergent build right on the first pass. Swap anything in [brackets] for your own words, or leave it and adjust later.
Build a full-stack web app called "[Lead Machine]" that captures leads, scores how hot they are, and runs an automated follow-up sequence. One logged-in user (me) runs the whole thing. There is also ONE public page: a lead-capture form that strangers fill in with no login. Build this exactly as specified below, in this order, and do not add features I did not ask for.
SECTION 1, WHAT THIS APP IS
A private lead workspace for a solo operator, plus one public lead-capture form. When a stranger submits the form, a Lead is created, scored automatically, and enrolled in a follow-up sequence. I work my leads from a pipeline board and an inbox inside the app. The app does NOT send email or SMS itself in v1 (see Section 7); it stores and queues follow-ups and shows me what is due.
SECTION 2, DATA MODEL
Build these entities with every field, its type, and required/optional. Set up the relationships exactly as noted.
Lead
- Full name (text, required)
- Email (email, required)
- Phone (phone, optional)
- Company (text, optional)
- Message / what they need (long text, optional)
- Source (link to Source, required, defaults to the source of the form they used)
- Stage (dropdown, required: New, Contacted, Qualified, Proposal, Won, Lost; defaults to New)
- Score (number, 0 to 100, set automatically, read-only to me)
- Score band (dropdown, set automatically from Score: Hot 70-100, Warm 40-69, Cold 0-39)
- Budget (dropdown, optional: Under 1k, 1k-5k, 5k-20k, 20k+)
- Timeline (dropdown, optional: ASAP, This month, This quarter, Just researching)
- Created at (datetime, auto)
- Owner note (long text, optional)
Source
- Name (text, required, e.g. Instagram bio, Landing page, Referral, Cold form)
- UTM key (text, optional, a short slug used in the form URL like ?src=ig-bio)
- Default score weight (number, optional, added to a lead's score, e.g. Referral = +15)
Activity
- Lead (link to Lead, required)
- Type (dropdown, required: Note, Call, Email logged, SMS logged, Stage change, Score change)
- Body (long text, optional)
- Created at (datetime, auto)
FollowUpStep (the template for the sequence, edited by me)
- Step number (number, required, 1..n in order)
- Channel (dropdown, required: Email, SMS)
- Delay days (number, required, days after enrollment, e.g. 0, 2, 5, 9)
- Subject (text, optional, for email steps)
- Body (long text, required, supports {{first_name}} and {{company}} merge tags)
- Active (boolean, defaults true)
FollowUp (one queued message per lead per step, created when a lead enrolls)
- Lead (link to Lead, required)
- Step (link to FollowUpStep, required)
- Channel (dropdown: Email, SMS, copied from the step)
- Due at (datetime, required, = lead created at + step delay days)
- Status (dropdown, required: Queued, Sent, Skipped, Failed; defaults Queued)
- Rendered body (long text, the Body with merge tags filled in from the lead)
- Sent at (datetime, optional)
SECTION 3, LEAD SCORING RULE
When a Lead is created or edited, recompute Score from 0 to 100 using these rules, then set Score band from the Score. Show the rules on a Settings page so I can edit the point values later, but ship with these defaults:
- Budget: Under 1k = +5, 1k-5k = +15, 5k-20k = +25, 20k+ = +35
- Timeline: ASAP = +30, This month = +20, This quarter = +10, Just researching = +0
- Has phone number = +10
- Message is not empty = +10
- Source default score weight is added (from the Source record)
- Cap the total at 100. Recompute automatically whenever budget, timeline, phone, message, or source changes, and log a "Score change" Activity with the old and new score.
SECTION 4, FOLLOW-UP SEQUENCE
When a Lead is created (from the public form or by me), automatically enroll it: create one FollowUp row for every Active FollowUpStep, with Due at = lead created at + that step's delay days, and Rendered body = the step Body with {{first_name}} and {{company}} filled in. Ship with this default sequence (I can edit it on the Settings page):
- Step 1, Email, delay 0 days: subject "Thanks for reaching out", body a warm intro that references {{first_name}} and asks one qualifying question.
- Step 2, Email, delay 2 days: a short nudge with a link placeholder and one clear next step.
- Step 3, SMS, delay 5 days: a one-line check-in.
- Step 4, Email, delay 9 days: a final "should I close your file?" breakup message.
If a lead reaches stage Won or Lost, mark all their still-Queued FollowUps as Skipped and stop the sequence. IMPORTANT: in v1 the app does NOT actually send. It marks FollowUps as Due and lets me mark them Sent by hand (a "Mark sent" and "Skip" button per row). Leave a clearly labelled placeholder function, sendMessage(followUp), that I will later connect to a real email/SMS provider. Do not fake sending.
SECTION 5, SCREENS
1. Dashboard (me): leads this week, count by score band (Hot/Warm/Cold), count by stage, and follow-ups due today. Primary action: open the "due today" list.
2. Pipeline board (me): a kanban board, columns = the Stage options, cards = leads showing name, score band as a coloured pill, and source. Drag a card between columns to change its stage (log a "Stage change" Activity). Primary action: drag to move stage.
3. Lead inbox / list (me): a filterable table of all leads (filter by score band, stage, source; sort by score or created at). Primary action: open a lead.
4. Lead detail (me): all fields, the score with a breakdown of how it was calculated, the Activity timeline, and this lead's FollowUp queue with Mark sent / Skip buttons. Primary action: log an Activity or advance the stage.
5. Follow-ups due (me): every FollowUp with Status Queued and Due at <= now, across all leads, oldest first, with Mark sent / Skip per row and the rendered body visible. Primary action: mark sent.
6. Sequence settings (me): edit FollowUpSteps (add, reorder, edit delay/channel/subject/body, toggle Active) and edit the scoring point values from Section 3. Primary action: save.
7. Public lead form (anyone, no login): the capture form. Fields: full name (required), email (required), phone (optional), company (optional), what they need (long text), budget (dropdown), timeline (dropdown). Reads a ?src= parameter from the URL and maps it to a Source. On submit: create the Lead, score it, enroll the sequence, then show a friendly confirmation screen. Primary action: submit.
SECTION 6, BUSINESS RULES AND EDGE CASES
- Duplicate email: if a submitted email already exists as a Lead, do NOT create a twin. Update the existing lead's message and re-run scoring, log an Activity "Re-submitted via [source]", and do not double-enroll (only create FollowUps for steps they are not already enrolled in).
- Deleting a lead deletes its Activities and FollowUps too (cascade), with a confirm step.
- The public form must validate email format and required fields, and must never expose any private screen or data.
- Merge tags with no value fall back gracefully ({{first_name}} with no name shows "there", {{company}} shows nothing, no literal "{{...}}" ever renders to a lead).
- Score is always clamped to 0-100.
SECTION 7, EXPLICITLY OUT OF SCOPE (keep this heading in caps)
The app must NOT actually send email or SMS in v1, must NOT integrate any email or SMS provider yet, no payment collection, no multi-user accounts, no calendar or booking, no analytics beyond the dashboard counts described, no AI copywriting. Do not add any of these even as "nice to haves". The only sending-related thing you build is the placeholder sendMessage(followUp) function and the manual Mark sent / Skip buttons.
SECTION 8, ACCEPTANCE TESTS (each phrased "I can...")
- I can submit the public form from an incognito window and see a new scored lead appear in my inbox within seconds.
- I can submit the same email twice and get ONE lead, not two, with a re-submitted Activity logged.
- I can see a lead's score explained line by line (which rule added which points).
- I can drag a lead from New to Won on the board and its queued follow-ups become Skipped.
- I can open "Follow-ups due" and see exactly the messages that are due now, with the merge tags filled in.
- I can edit the sequence on the settings page (change a delay, add a step) and a newly created lead uses the new sequence.
- I can filter the inbox to only Hot leads.
- I can add a source with a +15 weight and see a lead from that source score 15 points higher.
End by seeding the app with realistic demo data so every screen renders on first load: 12 leads spread across all stages and all three score bands, 3 sources with different weights, the 4-step default sequence, and several follow-ups already due today so the dashboard and the due list are not empty.
A working preview appears in a few minutes, a full first build in about 15 to 30 (mostly waiting), and deploying gives you a live URL with SSL. Five habits that save credits and pain:
Your app can build a perfect sequence, render every message, and know when each is due. It should not be the thing that actually sends the emails and texts, on purpose. Deliverability is reputation, not code: a brand-new app sending cold from fresh infrastructure is one of the fastest ways to land in spam, and SMS is stricter (US carriers require A2P 10DLC registration). So the split is simple: your app queues each follow-up with the exact copy and due time, and a real sender delivers it. Until you wire one in, your "Follow-ups due" screen is a tidy daily to-do list you send by hand, which is genuinely fine for your first weeks.
When you're ready, rent a sender and connect it to the sendMessage(followUp) placeholder (the exact wiring prompt is in "going deeper" below):
First builds come out roughly 80% right. Order matters: structure first (scoring), then behaviour (the sequence), then paint (style). A style pass before structural changes just gets clobbered.
Sharpen the scoring so hot means hot:
Adjust the lead scoring only. Change the point values to: Budget 20k+ = +40 (I only want big-budget leads to hit Hot), Timeline ASAP = +35, and add a new rule: if Source is [Referral], add +20. Recompute all existing leads' scores and bands with the new rules and log a Score change Activity for each. Show me the updated rules on the settings page. Do not touch the sequence, screens, or public form. Done when a 20k+/ASAP/referral lead lands in the Hot band and a "just researching" no-budget lead lands Cold.
Shape the follow-up sequence to your voice:
Edit the default follow-up sequence only. Make it 5 steps: Step 1 Email day 0, Step 2 Email day 2, Step 3 SMS day 4, Step 4 Email day 7, Step 5 Email day 12 (the breakup). Rewrite each body in a warm, casual, first-person voice (I am a solo [marketing consultant]), each under 60 words, each using {{first_name}}, each with exactly one clear next step. Keep the merge-tag fallbacks working. New leads should use this sequence; do not retroactively change leads already enrolled. Do not change scoring or screens. Done when a new test lead shows 5 queued follow-ups with my new copy and the right due dates.
Add the source tracking you actually use:
On the Sources settings, let me create sources with a UTM key so my form URL can carry ?src=. Add these sources: [Instagram bio (src=ig-bio, weight +10), Landing page (src=lp, weight +5), Referral (src=ref, weight +20), Cold outreach (src=cold, weight +0)]. When the public form loads with ?src=ig-bio it must set the lead's Source to Instagram bio automatically; an unknown or missing src falls back to a "Direct" source. Show source as a filterable column in the inbox. Do not change scoring math beyond applying the source weight. Done when a form opened at [my-app-url]/?src=ref creates a lead tagged Referral with +20 applied.
Bug fix template (reuse for anything broken):
Bug report. On the [screen] page I did [exact action]. Expected: [X]. Got: [Y]. Fix only this bug, do not refactor or change any other feature while you are in there. Tell me the cause in one sentence, then confirm the fix. Done when [the expected behavior happens].
When you're ready to actually send, ask Emergent to connect the placeholder:
Connect the sendMessage(followUp) placeholder to a real sender. For Email follow-ups, send through [Kit / Brevo] using my API key (I will paste it into the deployment settings, do not hardcode it). For SMS follow-ups, send through Twilio using my account SID, auth token, and from-number from the settings. When I click "Mark sent", actually send the rendered body, then set Status = Sent and Sent at = now; if the provider returns an error, set Status = Failed and show me the error. Add a settings screen to store these keys. Do not send automatically on a schedule yet; keep it one click per message so I stay in control. Done when clicking Mark sent on a test lead actually delivers the email/text to my own address.
A rented CRM plus marketing suite (HubSpot Starter, GoHighLevel, similar) runs $97 to $300+/mo once sending is counted. Owning the machine and renting only delivery:
| Monthly | What it covers | Cost |
|---|---|---|
| Emergent Standard | Keeps one app live (100 credits, deploy holds 50) | ~$20 |
| Email sender | Kit (free to start), MailerLite, or Brevo | $0-39 |
| SMS sender (optional) | Twilio, a few hundred texts | ~$5 |
| Rough total | $20-65 |
The first build itself costs credits (ballpark 60 to 150 for a machine this size), so your first month runs higher, budget one top-up. The trade-off of owning: a rented CRM includes maintenance, and here you are the maintainer, a small tinkering tax paid in the odd iteration prompt.
A lead machine is just capture, score, follow up, and the honest bit is you own the first three and rent the last one. Paste the manual into Emergent, build the thing that catches and scores your leads and queues the follow-up, and wire in a real sender when you're ready. It costs a fraction of a rented CRM, and this time the asset is yours.