Advertisement

‘Iowa, you have shocked the nation’ as a smartphone app derails reporting of Democratic caucus results


Johnson County Democrats caucus at Terry Trueblood Recreation Area in Iowa City. Monday, Feb. 3, 2020. — Zak Neumann/Little Village

“Iowa, you have shocked the nation,” Pete Buttigieg told his supporters at a rally in Des Moines on Monday night. His statement was correct, but not in the way he meant it.

After a year of almost constant campaigning by 26 Democratic candidates, and promises by the Iowa Democratic Party (IDP) that this year’s caucus would provide more information than ever before — thanks in large part to precinct managers using a new smartphone app — there was no reliable information reported by the IDP on Monday night. (In his speech at almost 11:30 p.m, Buttigieg was attempting to claim victory in the caucus, knowing that no one had enough information to confirm or refute his statement.)

There was also no reliable information available from the party on Tuesday morning.

What was available Tuesday morning was a version of the same statement the party had been making since it became obvious there was a problem reporting precinct results on Monday night.

“Precinct level results are still being reported to the IDP,” according to a press release issued by the party shortly after 8 a.m. “While our plan is to release results as soon as possible today, our ultimate goal is to ensure that the integrity and accuracy of the process continues to be upheld.”

In response to complaints in previous years — especially following the 2016 caucus, in which Hillary Clinton finished ahead of Bernie Sanders by less than one percentage point — the IDP decided to make public the raw votes from both the first and second alignments at each precinct, as well as the number of delegates awarded. It was the first time the party would provide the raw totals.

Rockne Cole hands out presidential preference cards at City High. Monday, Feb. 3, 2020. –Zak Neumann/Little Village

To facilitate the reporting of the results, the IDP spent approximately $63,000 on a smartphone app and related services from Shadow, a Denver-based tech company. Shadow was started under the name Groundbase, and was co-founded by Gerard Niemira and Krista Davis, who were part of the tech team for Hillary Clinton’s 2016 campaign.

The Los Angeles Times reports that Shadow is “an affiliate of ACRONYM, a Democratic nonprofit founded in 2017 ‘to educate, inspire, register, and mobilize voters,’ according to its website.” ACRONYM’s founder and CEO is Tara McGowan, who worked as a video producer on President Obama’s 2012 reelection campaign.

The Democratic National Committee advised the IDP to use the app from the politically well-connected firm, rather than have precinct managers report results over the phone as they had in the past, according the New York Times. It was a new app, built by Shadow over the past two months. The app was never tested at a state-wide level. (The DNC also persuaded the Nevada Democratic Party to buy the same app.)

A precinct chair counts Pete Buttigieg supporters at South East Junior High in Iowa City. Monday, Feb. 3, 2020. — Zak Neumann/Little Village

The app failed on Monday night. According to the IDP, some precinct managers could not log in or had other trouble making it work. When the app was used, it failed to report all the necessary information.

The IDP stressed in a press release that the app had not been hacked. The lack of transparency around the app and whatever its security measures are had raised concerns about hackers being able undermine confidence in the results of caucus. Instead, according, to the IDP, the problem with the app was a coding error that prevented the app from functionally properly.

“As precinct caucus results started coming in, the IDP ran them through an accuracy and quality check. It became clear that there were inconsistencies with the reports,” according to a written statement from IDP Chair Troy Price. “The underlying cause of these inconsistencies was not immediately clear, and required investigation, which took time.”

City High auditorium filled up on caucus night. Monday, Feb. 3, 2020. –Zak Neumann/Little Village

“As this investigation unfolded, IDP staff activated pre-planned backup measures and entered data manually. This took longer than expected.”

There was a central phone number at the IDP’s Des Moines headquarters to call to report results if the precinct wasn’t using the app, but the line was overwhelmed and callers got busy signals or were put on hold for an excessively long time.

But the party is confident that when the results are finally released, they will be accurate, because of the paper trail created at the precinct level. At least 50 percent of the total from the state’s more than 1,600 precincts will be released at 4 p.m. on Tuesday, the IDP announced late on Tuesday morning.

A young spectator occupies themselves at during the caucus in the City High cafeteria. Monday, Feb. 3, 2020. –Zak Neumann/Little Village
Republicans caucus at Alexander Elementary in Iowa City. Monday, Feb. 3, 2020. — Zak Neumann/Little Village
A couple waits for counts to start at Alexander Elementary in Iowa City. Monday, Feb. 3, 2020. — Zak Neumann/Little Village
City High School on Caucus Night. Monday, Feb 3, 2020. — Zak Neumann/Little Village

