Adding a prospect and moving a stage
Every prospect on the Recruiting & Growth pipeline gets there through one of two modals: **Add prospect**, which creates the row, and **Move Stage**, which moves it forward (or closes it out). Toge…
On this page
What these two modals do
Every prospect on the Recruiting & Growth pipeline gets there through one of two modals: Add prospect, which creates the row, and Move Stage, which moves it forward (or closes it out). Together they are the only way pipeline data changes on this page. There is no bulk import, no CSV upload, and no CRM sync behind them: a group admin types a prospect in, and a group admin moves that prospect through the stages by hand as the relationship develops.
This article is the detailed reference for both modals: every field, the five pipeline stages, who is allowed to open them, and what happens to the two encrypted contact columns and the last-contacted timestamp on save. For the page these modals live on, its map, its Take Action tile, and its territory rows, see Recruiting & Growth: section overview.
Note
A prospect record is HQ's own lead: someone your recruitment team is talking to about joining the network. It is not a franchisee's business data, and it never touches the privacy boundary that shields a franchisee's own operational and financial numbers from HQ. That boundary is about HQ reading a signed-on franchisee's books, not about how HQ tracks its own recruiting pipeline.
Where to find them
Both modals sit under Recruiting, in the Expansion band of the HQ sidebar, at hq.verinode.ai/recruit-grow.
- Add prospect opens from the + Add Prospect button in the page header, or from the "+ Add the first inquiry" tile that appears in the Active Prospects row when the pipeline is empty.
- Move Stage opens by clicking any tile in the Active Prospects row. Unlike Coverage Gaps and Territories tiles, which open a read-only drill-in view, an Active Prospects tile opens Move Stage directly, because a prospect tile is something you act on, not just something you read.
Both modals require the group admin role. Every write behind them checks this server-side; there is no client-only gate. If your account is not a group admin, the buttons are still visible but the save call returns an error rather than writing anything.
The Add prospect modal
The modal opens with a short line explaining what it does: "Records a new prospect on the pipeline. Defaults to inquired; pick a later stage if you're logging someone you've already qualified or are negotiating with." That single sentence is the whole logic of the form: it is a manual entry point, and the Status field lets you drop a prospect in wherever your conversation with them actually is, not always at the very start.
Fields, top to bottom:
- Contact name. Required. Placeholder text reads "Jane Operator." The form will not submit without it: leaving it blank shows "Contact name is required." both when you try to save and, redundantly, if the request somehow reaches the server without one.
- Contact email. Optional. Placeholder "jane@example.com." Not validated as a real email format beyond the browser's own
type="email"field. - City and State. Optional, side by side, City taking two-thirds of the row's width. State is capped at two characters and auto-uppercases as you type, with placeholder "TX."
- ZIP (optional). Capped at 10 characters, to allow ZIP+4 formats.
- Status. A dropdown of the same five pipeline stages used in Move Stage (defined below), defaulting to Inquired.
- Inquiry source (optional). Free text. Placeholder suggests the kind of value to enter: "e.g. franchise-expo, Discovery Day pack, broker referral." This is what shows as the trailing tag on a prospect's tile once saved.
- Notes (optional). A three-row text area. Placeholder: "e.g. Met at IFE 2026. Currently runs an HVAC operation in DFW; looking to add water mitigation."
The footer has two buttons: Cancel and Add prospect. While the save is in flight, the button reads "Adding…" and both buttons disable so you can't double-submit. On success, the modal closes and the page refreshes to show the new tile. On failure, an error line appears above the buttons instead of closing the modal, so you keep whatever you typed.
The five pipeline stages
Both modals share one list of five stages. This is the entire vocabulary of the pipeline: every prospect is in exactly one of these five states at any time.
| Stage | Meaning | |---|---| | Inquired | Initial contact; no qualification yet. | | Qualified | Meets the franchisee fit criteria; advance to negotiation. | | Negotiating | FDD (Franchise Disclosure Document) delivered; counsel review or terms negotiation underway. | | Signed | Franchise agreement signed; convert to operator onboarding. | | Dropped | Inquiry closed without signing. Notes capture the reason. |
The Active Prospects row on the main page only shows prospects in the first three stages (Inquired, Qualified, Negotiating), labeled there as New Inquiry, Qualified, and In Negotiation. A prospect you move to Signed or Dropped stops appearing in that row: it has either graduated into operator onboarding or closed out. The underlying record is not deleted in either case, it simply falls out of the "still open" view.
The Move Stage modal
Clicking a prospect tile opens a compact modal titled with the prospect's contact name (or email, if no name is on file). Right under the title, a one-line summary orients you before you touch anything: location (or "Location pending" if neither city nor state is set), how many days since the original inquiry, and the current stage, for example: "Austin, TX · 14d since inquiry · currently Qualified."
Below that:
- Move to stage, a fieldset of all five stages as radio options, each showing its label and the same one-line meaning from the table above. The currently selected stage is highlighted with a copper border and a faint copper background so you can see at a glance what you're changing away from.
- Notes, pre-filled with whatever notes already exist on the record, editable. Placeholder when empty: "What changed? Anything counsel needs to see?"
The footer holds Cancel and Save. Save stays disabled until you've actually changed something: either the selected stage differs from the prospect's current stage, or the notes text differs from what's currently saved. This stops an accidental empty save from writing a needless update (and a needless last-contacted stamp) when nothing has changed. While saving, the button reads "Saving…".
A small note above the footer spells out a side effect of saving: "Saving also stamps the prospect's last-contacted timestamp so the pipeline ages from the most recent touch, not the original inquiry date." That behavior is covered in detail below.
What happens on save
Add prospect calls a server action that: confirms you're a group admin, re-validates that contact name is present and trimmed, defaults status to inquired if none was chosen, and writes a new row into the group's prospect table with every field you entered (blank optional fields are stored as null, not empty strings). It then hands the new prospect an id and refreshes the page so the tile appears immediately.
Move Stage calls a different server action that: confirms you're a group admin, confirms the prospect actually belongs to your group (a defensive check against acting on another network's data by id), then writes the new status and, if you changed the notes, the new notes text. Both actions revalidate the Recruiting & Growth page so what you see updates without a manual reload.
If either action fails, for example if your session's group-admin role check fails, or a prospect id no longer exists, the modal shows the specific error text inline (e.g., "Only group admins can update prospects." or "Prospect not found.") rather than closing, so you don't lose your notes.
Encrypted contact columns
Three fields captured through these two modals carry a second, encrypted copy alongside the plain one: contact name, contact email, and notes. Every time you save, Verinode checks whether your current session has the group's admin-only encryption key unwrapped. If it does, each of those three fields (whichever ones you're actually writing) gets encrypted and written to a matching ciphertext column, in addition to the plain column. If your session does not have that key available yet (for example, right after signing in, before the key has been unwrapped for that session), the write goes to the plain column only, nothing is lost, and the record picks up its encrypted copy the next time an admin with the key saves it.
On read, the pipeline prefers the encrypted copy: if your session has the group's key and a ciphertext value exists, Verinode decrypts it for display. If the key isn't available, or decryption fails for any reason, the plain column is shown instead. This fallback is silent to you: the prospect's name, email, and notes always render, they simply come from whichever copy is currently readable.
City, state, ZIP, inquiry source, and pipeline status are not encrypted. Only the three free-text personal fields, contact name, contact email, and notes, get the ciphertext treatment.
The last-contacted timestamp
Every the network rollup row carries two separate dates: the original inquiry date, set once when the prospect is created and never touched again, and a last-contacted date, which starts empty and gets overwritten to the current time every single time a Move Stage save succeeds, whether you changed the stage, the notes, or both.
The idea behind stamping it on every save, not just the first save or a status change, is that any Move Stage save represents a real touch: a call, a follow-up, a change in where the conversation stands. The footnote in the modal describes the intent plainly: the pipeline should read from the most recent touch, not silently age against the day the prospect first reached out months ago.
Today, the day counter you see on a prospect's tile ("Nd since inquiry") and in the Move Stage modal's summary line reads off the original inquiry date, not the last-contacted date: it always answers "how long has this person been in our pipeline," regardless of how many times you've touched the record. The last-contacted timestamp is captured on every save specifically so that a freshness or staleness read (distinct from the inquiry-age counter) can be built against it as this page's benchmark surfaces grow. If you're relying on days-since-inquiry to flag a prospect going cold, be aware it will keep climbing even for a prospect you talked to yesterday: that number tracks the whole relationship, not the last touch.
Empty state
Before you've added anything, the Active Prospects row shows a single tile: "+ Add the first inquiry," labeled ADMIN, with the sub-line "Track a new prospect through inquired, qualified, negotiating, signed, without leaving Verinode." Clicking it opens the same Add prospect modal described above. There is no separate empty-state form: the empty-state tile and the header button lead to the identical modal.
Related reading
- Recruiting & Growth: section overview: the full page tour, the network footprint hero, the territory map, and the financials-disclosure toggle these modals sit alongside.
- The territory coverage map: how prospect pins plot on the map once you've added them.
- Generate the prospect recruitment deck: the artifact your pipeline data ultimately supports.
- Top Quartile and Watchlist standings: how the top-quartile figures referenced elsewhere on this page are computed.
- Discovery Day: the in-person step that typically follows a prospect moving to Negotiating.
- Item 19 and financial performance representations: the disclosure requirement behind negotiating-stage FDD delivery.
- Compliance: brand health across your network: where HQ's other admin-gated network controls live.
- HQ Report Library: where generated recruitment decks are archived after the fact.
Data sources
Data sources
- 1.Prospect pipeline (the network data). Your recruitment team's entries through these two modals, plus /inquire submissions.
- 2.Encrypted contact columns (contact_name_ciphertext, contact_email_ciphertext, notes_ciphertext). Written under the group's admin-only encryption key when your session has it unwrapped.
- 3.Last-contacted and inquiry timestamps (last_contacted_at, inquired_at). Stamped by Verinode on creation and on every Move Stage save.