Camila is an application to help lost pets get home using artificial intelligence and the help of people.
Inspiration
Often, when pets go missing, people help by posting sighting reports in groups or on social media. The problem is that these reports get lost among multiple groups or posts scattered over time, making it very difficult to find any report related to the whereabouts of a lost pet. The solution that the Camila project proposes to this problem is to provide a search tool specialized in locating the reports with the highest probability of matching the pet. Camila was my pet since childhood, and it is because of it that I love pets and she inspires me to help them.
What it does
Camila provides a search for reports using artificial intelligence, proximity, presence, and relationship to the search text. It provides you with the most relevant reports to help you locate your pet more easily. With Camila, you can report your lost pet so that others can help locate it by searching and matching it with other pets they may have seen.
How we built it
Camila was built as a responsive web application using React, TypeScript, TanStack Router, TanStack Query, Mapbox, and Supabase. PostGIS restricts results to the visible map area, while pgvector supports semantic similarity between searches and reports.
GPT-5.6 analyzes report descriptions and photos in the background to generate structured physical attributes and a consistent canonical description. Reports remain available while this analysis is being processed.
For semantic searches, eligible reports are ranked using:
- 60% semantic similarity;
- 25% lexical overlap;
- 10% geographic proximity;
- 5% recency.
The canonical descriptions and text searches are converted into 1,536-dimensional embeddings using text-embedding-3-small. These embeddings allow Camila to find reports that are conceptually related even when users describe the same pet using different words.
Challenges we ran into
One of the main challenges was combining semantic similarity, exact words, location, and recency without allowing distant or irrelevant reports to dominate the results. We solved this by treating the visible map area as a strict geographic boundary before ranking reports.
Another challenge was processing reports with artificial intelligence without delaying publication. We implemented a background queue with version checks, retries, and protections against outdated analysis overwriting newer report information.
Accomplishments that we're proud of
We created a complete experience where people can publish reports, search a specific geographic area, and explore the same ranked results through a synchronized map and list.
We are also proud that Camila does not claim to automatically identify a pet. Instead, it transparently surfaces the most relevant community reports so that people can review them and decide whether they may be related.
What we learned
We learned that semantic search becomes more useful when it is combined with lexical matching and geographic context rather than used alone.
We also learned how to separate immediate user actions from background AI processing, allowing the application to remain responsive while maintaining reliable and current analysis.
What's next for Camila
The next step is to help relevant reports reach people proactively rather than requiring them to repeat searches.
We plan to add opt-in alerts for saved geographic areas, broader multilingual search support, stronger community moderation, and workflows for shelters, veterinary clinics, and rescue organizations.
Built With
- codex
- geospatial-search
- gpt-5.6
- hybrid-search
- image-search
- mapbox
- multimodal-ai
- openai
- pgmq
- pgvector
- postgis
- postgresql
- react
- realtime
- semantic-search
- serverless
- shadcn
- tailwind
- text-embedding-3-small
- typescript
- vite
- zod
Log in or sign up for Devpost to join the conversation.