Inspiration

Recall Handoff keeps a recall notice, the checks a person reports completing, and the remaining verification steps together across sessions. It is designed for the moment when someone needs to leave a review and inspect a product label later. Returning with the same review ID after a server restart restores the saved notice and completed checks, so an open review can continue at its first unfinished step.

Consider a person who reads a possible recall at a desk while the product is stored elsewhere. They review the notice conditions, record that check, and leave the session before manufacturer verification. On return, they need the same notice snapshot and the unfinished verification step. This is the design scenario behind the project; the comparison with an official website and a saved checklist is the next user study.

What it does

The app gives each confirmed local review an ID. The saved record contains the chosen notice, retrieval provenance, user-reported steps and notes, and its open or stopped status. Loading that ID after the server restarts restores the same record from SQLite. An open review can record the next verification step. Choosing Stop closes the review; its history remains available for inspection.

The public-data path searches the U.S. Consumer Product Safety Commission's recall feed[1] by product name, notice title and manufacturer, then merges matching notice IDs. The user reviews the source and confirms which notice to save. Partial query failures remain visible. The person verifies the product and uses the manufacturer's official route for any remedy.

An optional local Qwen model[2] ranks exact excerpts from the saved notice. Each suggestion resolves to original source characters. Saving, recording and restoring a review work without the model.

How I built it

A browser frontend calls a real Model Context Protocol (MCP) server over Streamable HTTP, negotiating protocol version 2025-11-25. Its tools search notices, save a confirmed review, record an action, stop a review and restore a saved record. Python validates the workflow; SQLite preserves the notice and event history. Confirmed actions and ordered steps make the saved status inspectable.

This is an independent-client simulation for the Alexa+ track, following the official FAQ[3]. It uses its own web interface and MCP server. The gated Alexa+ developer products are outside this implementation.

Qwen2.5-0.5B-Instruct runs offline on a CPU from a pinned revision through PyTorch and Transformers. It ranks notice excerpts; it does not receive the person's completed-step history. Code supplies the associated check prompt. The source includes setup instructions, dependency versions, model hashes, development tests and reproduction steps.

Challenges and decisions

Keeping state trustworthy required explicit boundaries. Saving needs confirmation, repeated actions are rejected, and a person cannot report later workflow steps before earlier ones. Stopping preserves the record without creating a manufacturer contact, remedy request or successful outcome.

Searching a single CPSC field missed notices returned through other fields in development, so I combined three query routes and retained their provenance. Conflicting versions of one notice stop the combined result for inspection.

The first free-form model response failed JSON parsing. I changed the task to ranking existing excerpts. In the recorded Linux run, the model selected excerpt A, which was also the first available excerpt. That result supports the optional source-selection feature, while leaving its added value to be tested separately.

What works now

The October 22 Linux development records cover a real public CPSC query, MCP calls, an offline Qwen ranking, a confirmed save, recorded checks and stopping. A separate restart run restored the same record; 20 development tests accompanied that version. On October 23, Windows verification passed 24 development tests. The expanded suite then passed 31, adding synthetic-mode isolation and a real MCP restart check that restores an open review and allows its next step to be recorded.

The updated demonstration is an edited sequence of actual browser views, with pauses shortened. It uses clearly labeled fictional notices and the real MCP server and SQLite. After a confirmed save and recorded check, the server processes were terminated and restarted. The browser restored the same open review ID, notice snapshot, completed check and note; a further fictional check was recorded before closing with Stop. This demonstration uses no live CPSC retrieval or model inference.

What I learned and what comes next

The useful unit of continuity is the notice together with the person's recorded work. A saved link identifies a source; the handoff also keeps the snapshot, performed checks, stop reason and outstanding steps in one record.

I will compare the official website plus a saved checklist with Recall Handoff on the same notices and product details, using both uninterrupted and interrupted tasks. The comparison will count wrong notice or condition selections, repeated checks, missing next actions, and total effort, including setup, saving and any model delay. Failed and unresolved tasks will remain in the results.

The model comparison will use the same handoff flow with and without excerpt ranking. If ranking adds effort without improving the next check, the source-only flow will remain the default.

References

[1] U.S. Consumer Product Safety Commission, public recalls API. https://www.saferproducts.gov/RestWebServices/Recall

[2] Qwen, “Qwen2.5-0.5B-Instruct,” revision 7ae557604adf67be50417f59c2c2f167def9a775, Apache-2.0. https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct

[3] Amazon Developer and Devpost, “Frequently Asked Questions.” https://amazonappdev2026.devpost.com/details/faqs

Built With

Share this project:

Updates

Submission history