All work

Product & engineering case study

Bodrum Flow: product and software development

As Bodrum Flow’s founder and developer, I work on its mobile app, website and content infrastructure. This covers event data collection, AI-assisted processing, review and distribution.

Founder & DeveloperiOS / Android / WebVisit Bodrum Flow
Bodrum Flow's English web interface with event discovery and programme filters
Bodrum Flow's iOS event page with details, calendar, directions and contact actions
The web and iOS product, September 2026. Screens show the product at that time.
iOS + Android downloads
3,200+
Registered accounts
2,200+
Published event records
15,000+

Product snapshot / Event records include past and upcoming events. Downloads and accounts measure different things.

01 / Bodrum Flow

Product experience and content infrastructure

Event information is spread across social posts, venue programmes and submitted posters. Bodrum Flow brings it into a multilingual mobile and web product, with a content workflow for structuring information from different sources and keeping it up to date.

My development work covers user interfaces, structured data, AI-assisted content processing and operational tools. The examples below explain the technical decisions and controls within these systems.

Mobile app and website

The React Native and Expo app supports saved plans, venue following and direct event actions. The Next.js web product provides an immediate way to discover and share programmes. Content is presented in Turkish, English, German and Russian.

English venue programme page with upcoming events and direct contact options
English iOS experience page with the schedule, provider information and booking enquiry action
Real product screens captured on 5 September 2026. Dates and availability belong to that capture.

02 / How I work

From source content to structured event data

Social posts, stories and submitted images contain event information in different formats. Processing converts this content into structured records while retaining source information and extraction context.

  1. 01

    Capture

    Source posts, Stories and submitted posters or videos.

  2. 02

    Interpret

    OCR and multimodal extraction, with the source context.

  3. 03

    Validate & review

    Date and identity checks, guarded updates and review paths.

  4. 04

    Use in the product

    Structured records for discovery and editorial distribution.

Review and correction remain part of the workflow. Automated processing does not imply that every result is ready to publish.

03 / Approach

Technical decisions and why they matter

Extraction & data quality

Information extraction and source validation

The BF_InstaScrab ingestion pipeline combines OCR, image context and multimodal extraction. Deterministic rules then normalise dates, programme layouts and event identity, retaining the evidence behind the structured result.

For Stories, publication time and capture time are separate. A reference such as ‘tonight’ must be grounded in source identity and timing evidence. Unresolved dates can be flagged for review.

Event identity

Identity-aware event merging

Matching venue, day and time is not enough to move media between events. Performer conflicts or uncertain identity can block a transfer, and a duplicate-review label alone does not authorise it.

Allowed merges use guarded database operations with update preconditions and lineage. Locked records stay protected. The aim is to avoid silently attaching another event's poster or video.

Reliability

Content processing that can recover from interruptions

A durable local spool stores captured work before processing. Atomic writes and job claims preserve ownership, while recovery logic can requeue abandoned work when the available timing evidence is reliable.

Retries have increasing delays and limits. These mechanisms let ingestion resume after interruptions without treating every failure as a reason to start again.

AI & editorial controls

Model output and publication controls

The moderation system combines image and text evidence with structured model output. Code then checks venue, date and conflict rules. A proposed publication can be held for review when those checks fail.

Review fingerprints and a durable ledger keep unchanged evidence from triggering the same work repeatedly. New evidence or an operator can reopen a case, while record and cost budgets constrain each run.

Intake & distribution

Processing incoming WhatsApp content

FlowBot, the WhatsApp intake service, pairs posters, videos and captions that arrive in different orders, then stores their context in a processing queue. It also preserves captions received while a video is being processed.

A separate editorial interface supports day and night event selections. Editors choose the records; server and database checks reject unpublished, flagged or incorrectly dated entries before saving the selection.

The technologies I use

Mobile experienceReact Native / Expo
An iOS and Android app for discovery, saved plans and event actions.
Web experienceNext.js / TypeScript
Public discovery, shareable venue programmes and multilingual pages.
Content workflowsPython / Node.js / multimodal models
Capture, extraction, validation, messaging intake and operational jobs.
Records & controlPostgreSQL / Supabase
Structured content, guarded updates, queue records and editorial checks.
Earlier product version

Product history

Bodrum Flow: early web prototype

Bodrum Flow’s first web prototype focused on multilingual event and venue discovery, representing an earlier stage of the current mobile and web product.

Development areas under consideration

I am considering broader content coverage, more personalised discovery and easier information updates for local businesses. I assess priorities using what I learn from product usage and operations.

Back to other projects

Explore BRICK PMS

Contact

Let’s talk about what you’re building or trying to grow.

If you’re exploring a new product, market or partnership, looking to strengthen an existing business, or seeking a practical solution to a problem, I’m open to a conversation.

Contact me on LinkedIn