Inspiration
Dogs communicate subtle changes long before people have enough context to describe them clearly. PawLens was inspired by the gap between a guardian's uneasy intuition and the concrete observations a veterinarian or trainer can act on.
What it does
PawLens makes behavior logging conversational. A user describes what they see; the assistant can assess urgency, ask for the smallest missing detail, suggest low-risk next steps, and save observations to a dog profile when the user requests it.
How we built it
The project uses a React widget and an MCP server deployed to Cloudflare Workers. The server uses the OpenAI Responses API for structured behavioral reasoning, Durable Objects for session state, and Cloudflare KV for profiles and observation history. JSON Schema and Zod keep tool inputs and model outputs constrained and testable.
Challenges and lessons
The hard part was not producing an answer—it was making every answer safe, useful, and inspectable. We designed the model contract around three outcomes (success, partial, and urgent), avoided diagnoses, and added a Durable Object recovery path so an existing MCP session continues working after hibernation. The project also reinforced that an AI product needs real end-to-end checks: tool contracts, session behavior, widget integration, and documented live evaluation.
Built With
- cloudflare
- cloudflareworkers
- codex
- gpt
- hono
- json
- kv
- mcp
- react
- typescript
- vite
- vitest
- zod
Log in or sign up for Devpost to join the conversation.