(Note: I don’t usually write original material for this site. If I do, it’s for one very good reason: The thing I am writing about is good, I like it, and, bereft of an outlet to cover it for, I am compelled to cover it here.)
I often marvel at reviews whose authors’ reactions diverge from my own; it’s not that they like the movie when I don’t, or don’t like the movie when I do, as much as it’s how they like, or dislike, the movie that I dislike, or like. Sometimes the cases my peers make in the opposite direction of the case I would make for a given movie have logic to them. I may not agree with the conclusion, but I can’t fault the expression of their opinion, or the rationality of their argument. Other times – many, many other times – there is no argument made at all. Instead, there’s just dismissal, or misapprehension of the point, or “let me speak to your manager” style complaints, or a combination of the three.
Chris Skotchdopole’s Crumb Catcher has a high hit rate on Rotten Tomatoes, if you want to use Rotten Tomatoes as a gauge for whether or not a given movie is any good or not*. But the negative notices aggregated on that site speak volumes on the relative grasp of what the film is trying to accomplish, even among its positive notices. Popularly qualified as a home invasion film, and less commonly (but far more egregiously) categorized as a horror film, Crumb Catcher is a slippery piece of work – genre cinema seemingly made in defiance of easy labelling, where the lines between workaday conflict and antagonism are clear, but morality remains murky.
The movie has an obvious heavy, of course: John Spinelli (John Speredakos), a man afflicted by a horseshoe hairline and a severe inferiority complex that might actually be a persecution complex (though one does tend to bleed into the other). John has an idea worthy of Shark Tank: The Crumb Catcher™, a device that performs exactly the function it promises in its name, for whatever that means to anyone who hasn’t seen the film and thus lacks a frame of reference. It is not, of course, a good idea, and we know this before we see the gadget in action because John’s pitching strategy is, as the kids put it these days, “sus,” perhaps even “cringe.” John does not invite investors to attend a product demo by their own volition. Instead, he stalks them at their honeymoon rental house and forces them to sit through one.
The investors are Shane (Rigo Garay) and Leah (Ella Rae Peck), just married, happily from one angle, anxiously from another, glumly from another still. Crumb Catcher nests in the jumbled threads of their relationship, which ties the professional to the personal; Leah is publishing Shane’s book, a memoir about his childhood and his absentee slash alcoholic father, who Leah didn’t even invite to their wedding. There is tension between the lovebirds. In theory, a quiet night in a remote location, ensconced in modern, chic interior design, with nothing to interrupt them from post-nuptial bouncy-bouncy, should help them recalibrate and reconnect. Weddings are high intensity occasions. So are book tours. Plumbing one’s upbringing when the upbringing is defined by painful memories isn’t exactly relaxing, either. The couple needs a breather, something they never get, not only because John crashes their party, but because the film comprises tight angles and close-ups, giving neither Shane, nor Leah, nor John, nor Rose (Lorraine Ferris), John’s accomplice and long-suffering wife, room for air. It’s one thing for the victims to suffocate in the close confines of a hostage situation. It’s another for the villains to suffocate with them.
Skotchdopole is judicious with tone. Crumb Catcher keeps up its guard even as Shane and Leah let down theirs to one another; we sense the impending danger of John, who shows up at their middle-of-nowhere spot ostensibly to give them the top layer of their wedding cake, which they left at their reception site. (Leah doesn’t want it, a subtle expression of reserved feelings about the marriage that Skotchdopole wisely maintains as subtext.) What we don’t see, exactly, is what “danger” means coming from a guy who belongs to the same genus of “pathetic” as Gil Gunderson or Milklin. In a parallel universe’s horror version of Crumb Catcher, he’s a torture goon. In this universe’s version, he’s a fuck-up and a doofus, and a few other things clabbered together as signs of “toxic masculinity.” John is a man, but he is not “toxic.” He’s deluded, sad, ignorant, and, yes, threatening as a consequence of each.
Without giving away the film’s substructure, built from the past 8 years of current events and breaking news and email bulletins, it is plain that Crumb Catcher understands John as a product of sociopolitical mechanics he has no power over. Skotchdopole, who wrote the film with Garay and Larry Fessenden, and thus understands John better than nearly anyone else, and Speredakos, who understands John as well as Skotchdopole on account of playing him, does not pardon John’s transgressions; he’s a menacing weirdo with laughable entrepreneurial instincts. He does display empathy for the character, and Speredakos tackles that knotty character brief with zeal. You want to take pity on John, after a time, which is exactly what opportunists like him want. Crumb Catcher inhabits the space between his opportunism and his rancor, where we know the pity we feel is the fodder he feeds to Shane and Leah, and who knows how many other folks he’s pulled the same fucking stunt on before, and in which Skotchdopole taps a vein of excrutiating discomfort.
This may be why a chunk of viewers and journalists mistake the film as horror: Sitting through John’s clumsy attempt at salesmanship, which reads more as intimidation than persuasion, is unbearable, in the wonderful way that any thriller worth its salt can be. Crumb Catcher is a prickly, deeply malcontent movie. It is not supposed to feel “good.” It is not an invitation to consider our connection to our fellow man, or to reflect on our own intimacies. It is a glimpse at what depths desperate people sink to in the pursuit of ambition, however comically, bleakly, tragically misguided that ambition is; it’s an exercise in fat-free, economical storytelling, too, where nothing is wasted, and simplicity is key. “Simple,” of course, gives Skotchdopole nothing to hide behind. Every second of footage counts. Judging by Crumb Catcher‘s steady, nervous pace, he knows it. The film registers as jittery in quieter moments where peril isn’t imminent. The rest of the time, it hits like a heart attack.
*As remarked on by a certain director I spoke with for another piece about another movie: It is not. Stop using Rotten Tomatoes as a consumer goods report.
{"id":"2","mode":"form","open_style":"in_place","currency_code":"USD","currency_symbol":"$","currency_type":"decimal","blank_flag_url":"https:\/\/agcrump.work\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/agcrump.work\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":500,"top_media_type":"featured_image","featured_image_url":"https:\/\/agcrump.work\/wp-content\/uploads\/2025\/10\/image-asset-179x200.webp","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":false,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Leave a tip","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"A Constant Visual Feast","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Support My Work:","form_subtitle":"","currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thanks for supporting my work!","payment_confirmation_title":"A Constant Visual Feast","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much do you want to tip?","initial":{"instruction_type":"normal","instruction_message":"How much do you want to tip?"},"empty":{"instruction_type":"error","instruction_message":"How much do you want to tip?"},"invalid_curency":{"instruction_type":"error","instruction_message":"How much do you want to tip?"}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"Want to make a recurring tip?"},"success":{"instruction_type":"success","instruction_message":"Want to make a recurring tip?"},"empty":{"instruction_type":"error","instruction_message":"Want to make a recurring tip?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}