UX / revenue engine — brief and backlog
8 October 2026 · team
JETFLY.AI — UX / REVENUE ENGINE BRIEF AND BACKLOG Logged: 22 September 2026 Updated: 8 October 2026. Controller. Same sky. Status: team asset. Cooked enough for a handoff. WHAT Not a CRM. The tower inside the one they already have. Sprout stamps the post. Lead HTML keeps the grain. Salesforce receives the opty. Grok is the controller. Salesforce is the pilot. PIPES Two. Only two. Sprout. Salesforce. Periphery feeds Salesforce: grain, stages, association, sauce, HTML, HubSpot, email, SMS, Marketing Cloud, Pardot, agents. They can call. They are not a pipe. GRAIN ~200 bytes. Post, UTMs, campaign, company, role, intent, stage, revenue. Name and email go to the CRM then drop. HTML field still named iota. FIELD-LEVEL Campaign was a bucket. Every field on the sauce is a signal. Signal: verified by a human, or data entered. Metadata: agents reason. They do not force. Engage on: company, intent, stage, choice, moment, invoice. UTM is metadata. We do not engage about a UTM. Acquisition writes origin. Renewal writes a new grain. OBJECTS TOFU sauce — Jetfly_Sauce__c. Origination. Mo fo — related lists on Lead, Contact, Account, Opportunity, Order, Product. BOFU — invoice looks back to sauce. Account is the top. A deal is Opportunity. Lead sits outside until convert. FUNNEL Lead Status and Opportunity StageName in one funnel. Attribution across both. Custom unless they are still Salesforce OOTB. Forecast categories are not StageName. QUALIFY 1 Funnel 2 Campaign 3 Weight 4 Plumb (any object, then source field) ASSOCIATION Journey marks on stages. Two choices. Never a blast. CONTROLLER Four calls. Proceed. Hold. Conflict. The renewal difference is the upsell. The radio is the open record. The controller does not write it. Flight plan: Lead, Account, Opportunity, Quote, Order, Asset, Invoice, renewal quote. The renewal quote is copied from the asset. The difference is the upsell. Not a new lead. The only hold is a phone signature. Discount, credit, recognition. In policy, nobody is asked. Any other wait is a defect. TRIAL Sign up / log in. Connect Salesforce Developer Edition. Prospect HTML is the lead page. Hidden fields. PACKAGE External Client App, 2GP. Thin Jetfly_* on Opportunity. Not a Lightning App. BACKLOG NOW Hand test. Ten live opportunities. Same org. Script only. Score time to invoice, and every wait that was not a signature. Do not put the radio on the record until those ten pass. BACKLOG NEXT Salesforce Connected App OAuth. Real write to sobject.sourceField. 2GP package with sauce + related lists. Sprout production webhook. Jetflyify names. Import org StageName + Lead Status. Closed Lost as a branch. Renewal grain from the asset. Live Association callers. NOT DOING Another CRM. Another sky. A warehouse. A quote document. A stage the controller owns. Campaign-level as the model. Forcing a prompt. The controller updating a field. Tracking fields we cannot engage on. Forecast categories as stages. The deal living on the tracker. PICK UP Ten deals with the script. Then Library → Qualify → Plumb → Trial → Sprout → lead HTML → CRM plugin → Association. Log a new version when the model changes.
