A dryer-troubleshooting portfolio prototype: from repair data and retrieval experiments to a working Android app.
Describe a dryer symptom, retrieve relevant iFixit troubleshooting guides, and work through source-attributed checks. The project demonstrates data preparation, semantic search, evaluation, error analysis, and application integration. It is a focused learning project, not a finished multi-appliance repair service.
- Local sentence embeddings from
all-MiniLM-L6-v2and cosine similarity. - Hybrid ranking: 80% semantic similarity + 20% lexical TF-IDF similarity.
- Brand filtering: generic queries get generic guides; recognized brands allow generic and matching-brand guides.
- An Android interface with repair checks, original-source links, and saved search results.
- Electric, Gas, and "I'm not sure" choices when opening the general heating guide.
The model is pretrained; it was not trained or fine-tuned for this project. The app retrieves existing repair content rather than generating answers with an LLM.
The dataset contains 18 troubleshooting guides, selected from 59 wiki pages in a 100-result iFixit search snapshot.
| Evaluation | Semantic only: Top-1 | Hybrid: Top-1 |
|---|---|---|
| 12 challenge cases used during hybrid selection | 67% | 75% |
| 12 subsequent validation cases | 83% | 100% |
These are small, manually labeled guide-retrieval tests. They do not measure repair success or prove general accuracy. The comparison scripts evaluate ranking before the later brand filter; current backend behavior has separate regression tests. Once a challenge set is used to select a method, it is no longer an untouched test set.
The useful story is the reasoning: simplifying embedding text improved the development results; harder queries exposed remaining errors; cause-text re-ranking did not help; lexical evidence improved the ranking. See the evaluation summary and experiment reports.
- Follow the Windows setup guide to start the backend and connect an Android phone.
- Read the architecture to understand the data and search flow.
- Use the demo script for a short portfolio recording.
- Consult the repository map for what each file is for and why it is kept.
ApplianceIQ/
README.md Project introduction
requirements.txt Python environment snapshot
backend/ FastAPI search and guide navigation
android/ Kotlin / Jetpack Compose app
data_pipeline/ Collection, processing, experiments, fixtures, tests
docs/ Setup, design, evaluation, demo, and project records
Only dryers are covered. The API can still return a dryer guide for an unrelated or vague query: no validated abstention/domain-routing rule is deployed. Similarity scores are not confidence probabilities. Brand recognition uses a small fixed list. Type confirmation applies to the general heating router, not every directly retrieved heating guide. The app currently uses a local backend and development HTTP configuration; saved results can be stale and branch navigation requires a connection.
Future appliance expansion would need appliance context, new data review, and fresh evaluations. It is deliberately outside this portfolio milestone. The prototype has not established the correctness or safety of repairs across models.
Original ApplianceIQ code and documentation are available under the MIT License. Third-party repair content is excluded from that grant: repair records preserve iFixit page links and CC BY-NC-SA 3.0 attribution, which the app displays. See data provenance for the scope and source metadata. The MIT license does not grant commercial-use rights to the iFixit content.