Acikbahce.com
Turkey's AI-powered agri-tech intelligence platform — connecting local farmers directly with consumers via semantic geospatial search, computer vision-based produce quality assessment, Turkish NLP-driven discovery, and a real-time supply-demand matching engine that forecasts regional produce availability and pricing across 81 provinces.
The platform's farm discovery layer is built on PostGIS-extended PostgreSQL, storing producer polygons, field boundaries, and crop declarations as geospatial geometries. The search API executes ST_DWithin proximity queries with composite indexes on (geom, crop_type, harvest_window) for sub-20ms response times across 500,000+ registered field records.
MapLibre GL JS (WebGL-rendered, vector tile-based) powers the interactive map layer, streaming farm tile data from a custom PMTiles server on Cloudflare R2. Producers are rendered with cluster aggregation at low zoom and individual polygon outlines at field level — with real-time availability overlays updated from the harvest scheduling model.
Product and producer search is powered by BERTurk — a BERT-base model pretrained on 35GB of Turkish text corpora — fine-tuned on Acikbahce's proprietary annotated agricultural catalogue (120,000 produce listings across Turkish dialectal naming conventions). This resolves the critical problem that Turkish produce names vary heavily by region: the same vegetable may have 6–8 dialectal names across Anatolia, Aegean, and Black Sea regions.
Product embedding vectors (768-dimensional) are stored in pgvector with HNSW index. Hybrid BM25 + dense retrieval with cross-encoder reranking resolves both exact-match queries ("Bursa şeftalisi") and semantic queries ("taze organik yaz meyvesi"). The RAG pipeline augments search results with LLM-generated seasonal availability summaries grounded in the harvest calendar database.
Farmers upload produce photographs at listing creation. A custom EfficientNet-V2-L model (fine-tuned on 280,000 annotated Turkish produce images across 340 crop varieties) performs:
• Multi-label quality grade classification (Extra, Class I, Class II, Industrial) per EU/Turkish Standards Institute grading rules.
• Defect detection: surface blemish, bruising, size non-conformity, colour deviation — localised via Grad-CAM attention maps returned to the farmer UI.
• Freshness estimation: a regression head predicts remaining shelf life in days from visual features, used to rank time-sensitive listings in search results.
Inference runs on NVIDIA H100 SXM5 via NVIDIA Triton Inference Server with TensorRT INT8 quantisation, achieving 4,800 image classifications/second per GPU at 97.3% top-1 accuracy on the held-out test set.
A Temporal Fusion Transformer (TFT) forecasts weekly produce supply and demand at (crop, province, week) granularity across all 81 Turkish provinces. Input features include:
• Historical transaction volumes and price series from the platform.
• Weather data (MERRA-2 reanalysis): temperature, precipitation, growing-degree-days by province.
• Turkish Agricultural Ministry crop declaration data.
• Turkish CPI food sub-index and Istanbul wholesale market (Hal) price benchmarks.
• Seasonal and holiday encodings (Ramadan demand shifts, harvest festival patterns).
Forecasts are generated weekly via vLLM batch inference on the TFT model with continuous batching across all province-crop pairs (38,000+ active pairs). The demand forecasting layer enables dynamic pricing recommendations to producers — surfacing optimal harvest timing and target regions for maximum realised price.
Consumer purchase requests and producer availability updates flow through Apache Kafka topics (partitioned by province). A Flink stateful streaming job performs continuous producer-consumer matching: when a consumer submits a basket request, Flink queries the current availability state store and emits ranked producer matches within 200ms — factoring distance, quality grade, freshness score, and price.
Real-time direct messaging between consumers and producers is implemented via WebSocket (Socket.IO) with Redis Pub/Sub as the message broker — ensuring horizontal scaling across multiple application nodes. Message delivery receipts and typing indicators are handled via Redis sorted sets with TTL expiry.
- Backend
- PHP 8.3 (Symfony) + Node.js microservice layer for WebSocket and event streaming.
- Databases
- PostgreSQL 16 + PostGIS + pgvector (primary), Redis 7 (cache + pub/sub), TimescaleDB (time-series pricing).
- Infrastructure
- GKE Autopilot (Kubernetes), Cloud CDN, Cloudflare (WAF + DDoS + R2 object storage).
- AI Inference
- NVIDIA H100 SXM5, Triton Inference Server, TensorRT INT8, vLLM.
- Mobile
- Progressive Web App (PWA) with offline-capable service worker for rural low-connectivity use.