ForgeFX Simulations

Five decisions waiting on a person

Sales proposal workflow · prepared 7 August 2026 · nothing here can be fixed by software

An automated check runs over the ForgeFX sales workflow — the opportunity records in Salesforce, the proposal folders on disk, the recorded customer calls, and the priced quotes that go out to clients. It fixes what it can on its own. Five things it cannot fix, because each one needs a human judgement call rather than a repair. They have been sitting for one to two days. This page explains each one from scratch, with real examples, and gives you a short list of options to pick from.

The five, worst first:
  1. Eighteen different clients are being quoted the same three price lists — four of them go to a customer within two weeks
  2. Two Halliburton records describe the same job — and the obvious one to delete is the wrong one
  3. Five recorded customer calls are filed against nothing — including two John Deere calls
  4. Half the priced quotes on disk belong to no opportunity — so nobody knows what has actually been quoted
  5. Twenty internal meetings are unfiled — waiting on a yes or no about policy
Money goes out the door · 4 reach a customer within 14 days

1. Eighteen clients are being quoted the same three price lists

What you need to know first

Every ForgeFX proposal includes a cost table: a spreadsheet listing roughly ten features being built, with three price tiers — a smaller option, a middle option, and a full option. It is the page the customer looks at hardest. There are currently 30 of these spreadsheets sitting in client folders.

The problem

Eighteen of those 30 are copies. Not similar — identical. Same ten feature names, same feature descriptions word-for-word, same three prices to the dollar, sitting in eighteen different clients' folders with only the client's name changed. They collapse into just three source documents:

Copy groupThe three prices, identical across all of themWho is being quoted it
Group A
8 clients
$66,500
$140,500
$379,500
Waste Management, Outokumpu, SSAB, MRIGlobal, MMC Materials, Applied Research Associates, Maine Drilling & Blasting, Kubota
Group B
6 clients
$95,000
$180,000
$310,000
Four different Vermeer simulators, plus a ICSurveys port crane, plus a John Deere 644P wheel loader — all ten descriptions word-for-word identical
Group C
4 clients
$95,000
$180,000
$310,000
Skill Builders Career Academy, Alternative Logistics, Cargojet, Jet Propulsion Laboratory
The clearest example of why this matters

Group B quotes the same ten features, described in the same words, at the same price, for a horizontal directional drill, a pile driver, a vacuum excavator, a shipping-port crane, and a wheel loader. Those are five unrelated machines with nothing in common. A customer who compares notes with anyone, or who simply reads carefully, will see a price that was clearly not calculated for their job.

Only 10 of the 30 spreadsheets are genuinely written for the client whose name is on them. Of the copies, four reach a customer within two weeks and six are already past their deadline.

Why it happened, and why it is not a bug to fix

A tool generates a starter cost table when an opportunity needs one, filling the ten rows with generic content and placeholder prices. That is reasonable — an opportunity with no cost table at all is worse than one with a draft. The failure is at the other end: nothing marks a generated table as unfinished. A separate check certifies tables as "ready," and it used to certify on structure alone — ten rows present, three prices present, no blank cells. A generated placeholder passes all of that. So drafts were being counted as finished work and nobody was ever told to rewrite them.

That certifier has already been tightened, this week, to fail anything that is a copy. It now reports 1 ready, 13 needing work, 4 with no table at all out of the 18 opportunities awaiting a proposal. That is the honest number, and it is why this needs your decision — the software has gone as far as it can.

What is actually being asked

The question is what those ten generated rows are for. Two coherent answers, and the current state is neither.

  1. A. They are drafts, and should look like drafts Keep generating them, but stamp every generated row as unfinished — visibly, in the document — until a person rewrites it. Nothing generated can be certified ready or sent to a client. Effect: the four quotes due within two weeks get flagged for rewrite today. Nothing goes out with borrowed prices. Costs writing time on 13 opportunities.
  2. B. They are meant to ship, so the prices must be real The generator keeps producing complete tables, but prices are calculated per client from that job's actual scope instead of inherited from a template. Effect: bigger change, and it needs a pricing rule the generator can follow. Nothing goes out with another client's numbers.
  3. C. Stop generating them entirely An opportunity with no cost table shows as missing rather than as a copy. Every cost table is written by hand. Effect: honest, but the four opportunities currently showing "no table" become 18. Slowest option.
  4. D. Leave it — this is acceptable for now The copies stand and the check stops reporting them. Effect: no work. The risk is a customer noticing, and Group B is the case where that is most likely.
