An engineering firm lives and dies by which projects it chooses to pursue. Their Go/No-Go process, the structured review that decides whether to bid, was critical. It was also painful to use, and it was dragging down everything around it.
The problem
The process had been built directly into the Opportunity entity. Every question, score, and decision point lived in its own field, option set, or related table, roughly a dozen of them. That made Opportunity heavy. Forms loaded slowly, reports took longer than they should, and people avoided running Go/No-Go reviews because the experience was so clunky.
When users avoid a critical business process because the software is slow, the software is the problem.
The fix
I moved Go/No-Go out of Opportunity and into its own solution, with a custom PCF control as the user interface. Instead of spreading each answer across separate columns and tables, the control stores the review as structured JSON in a single text column. The control reads and writes the whole review as one unit, which is exactly how people use it.
That replaced about 12 tables and option sets. Opportunity got lighter, the Go/No-Go form got faster, and changing the questions no longer means a schema change.
When JSON storage makes sense, and when it doesn't
Storing JSON in a Dataverse column isn't right for everything. Some reviewers will see it as a shortcut, and in the wrong place it is one. My rule of thumb:
- Use it when the data is read and written as a unit by one control, and its shape changes often.
- Keep real columns for anything you need to filter, sort, secure, or roll up in views.
- Document the JSON schema and version it, the same way you would a table.
Adding AI to the decision
With the process cleaned up, I added AI-assisted analysis. It searches the opportunity's records and the client's history to help assess how viable a bid is. It doesn't make the call. It gives leadership a faster, better-informed starting point.
The result
Teams ran more Go/No-Go reviews, Opportunity forms and reports got faster, and the process became something people used instead of worked around. Sometimes the best performance fix is moving something to where it belongs.