Rust backend plus Svelte frontend for extracting Item Master Database fields from product package images.
Pick one provider.
OpenRouter:
export AI_PROVIDER=openrouter
export OPENROUTER_API_KEY=sk-or-...
export OPENROUTER_MODEL=openai/gpt-4.1-miniOptional OpenRouter attribution:
export OPENROUTER_SITE_URL=https://your-app.example
export OPENROUTER_APP_NAME="Maverick IMDB Auto-Fill"OpenAI direct:
export AI_PROVIDER=openai
export OPENAI_API_KEY=sk-...
export OPENAI_MODEL=gpt-4.1-miniRun locally:
cargo run -- serve --host 127.0.0.1 --port 8080Health check:
curl http://127.0.0.1:8080/api/healthExtraction endpoint:
curl -X POST http://127.0.0.1:8080/api/extract \
-F "images=@Hackathon Materials/product images/S221234199_550719011.jpg" \
-F "images=@Hackathon Materials/product images/S221234199_550719013.jpg"The backend uses:
- Tesseract for local OCR.
- zbarimg for local barcode scanning.
- OpenAI Responses API or OpenRouter Chat Completions for image + evidence extraction.
- Strict Structured Outputs for the 10 IMDB fields.
API docs:
- Responses API: https://platform.openai.com/docs/api-reference/responses/create
- Images and vision: https://platform.openai.com/docs/guides/images-vision
- Structured Outputs: https://platform.openai.com/docs/guides/structured-outputs
- OpenRouter Chat Completions: https://openrouter.ai/docs/api/api-reference/chat/send-chat-completion-request
- OpenRouter image inputs: https://openrouter.ai/docs/guides/overview/multimodal/image-understanding
- OpenRouter structured outputs: https://openrouter.ai/docs/guides/features/structured-outputs
cd frontend
cp .env.example .env
npm install
npm run devSet frontend/.env:
VITE_API_BASE_URL=http://localhost:8080Backend:
- Render Docker web service.
- Use
Dockerfileandrender.yaml. - For OpenRouter, set
AI_PROVIDER=openrouterand addOPENROUTER_API_KEYas a secret env var. - For OpenAI direct, set
AI_PROVIDER=openaiand addOPENAI_API_KEYas a secret env var.
Frontend:
- Vercel.
- Set
VITE_API_BASE_URLto the Render backend URL.
The live app returns these 10 IMDB fields:
barcode
category_type
segment_type
manufacturer
brand
product_name
weight_and_unit
packaging_type
country_of_origin
marketing_messages
Unknown fields remain empty strings.