Independent Build / 03 · Geospatial & Predictive Intelligence

Kumpaw: Offline-First Fishing Solunar & Marine Intelligence

Designing and engineering an offline-first marine intelligence and social catch-logging platform for Southeast Asian anglers, combining harmonic tide curves, solunar feeding physics, and marine forecasts into a precomputed 0–100 fishability index running at zero ongoing infrastructure cost.

0–100
Precomputed Kumpaw Index Score
O(1)
Edge-Cached Read Latency
100%
Offline Water-Edge Reliability (Drift)
$0/mo
Ongoing Backend Infra Cost
01 / Cultural & Domain Problem

The "Kumpaw" Epidemic Across Southeast Asia

In Southeast Asian fishing culture (Malaysia, Singapore, Indonesia), the word "kumpaw" is both a badge of honor and a collective grief: it refers to the experience of spending an entire day fishing and returning home completely empty-handed.

Today, most anglers rely on basic generic tide tables designed for commercial shipping. They look at a static high-tide peak and guess when fish will bite. But fish feeding activity is governed by an intricate collision of variables: water movement velocity, barometric pressure fluctuations, water temperature, lunar transit angles, and solunar minor/major windows.

I designed Kumpaw to replace crude tide guessing with real predictive intelligence: taking complex marine physics and condensing it into a single, actionable 0–100 score per fishing spot per 3-hour window.

Kumpaw Real-Time Marine Tide Curve and Prime Bite Solunar Window
Exhibit 1.0 · Kumpaw live marine conditions: 1.1m low tide curve, prime bite window indicator, and real-time wind/pressure telemetry for Gerbang Nusajaya.
02 / Mobile Systems Architecture

The Water-Edge Mandate: Offline-First by Construction

Anglers do not fish in air-conditioned cafes with 5G connectivity. They fish in remote mangrove estuaries, offshore wooden jetties, and deep sea boats where mobile connectivity drops to zero. A conventional cloud-first mobile app that expects an internet connection is completely useless at the water's edge.

I architected Kumpaw around an uncompromising offline-first principle:

  • Drift (SQLite) Local Store: Every catch log, spot coordinate, and session note is written directly to a local encrypted SQLite database on the device.
  • Idempotent Client-Generated UUIDs: All database primary keys are generated on-device using random UUIDv4. When network connectivity returns, the local sync queue syncs records to Supabase PostgreSQL without id collisions or roundtrip latency.
  • Offline Map Tiles: Integrated flutter_map with OpenStreetMap vector caching, allowing anglers to navigate secret fishing spots and marine depth contours even when completely offline.
03 / Algorithmic Engine

The Kumpaw Index: Precomputed O(1) Reads

Calculating fishability requires heavy mathematical processing: solving harmonic tide equations, querying oceanic swell models, and cross-referencing lunar elevation angles. Running these calculations dynamically when a user opens the app would burn server CPU and cause sluggish loading times.

I engineered a precomputed conditions pipeline:

  • Background Cron Aggregation: Using Supabase pg_cron and pgmq (message queues), workers poll Open-Meteo Marine APIs and compute local astronomical tide charts every 6 hours.
  • The 0–100 Weighted Formula: The algorithm weighs 4 primary environmental forces:
    1. Tidal Current Flow (35%): Fish bite when water moves; slack high and low tides score poorly, while mid-tide velocity peaks score highest.
    2. Solunar Lunar Phase (25%): Major feeding windows align with overhead and underfoot lunar transit times.
    3. Barometric Tendency (20%): Rapidly dropping pressure shuts down fish activity; stable or gently rising pressure triggers feeding frenzy.
    4. Swell & Water Clarity (20%): Turbid sea states and extreme wave heights reduce strike rates for visual predatory species (e.g. Barramundi, Trevally).
  • O(1) Edge Caching: Calculated scores are stored in a partitioned Postgres table and cached at Cloudflare Edge. When an angler opens a spot, the forecast loads instantly in under 50 milliseconds.
Kumpaw Catch Index, Weather and Air Pressure Telemetry
Exhibit 2.0 · The Kumpaw Catch Index engine: synchronized hourly fish activity index, thermal gradient, rain probability, and barometric pressure curves.
04 / Spatial & Social Moat

PostGIS Geospatial Engine & Tekong Directory

Generic apps fail because marine conditions vary drastically across short distances. A sheltered mangrove creek in Pontian behaves completely differently from an open offshore reef in Desaru just 60km away.

  • PostGIS Spatial Indexing: Using PostgreSQL spatial extensions, Kumpaw matches anglers to verified fishing spots using bounding-box spatial queries (ST_DWithin).
  • Tekong & Kolam Directory: A verified marketplace indexing licensed boat captains (Tekong) and commercial pay-lakes (Kolam) across Johor and Singapore, complete with real win rates and bait recommendations.
  • The Catch-Log Moat: Anglers log catches (species, weight, rig setup) as well as blank "kumpaw" days. Over time, community verification tunes the predictive formula for specific local spots, building an impenetrable regional data moat.
05 / Cloud Infrastructure

Cloudflare R2 Media & Zero-Cost Infrastructure

High-resolution catch photos are the lifeblood of fishing communities, but image hosting can quickly bankrupt an independent bootstrapped venture.

  • Cloudflare R2 Zero-Egress Storage: Angler catch photos are uploaded directly to a Cloudflare R2 bucket via pre-signed URLs generated by Supabase Edge Functions.
  • Edge Image Resizing: A lightweight Cloudflare Worker intercepts image requests, converting heavy mobile camera uploads (often 12MB JPEGs) into compressed WebP thumbnails on the fly.
  • \$0/mo Operational Baseline: By combining Supabase free-tier compute, Cloudflare R2 zero-egress policies, and Open-Meteo open weather feeds, Kumpaw operates with zero ongoing fixed infrastructure overhead.
06 / Architectural Principles

Engineering for the Physical World

  • Minimise moving parts over money: The binding constraint on a solo builder is cognitive surface area and 3am production incidents. Choosing PostgreSQL to handle relational data, geospatial queries, cron jobs, and message queues in a single engine prevented multi-vendor integration hell.
  • Design the expensive path as precomputed reads: By decoupling complex environmental data ingestion from the user request path, the client remains screamingly fast even on 3G network edges.
  • Local culture is the best product wedge: Framing the product around the regional concept of "kumpaw" built instant viral resonance that sterile global tide applications could never replicate.