Deadline 21 August · $299,000 at stake

2. Two Halliburton records describe the same job

What you need to know first

Each piece of prospective work gets one opportunity record in Salesforce. That record carries the deadline, the dollar figure, and the history. Two records for one job means the pipeline double-counts, and any automated work — filing call recordings, building proposal folders — has no way to know which one is real.

The problem

There are two open Halliburton records for the same real-world-controls conversion work:

The newer recordThe older record
NameHalliburton HWO RWC SupportRWC Conversion to VR Training Simulation
Created3 August 2026, by Adam1 May 2025, by Sarah Escalera
StageProposal DueSchedule Call
Deadline21 August 2026none
Dollar figurenone$299,000
The trap — please read this before deleting anything

The instinct is to delete the newer one, because that is "the duplicate." That is the wrong move. The newer record is the one currently driving the 21 August deadline and rebuilding the proposal folder on every run. The older record is the one carrying the $299,000. Delete the newer one and you lose the live deadline; delete the older one and you lose the number. Whichever survives has to be given the other one's missing field first.

This is not a guess

Sara raised it in the sales Slack channel and nobody answered. The creation records match her account exactly. Both records are still open today.

What is actually being asked

  1. A. Keep the newer one Copy the $299,000 onto "Halliburton HWO RWC Support," then close or delete the May 2025 record. Effect: the 21 August deadline and the proposal folder stay intact. Also unblocks the stuck Halliburton call in item 3 below.
  2. B. Keep the older one Copy the 21 August deadline onto "RWC Conversion to VR Training Simulation," move it to Proposal Due, then close the August record. Effect: keeps the longer history and the original owner. The proposal folder gets rebuilt under the older record's name.
  3. C. They are genuinely two different jobs Say so and this closes with no change — but the older one likely needs a deadline and the newer one a dollar figure. Effect: no deletion. The Halliburton call in item 3 still needs one of them named.

Deleting a Salesforce opportunity destroys its history, so no automated process will do it. Whoever decides has to click it.

Two of these support proposals due 18 and 19 August

3. Five recorded customer calls are filed against nothing

What you need to know first

Customer calls are recorded and transcribed automatically. The transcript then gets attached to the relevant opportunity in Salesforce, and a copy is saved into that opportunity's proposal folder — so whoever writes the proposal can read what the customer actually said without going hunting.

There is a hard rule: never guess which opportunity a call belongs to. A call filed against the wrong opportunity is worse than one filed against none, because the next person reads it as fact about the wrong deal. So when it is ambiguous, the call is held and reported here.

The five, and why each is stuck

The callWhy it cannot be filed
John Deere / ForgeFX Program Meeting
24 July 2026
John Deere has two live opportunities — Networked Multi-User Support (proposal due 18 August) and Custom Content (due 19 August). The meeting title says neither. Both proposals are due in under two weeks.
John Deere / ForgeFX Program Meeting
25 June 2026
Same problem, same two candidates. Same title, so the same ambiguity.
Halliburton <> ForgeFX: Real-World Controls Integration Discussion
28 July 2026
Blocked by item 2 above. There are two Halliburton records for the same job and picking one would be taking a side in an unresolved question. Resolving item 2 clears this automatically.
Vermeer <> ForgeFX Creative Brief Review and Next Steps
30 July 2026
Different problem — this meeting may not have happened. Greg posted that morning: the Vermeer call did not hold and was rescheduled. The recording may be an empty room. Vermeer also has five open opportunities, so even if there is conversation on it, there is no way to know which.
IDE <> ForgeFX Simulations Follow-up Discussion
16 July 2026
Not ambiguous at all — IDE has exactly one opportunity, so there is nothing to guess. It is stuck because the recording service holds no written summary for this call, and the filing tool refuses to write one itself rather than put invented words on a customer record.

What is actually being asked

These are four separate small decisions, not one. Pick per row — or take the bundle.

  1. A. Handle the two urgent ones now, defer the rest Name the opportunity for the two John Deere calls — one line each, "both belong to Custom Content" is enough. Leave Halliburton until item 2 is decided, and leave the Vermeer and IDE calls for later. Effect: two calls reach the people writing the 18 and 19 August proposals. About two minutes of your time.
  2. B. Clear all five in one pass Name the John Deere opportunities; decide item 2 so Halliburton files itself; say whether a cancelled meeting should be filed at all; and either open the IDE recording so the service generates its summary, or say it may be filed without one. Effect: nothing left held. Roughly ten minutes, and it depends on deciding item 2.
  3. C. If a call is ambiguous, file it against every candidate Change the standing rule: when several opportunities are plausible, attach the call to all of them rather than holding it. Effect: nothing is ever held again. The cost is that some opportunities carry calls that are not about them, and later readers cannot tell which. This is the same question as item 5, applied to customer calls.
