Week 7/40 — CatAtlas: Same-Cat Matching v0
Tech stack (this week)
Frontend: React + TypeScript
Backend: FastAPI + SQLite
“AI”: explainable heuristic ranking (v0 matching)
New topic: retrieval + ranking with explanations.
Why this week?
I moved from a list of sightings to relationships: suggest when two sightings might be the same cat using simple, explainable logic.
What I shipped
For each sighting:
trigger a matching process
get a ranked list of possible matches
show “why” (simple explanations)
Live site (copy/paste):
https://orange-disco-pj4g9w4w46prh96pw-5173.app.github.dev/The One Feature Rule
One feature: same-cat suggestions with reasons.
Not doing: computer vision, embeddings, “true” identity resolution.
Follow along (code it yourself): This week’s task
Task: Implement “possible matches” using explainable ranking.
Choose 2–3 signals (example):
description word overlap
location proximity (if you have it)
time proximity (if you have it)
Write a scoring function that produces:
score: numberreasons: string[](human-readable)
Create an endpoint:
GET /sightings/{id}/matches→ returns top N candidates
Render matches under a sighting as:
“Possible matches (v0)”
score + reasons
Success criteria: You see a ranked list and can explain why the top match is ranked highest.
Extra help & hints
“Explainable AI” trick: every score component must generate a reason.
Start with tiny datasets (5–10 sightings) to validate logic.
Ranking matters more than absolute score.