[gravityform id="17" title="false" description="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper your-village-form_wrapper' id='gform_wrapper_17' ><a id='gf_17' class='gform_anchor' ></a><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_17' id='gform_17' class='your-village-form' action='/iowa-you-have-shocked-the-nation-as-a-smartphone-app-derails-reporting-of-democratic-caucus-results/#gf_17'> <div class='gform_body'><ul id='gform_fields_17' class='gform_fields top_label form_sublabel_below description_below'><li id='field_17_7' class='gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible' ><h3 style="font-weight:800; font-size:34px;">Let's get started</h3> <p style="font-size:18px;">Fill out this form and we'll contact you with information about marketing with Little Village!</p></li><li id='field_17_4' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label gfield_label_before_complex' for='input_17_4_3' ></label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name has_last_name no_suffix gf_name_has_2 ginput_container_name gfield_trigger_change' id='input_17_4'> <span id='input_17_4_3_container' class='name_first' > <input type='text' name='input_4.3' id='input_17_4_3' value='' aria-label='First name' tabindex='2' aria-invalid="false" placeholder='First name'/> <label for='input_17_4_3' >First</label> </span> <span id='input_17_4_6_container' class='name_last' > <input type='text' name='input_4.6' id='input_17_4_6' value='' aria-label='Last name' tabindex='4' aria-invalid="false" placeholder='Last name'/> <label for='input_17_4_6' >Last</label> </span> </div></li><li id='field_17_5' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_17_5' ><span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_5' id='input_17_5' type='text' value='' class='large' tabindex='6' placeholder='Company name' aria-required="true" aria-invalid="false" /></div></li><li id='field_17_3' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_17_3' ><span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_email'> <input name='input_3' id='input_17_3' type='text' value='' class='large' tabindex='7' placeholder='Your email address' aria-required="true" aria-invalid="false"/> </div></li><li id='field_17_8' class='gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_' ><label class='gfield_label' for='input_17_8' >Name</label><div class='ginput_container'><input name='input_8' id='input_17_8' type='text' value='' /></div><div class='gfield_description'>This field is for validation purposes and should be left unchanged.</div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_17' class='gform_button button' value='SUBMIT' tabindex='8' onclick='if(window["gf_submitting_17"]){return false;} window["gf_submitting_17"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_17"]){return false;} window["gf_submitting_17"]=true; jQuery("#gform_17").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=17&amp;title=&amp;description=&amp;tabindex=1' /> <input type='hidden' class='gform_hidden' name='is_submit_17' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='17' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_17' value='WyJbXSIsIjlmNzc1YTEyZmZjNmYyODk5Mzk0NDM3ZjRlOGYyZDNmIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_17' id='gform_target_page_number_17' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_17' id='gform_source_page_number_17' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="188"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_17' id='gform_ajax_frame_17'>This iframe contains the logic required to handle Ajax powered Gravity Forms.</iframe> <script type='text/javascript'>jQuery(document).ready(function($){gformInitSpinner( 17, 'https://littlevillagemag.com/wp-content/plugins/gravityforms-asdf111aasdfffs-nope/images/spinner.gif' );jQuery('#gform_ajax_frame_17').load( function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_17');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_17').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;if(is_form){jQuery('#gform_wrapper_17').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_17').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_17').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_17').offset().top); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_17').val();gformInitSpinner( 17, 'https://littlevillagemag.com/wp-content/plugins/gravityforms-asdf111aasdfffs-nope/images/spinner.gif' );jQuery(document).trigger('gform_page_loaded', [17, current_page]);window['gf_submitting_17'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_17').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_17').offset().top);jQuery(document).trigger('gform_confirmation_loaded', [17]);window['gf_submitting_17'] = false;}, 50);}else{jQuery('#gform_17').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [17, current_page]);} );} );</script><script type='text/javascript'> if(typeof gf_global == 'undefined') var gf_global = {"gf_currency_config":{"name":"U.S. Dollar","symbol_left":"$","symbol_right":"","symbol_padding":"","thousand_separator":",","decimal_separator":".","decimals":2},"base_url":"https:\/\/littlevillagemag.com\/wp-content\/plugins\/gravityforms-asdf111aasdfffs-nope","number_formats":[],"spinnerUrl":"https:\/\/littlevillagemag.com\/wp-content\/plugins\/gravityforms-asdf111aasdfffs-nope\/images\/spinner.gif"};jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 17) {if(typeof Placeholders != 'undefined'){ Placeholders.enable(); }} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script><script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [17, 1]) } ); </script>