# CatchLength

- **Event:** [Meta Global AI Developer Hackathon](https://cerebralvalley.ai/e/meta-ai-developer-hackathon)
- **When:** Oct 26, 12:00 PM – Nov 4, 9:00 PM (EST)
- **Where:** Online
- **Team:** [Harindu Fonseka](https://cerebralvalley.ai/u/harindu)
- **GitHub:** https://github.com/Harindulk/catchlength
- **Demo video:** https://www.youtube.com/watch?v=fL8lDu9dg2E
- **Gallery:** https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery
- **Page:** https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/4426

CatchLength measures fish from a 20-second phone video, and refuses when it isn't sure.

The problem: Sri Lanka's national aquatic research agency, NARA, already measures coastal tuna from photographs for IOTC reporting (IOTC-2025-WPM16-10rev1). Staff photograph fish on a board, then draw a line on every fish and name its species by hand. Their own paper names handling time as the bottleneck. CatchLength does that measuring.

How it works: lay the fish next to two printed marker tiles and film for 20 seconds. Muse Spark 1.3 runs the job as an agent, picking one of ten tools per turn. It checks the clip is usable, picks the sharpest frame and works out how many fish to expect. SAM 3.1 outlines every fish. If the plan and SAM disagree on the count, Spark recounts the outlines itself before anything is measured. Spark then places snout and fork points on each fish, and each length is measured two ways: along SAM's outline and between Spark's points.

Why you can trust a number: the checks sit inside the tools, so the model can't skip them.
- Bent or blurry tiles: the scale is refused and nothing is measured.
- Spark's points must land within 10 mm of SAM's outline, or the fish goes to a fisheries officer.
- Lengths must agree across three frames.
- A report that cites a rule outside the sourced rule pack is refused, and the agent has to fix it.
- A Muse Wonder 1.0 verifier takes a last look and can only send fish to the officer, never change a number.
- An officer signs off last, in English, Sinhala or Tamil.

Every run ends with an audit receipt: the clip's fingerprint, the models, every check, the cost and the rule behind each decision. The seller gets a size receipt with a weight estimate and its source.

Field test: I bought 12 fish at a shop in Colombo, measured each with a tape, and ran the agent on the clips without showing it the tape. A fish lying flat on the calibration plane read 33.2 cm against 33.3 cm on the tape, and every fish the agent couldn't prove went to the officer instead of being guessed. The README has the full numbers and their limits.

Built solo, 27 Oct to 4 Nov 2026. Open source under MIT, with 46 tests.
Live console (replays recorded runs on the real models): https://links.harindu.dev/catchlength/

## More from Meta Global AI Developer Hackathon

- [gecko](https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/4423)
- [pendiva](https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/4424)
- [Lone Striker Studio](https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/4425)
- [Meeting Copilot](https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/4427)
- [Glint – Parvathi Nalla](https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/4428)
- [Alkahwaji](https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/4429)

---

Markdown version of https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/4426. Site index for agents: https://cerebralvalley.ai/llms.txt · full text: https://cerebralvalley.ai/llms-full.txt
