AI-First Lost & Found Platform β Reuniting people with their belongings through intelligent matching
LostLink is a modern Lost & Found platform that uses AI as its core feature to automatically match lost items with found items. The platform runs on a $0 budget using only free-tier services, and processes AI locally on a GPU for maximum privacy and cost efficiency.
π€ AI-Powered Matching β Automatically matches lost/found items using embeddings, visual analysis, and semantic understanding
πΈ Smart Image Analysis β Extracts item details, colors, text (OCR), and object detection from photos
πΊοΈ Location-Aware β Geospatial search with configurable radius matching
π Real-time Alerts β Push notifications via Firebase when matches are found
π Cross-Platform β One Flutter codebase for Android and Web
π Privacy-First β All AI processing happens locally, no data sent to third parties
π¨ Beautiful UI β Material Design 3 with dark mode support and smooth animations
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LostLink Platform β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Flutter App βββββΊβ Node.js API βββββΊβ AI Service β β
β β (Android) β β (Express) β β (FastAPI) β β
β β (Web) β β β β β β
β ββββββββββββββββ ββββββββ¬ββββββββ ββββββββββββββββ β
β β β
β ββββββββΌββββββββ β
β β MongoDB β β
β β (Atlas M0) β β
β ββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Layer
Technology
Purpose
Mobile/Web
Flutter 3.x
Cross-platform UI
State Management
Riverpod
Reactive state
Navigation
go_router
Declarative routing
Backend
Node.js + Express
REST API
Database
MongoDB Atlas (M0)
Document storage
Image Storage
Cloudinary (Free)
CDN + transformations
AI Service
Python + FastAPI
Local GPU processing
Embeddings
sentence-transformers
Semantic similarity
Vision AI
DETR + BLIP
Object detection + captioning
OCR
EasyOCR
Text extraction from images
Push Notifications
Firebase Cloud Messaging
Real-time alerts
Maps
OpenStreetMap + flutter_map
Location services
LostLink/
βββ flutter_app/ # Flutter mobile & web app
β βββ lib/
β β βββ core/ # App-wide utilities
β β β βββ config/ # Environment, routes, theme
β β β βββ constants/ # App constants, colors
β β β βββ network/ # API client, interceptors
β β β βββ utils/ # Helpers, extensions
β β βββ features/ # Feature modules
β β β βββ auth/ # Authentication
β β β βββ home/ # Main feed
β β β βββ posts/ # Create/view posts
β β β βββ search/ # Search & filters
β β β βββ alerts/ # Notifications
β β β βββ profile/ # User profile
β β β βββ settings/ # App settings
β β β βββ splash/ # Splash screen
β β β βββ onboarding/ # Onboarding flow
β β βββ shared/ # Shared widgets
β βββ pubspec.yaml
β
βββ backend/ # Node.js REST API
β βββ src/
β β βββ config/ # DB, Cloudinary config
β β βββ models/ # Mongoose schemas
β β βββ routes/ # Express routes
β β βββ middleware/ # Auth, validation, errors
β β βββ services/ # Business logic
β β βββ server.js # Entry point
β βββ package.json
β βββ .env.example
β
βββ ai_service/ # Python AI microservice
β βββ models/ # AI model wrappers
β β βββ embedder.py # Sentence embeddings
β β βββ vision.py # Object detection + captioning
β β βββ ocr.py # Text extraction
β β βββ extractor.py # Item attribute extraction
β βββ utils/ # Utilities
β β βββ prompts.py # AI prompts & categories
β βββ main.py # FastAPI entry point
β βββ requirements.txt
β βββ .env.example
β
βββ README.md
Flutter 3.10+ with Android SDK
Node.js 20.x LTS
Python 3.10+ with pip
MongoDB Atlas account (free M0 tier)
Cloudinary account (free tier)
Firebase project (for FCM)
NVIDIA GPU (optional, for faster AI)
1οΈβ£ Clone the Repository
git clone https://github.com/yourusername/lostlink.git
cd lostlink
cd ai_service
# Create virtual environment
python -m venv venv
# Activate (Windows)
.\v env\S cripts\a ctivate
# Activate (macOS/Linux)
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Configure environment
cp .env.example .env
# Edit .env with your settings
# Run the service
uvicorn main:app --host 0.0.0.0 --port 8001 --reload
cd backend
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Edit .env with your MongoDB URI, JWT secret, Cloudinary keys, etc.
# Run development server
npm run dev
# Run production server
npm start
4οΈβ£ Flutter App Setup
cd flutter_app
# Get dependencies
flutter pub get
# Run on Android
flutter run
# Run on Chrome (web)
flutter run -d chrome
# Build Android APK
flutter build apk --release
# Build Web
flutter build web --release
# Server
PORT = 3000
NODE_ENV = development
# MongoDB
MONGODB_URI = mongodb+srv://user:pass@cluster.mongodb.net/lostlink
# JWT
JWT_SECRET = your-super-secret-key-change-this
JWT_EXPIRE = 7d
JWT_REFRESH_EXPIRE = 30d
# Cloudinary
CLOUDINARY_CLOUD_NAME = your-cloud-name
CLOUDINARY_API_KEY = your-api-key
CLOUDINARY_API_SECRET = your-api-secret
# AI Service
AI_SERVICE_URL = http://localhost:8001
# Firebase (for push notifications)
FIREBASE_PROJECT_ID = your-project-id
# GPU Settings
CUDA_VISIBLE_DEVICES = 0
USE_GPU = true
# Model Settings
EMBEDDING_MODEL = sentence-transformers/all-MiniLM-L6-v2
DETECTION_MODEL = facebook/detr-resnet-50
CAPTION_MODEL = Salesforce/blip-image-captioning-base
# Rate Limits
MAX_CONCURRENT_REQUESTS = 10
REQUEST_TIMEOUT = 30
Method
Endpoint
Description
POST
/api/auth/register
Create new account
POST
/api/auth/login
Login with credentials
POST
/api/auth/refresh
Refresh access token
POST
/api/auth/logout
Logout user
POST
/api/auth/forgot-password
Request password reset
POST
/api/auth/reset-password/:token
Reset password
GET
/api/auth/me
Get current user
Method
Endpoint
Description
GET
/api/posts
Get all posts (paginated)
GET
/api/posts/:id
Get single post
POST
/api/posts
Create new post
PUT
/api/posts/:id
Update post
DELETE
/api/posts/:id
Delete post
POST
/api/posts/:id/report
Report post
POST
/api/posts/:id/bookmark
Toggle bookmark
GET
/api/posts/nearby
Get nearby posts
Method
Endpoint
Description
GET
/api/matches
Get user's matches
GET
/api/matches/unread
Get unread count
POST
/api/matches/:id/confirm
Confirm match
POST
/api/matches/:id/reject
Reject match
Method
Endpoint
Description
POST
/api/upload/single
Upload single image
POST
/api/upload/multiple
Upload multiple images
Method
Endpoint
Description
POST
/extract/text
Extract from text description
POST
/extract/image
Extract from image
POST
/extract/combined
Extract from text + images
POST
/embed
Generate text embedding
POST
/generate/caption
Generate image caption
π€ AI Matching Algorithm
The matching system uses a multi-factor scoring algorithm:
Final Score = Ξ£ (weight Γ factor_score)
Factors:
βββ Semantic Similarity (35%) β Embedding cosine similarity
βββ Category Match (25%) β Same category = full points
βββ Attribute Match (20%) β Color, brand, model overlap
βββ Location Proximity (15%) β Distance-based decay
βββ Time Relevance (5%) β Recency bonus
Score Range
Classification
85%+
Strong Match β Very likely the same item
70-84%
Good Match β Probable match, verify details
50-69%
Possible Match β Some similarities
<50%
Weak Match β Unlikely, but worth checking
Phase 2: Enhancement π§
Contributions are welcome! Please read our Contributing Guide for details.
Fork the repository
Create your feature branch (git checkout -b feature/amazing-feature)
Commit your changes (git commit -m 'Add amazing feature')
Push to the branch (git push origin feature/amazing-feature)
Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Made with β€οΈ for reuniting people with their belongings