24 Moves Management

# i always begin by loading the disco engine if it isn't already loaded
library(discoveryengine)

The Discovery Engine provides a suite of widgets to identify proposals based on specific characteristics or events related to them.

24.1 Basics

With autocomplete in mind, proposal widgets are all prefixed with proposal_.

Common prefix keeps proposal widgets easy to find

Common prefix keeps proposal widgets easy to find

As with all other widgets, the proposal widgets are designed to be combined like lego blocks using %and%, %or% and %but_not% in order to precisely define solicitations (and planned solicitations) of interest. Once you’ve zeroed in on the proposals you’re interested in, you can get the relevant enitity IDs using proposal_entity, or look at related contact reports using proposal_contact.

While these widgets can be used to pull the portfolio for a unit or development officer, it is simpler to use in_unit_portfolio and in_development_officer_portfolio for those needs. The proposal widgets shine in situations where you need to focus on specific types of moves and asks, as the examples below illustrate.

24.2 Example: Engineering qualifications

Let’s look for prospects who were qualified by Engineering during fiscal year 2017-18:

eng_qualification = proposal_office(engineering) %and%
    proposal_qualified(from = 20170701, to = 20180630)

qualified_prospect = proposal_entity(eng_qualification)
display(qualified_prospect)
## # A tibble: 233 x 1
##    entity_id
##        <dbl>
##  1       235
##  2      1893
##  3      3422
##  4      6007
##  5      6945
##  6      7128
##  7     14661
##  8     16233
##  9     17719
## 10     21152
## # … with 223 more rows

proposal_qualified looks for proposals that moved from stage QU to one of (CU, SP, PD, GS, DS) during the specified time period (for a more flexible way to isolate specific types of moves, see ?proposal_stage_transition). So our definition describes any proposal that successfully progressed from the qualification stage, during the fiscal year, that was assigned to Engineering at the time of the stage change.

Note: yes, the proposal widgets are smart enough to compare the assignment dates to the stage dates to make sure that the qualification really happened while the proposal was assigned to Engineering

24.3 Example: collaborative asks

Which prospects were jointly solicited by the Library along with some other unit during fiscal year 2017-18? Let’s focus only on asks of at least $100,000. For this request, we’ll take advantage of the not() operator:

joint_ask = proposal_office(library) %and%
    proposal_office(not(library)) %and%
    proposal_actual_ask(at_least = 100000, 
                        from = 20170701, to = 20180630)

jointly_asked = proposal_entity(joint_ask)
display(jointly_asked)
## # A tibble: 24 x 1
##    entity_id
##        <dbl>
##  1      1306
##  2     10864
##  3     15928
##  4     17429
##  5     23387
##  6     26209
##  7     38932
##  8     39287
##  9     39288
## 10     39794
## # … with 14 more rows