Field versioning
I'm looking for any ideas how one might (programmatically) detect the difference between a fundamentally new entry in a text field versus a trivial edit to the pre-existing value. Example:
Say you have a text field used to capture the latest status update for a task or project. So a user enters "Deployed new version. Monitoring customer feedback." But their manager doesn't like the incomplete sentences so the next day, the user is asked to update the value to "The new version has been deployed and the team is monitoring customer feedback." These two updates express the exact same sentiment...just with different wording.
But a week later, the user enters a new update, like "Customer feedback has been overwhelmingly positive." That's completely new information.
We're using the Wrike API to pull in these field values and would like to be able to add a new entry in a "what's new" type of feed on an internal reporting portal we maintain and we need to be able to exclude the first type of change (because it's not really new).
We're evaluating some potential NLP solutions that aim to detect the degree of difference in meaning between two text strings. We've also considered the option of adding an additional custom field to the record, like a "revision" field that the user could increment anytime they make a substantive edit to any field. We also considered creating custom child item types for each such field and asking the user to create a new instance of this custom item for each substantially new entry (or they could edit the pre-existing instance for trivial updates).
I thought I'd ask the community here if anyone has done something similar and has any other/better ideas for how to handle this. TIA.
The custom child item types or separate update fields sound like the only viable solutions I can think of within Wrike.
Hi Chris (AIS-BI) Martin, this is a very interesting case 🙂 One possible option to keep track of significant changes in custom fields would be to create an automation rule.
In the Triggers tab, you'd need to use the option Custom field changes, select the relevant custom field, and then in the Add condition section, you can use, for instance, the option Contains to define a set of words/strings that would trigger an action. For example, if the words "important" or "feedback" are included in the text (or any other of your preference), a user or user group could be notified:
1) Select the trigger:
2) Add the condition:
3) Select the action (mentioning the relevant user or user group):
Also, I'd like to mention that you can manually check all the changes made to the relevant custom field. To do so, open the task in item view, click on the three-dot menu next to the name of the field, and then select "Show editing history":
I hope this information helps!
Thanks for helping up here Ali Moses 😀
Thanks @... for the suggestion. We can (and for other use cases do) do something similar...just not in Wrike. We ingest (into another system) all fields for all records in a given space every day and can do things like check whether a given field begins with [some string value] and we can programmatically do stuff when the string is detected.
I can report back in case anyone looks to do something similar that the Levenshtein string difference method (where we compare the old and new field value) seems really effective for our use case. It computes what's the smallest number of single-character changes would be required to transform one string into another. The implementation we're evaluating further transforms that computed value into a sort of % "sameness" between two strings. After testing several dozen real string entry changes (think of these as "project updates"), we've found that a threshold Levenshtein sameness of 50% does a great job for our use case of detecting the difference between a minor change/edit and a substantially new entry.
Thank you for sharing these details about your case, Chris Martin! It is definitely an interesting one 👍