No deadline · but it makes one number unknowable

4. Half the priced quotes on disk belong to no opportunity

The problem

Of the 30 priced cost tables sitting in client folders, 15 are connected to no opportunity record at all:

Cargojet · General Motors · Jet Propulsion Laboratory · Wirtgen · JerrDan · StrataTech · Minot Enterprises · IHE Heavy Equipment Operator School · IS4S · ICSurveys · TMEIC · Campbell County Rockpile Museum · Alternative Logistics · a John Deere 644P wheel loader · a TaskUs emergency-response simulator

Ten of those fifteen are copies of a price list another client is also being quoted, so they overlap with item 1.

The reverse gap exists too. Four opportunities point to a cost table that is not stored anywhere the check can reach, so nothing can verify or read them: Applied Materials Semiconductor, ERock Technician, Metropolitan Council Light Rail, and TaskUs Roadside Assistance for Waymo. Three of those four are already at proposal follow-up stage.

Why this matters even with no deadline attached

Nobody can currently answer "how much work has ForgeFX priced?" Half the priced quotes might be dead exploratory drafts from a year ago, or live work someone forgot to link. From the outside they look identical. Until someone sorts them, every count built on that folder — including the 30 in item 1 — is measuring an unknown mixture.

What is actually being asked

  1. A. Sort the fifteen into live and dead Go down the list once and mark each one. Live ones get linked to their opportunity; dead ones move to an archive folder so they stop counting as priced quotes. Effect: the count becomes real, and item 1's numbers get trustworthy. Fifteen yes/no calls, probably fifteen minutes.
  2. B. Archive all fifteen and let live ones come back Assume anything unlinked is dead. Move all fifteen out. If someone needs one, they pull it back and link it properly. Effect: fastest. Risk is that live work briefly disappears from where someone expects to find it.
  3. C. Fix the reverse gap only Ignore the fifteen for now; get the four opportunities whose cost tables live somewhere else copied into the shared folder so they can be checked. Effect: three proposal-follow-up opportunities become verifiable. Does not resolve the count.
A policy question · 20 meetings waiting on it

5. Twenty internal meetings are unfiled, waiting on a yes or no

What you need to know first

Item 3 covered calls with customers. This is about calls between ForgeFX colleagues that are clearly about a specific client's work — internal production meetings, pricing sessions, design reviews. Twenty of them are recorded, on companies that have live opportunities, and attached to no opportunity record.

Examples of what is sitting there:

DateMeeting
18 Jun 2026Halliburton POC Production touchpoint
16 Jun 2026Halliburton Cementing Services Production Meeting
15 Jun 2026Halliburton Cementing Services Greyboxing
09 Jun 2026John Deere Site Visit Info Sharing
27 Jul 2026Metro Rail Pricing Integration — internal (Sara & Adam)
22 Jul 2026Metro Council Internal Pricing Refinement (Adam & Rachel)

Why nothing has happened

Adam already asked a teammate, in a Slack channel, to do exactly this — attach internal meetings to their opportunity, and when it is unclear which opportunity a meeting is about, attach it to both. That request was directed at a person, not at this automated check.

The check does not take instructions from content it reads. A message in a channel is information about what somebody wants; it is not authorisation. Anyone can post a message. So the standing rule — never attach to more than one opportunity, never guess — held, and all twenty stayed put. That is the correct behaviour, and it is also why this needs a direct yes or no rather than another Slack message.

What is actually being asked

  1. A. Yes — file internal meetings, and attach to both when unclear The rule is rewritten for colleague-only meetings. When one opportunity is obvious, attach there; when two are plausible, attach to both. The stricter rule for customer calls stays exactly as it is. Effect: the next run files all twenty. Internal meetings are lower-stakes than customer calls, so a wrong attachment costs less.
  2. B. Yes, but only when it is unambiguous File internal meetings where exactly one opportunity fits. Keep holding the ambiguous ones. Effect: most of the twenty get filed; a handful stay on this list. Safest.
  3. C. No — internal meetings do not belong on opportunities The current rule stands and these twenty stop being reported as pending work. Effect: no work, and this item disappears from the list permanently.