User Tools

Site Tools


ch:processing

CHOICE index

The essentials of CHOICE processing

This is the shorter, denser version. I'm also writing up a gentler explanation to explain in more detail.

An active enquiry is one that an enquirer created and maintained through forming enquiry and is currently launching. It contains two parts:

  • Enquirer Requirements: a list of characteristics the enquirer requires as acceptable answers for each question — this can be divided into two parts:
    1. requirements of the other party as an entity
    2. requirements of the relationship / opportunity
  • Enquirer Answers: the questions the enquirer has answered, together with those answers.
    • These may not fully answer the other's requirements, and relevant questions that are not yet answered by the enquirer we call here “gaps”.

The system works only because some people have left their enquiry standing in the system. They contain the same parts, but we'll call them Other Answers, and Other Requirements.

When an active enquiry is launched, it is sent out to be compared with all the relevant standing enquiries, wherever they are held, and the results are presented to the enquiring user as the enquiry response. Here, outlined in the barest detail, is a kind of “top-down” approach to

  1. the response to the user
  2. the results from each standing enquiry of the same type
  3. the results from comparing one enquirer's question requirement with one answer from a standing enquiry

The response given back to the user

The overall aim of the processing of launching an enquiry is

  1. to work out the number of correspondences among all the other standing enquiries
    1. if that's more than a few, to give the number found, or an estimate, but no details
    2. if that's a few, to give the list of people with corresponding standing enquiries
  2. if there is no correspondence, then
    1. if there are questions for the enquirer to answer which would increasing the chances of correspondence, give a list of those questions
    2. if there are no such unanswered questions, give advice on what would need to give in order to find some correspondences; or alternatively encouragement to leave the enquiry standing ready to be found by others.

The result from one standing enquiry

The overall results will eventually come from any number of distributed servers. But for now, let's assume all the standing enquiries are held in one place.

The active enquiry is compared with every standing enquiry of the same type. Each enquirer question requirement is compared with its corresponding standing enquiry answer; and each

The process for a single comparison

For each comparison between an active enquiry and one other standing enquiry, there are 4 possible outcomes – the Other's Answers can fit with the Enquirer's Question requirements, or not; and the Enquirer's Answers can fit with the Other's Question requirements, or not.

  • A “correspondence” is when, for the enquirer and the other, the other's Answers fit the relevant Enquirer's Question requirements, at the same time as the Enquirer's Answers fit the relevant Other's Question requirements
  • “Enquirer-met” is where all the Enquirer's Question requirements fit the other's answers, but at least one Enquirer's Answer is outwith the relevant Other's Question requirement
  • “Other-met”, where all the Enquirer's Answers are within the Other's Question requirements, but at least one Other's Answer is outwith the relevant Enquirer's Question requirement
  • Both misfit is where there is some Enquirer's Answer outwith the relevant Other's Question requirement, and some Other's Answer outwith the relevant Enquirer's Question requirement

In practice, the last two can both be treated together as just a misfit, as if for any reason the other's answers are not within the Enquirer's Question requirements, the other is of no interest and can be passed over.

For Enquirer-met, where the Other's Answers are all within the Enquirer's Question requirements, there is an important difference between when some Enquirer's Answer is a misfit, or just absent for the relevant Other's Question requirement. If there is not quite correspondence, but also no explicit misfits, then if there is just one missing Enquirer's Answer, this is vitally useful information, as the question can be asked of the enquirer to resolve whether there is correspondence or not. If there are more gaps in the Enquirer's Answers, that may also be interesting, but not of such high priority.

The following information needs to be returned to the ongoing process:

  • If it was a correspondence, then some identifier of the Other, together with the Other's relevant Answers, and location, if relevant
  • If there was just one missing Enquirer's Answer, then the ID of that single question that was not answered by the enquirer
  • if there were several missing Enquirer's Answers, then the list of questions that were not answered by the enquirer

Grouping the comparisons

This is most clearly done at the server level – the place where a set of standing enquiries are actually held. At any specific server, the results returned from each single comparison are put together:

  • the running total of correspondences is kept;
    • if it reaches 10 or more, then:
      • if the enquiry is location-based, the closest 9 may be kept as below;
      • if not location-based, then just the total numbers may be kept;
  • if, at the end, the total number of correspondences is between 1 and 9, then the number plus the IDs of all the correspondents are returned, together with relevant answers and locations;
  • if there are no correspondences, then:
    • if there are any cases of one missing Enquirer's Answer, then return all the questions that arise from those
    • else if there are no such cases, then return the most common missing Enquirer's Answers.

This process can be repeated fractally down a tree of servers:

  • if there are 10 or more correspondences, the total number is returned;
    • if the enquiry is location-based, the closest 9 may be kept as below,
  • else if there are 1 to 9, the number and the IDs are returned, along with the relevant answers and locations;
  • else there are still no aggregate correspondences, return the questions as above.

The final return to the enquirer

The enquirer gets to see:

  • if there are 10 or more correspondences, the total number, and possibly (only) the IDs of the closest 9 (not names or contact details);
  • else if there are 1 to 9, the number and the IDs of the correspondents are returned, along with their relevant Other's Answers;
  • else there are still no aggregate correspondences but there are some cases of Enquirer-met:
    • if there are any cases of one missing Enquirer's Answer, then all those unanswered questions need to be presented back to the enquirer
    • else if there are some cases of multiple missing Enquirer's Answers, then the most common unanswered questions are presented back.

Demo versions

Clearly for a demo we don't need multiple servers, so some of the above can be elided.

More about this in the development path.

Commentary

ch/processing.txt · Last modified: 2024-05-19 13:51 by simongrant