FloatChat
Makes a heavyweight scientific archive answerable in plain language, from a cached store that fits on one machine.
project overview
FloatChat is an interactive oceanographic data exploration platform built around the ARGO float archive. The application converts large NetCDF float datasets into cached Parquet stores for low-latency querying, then provides natural-language search, spatial filtering, statistical analysis, and scientific visualisations through a Streamlit interface. Users can explore float activity through Plotly maps, Cesium 3D views, depth profiles, Hovmöller diagrams, comparison tools, and chat-driven analytics focused on the Indian Ocean region.
architecture
An offline preprocessing pipeline converts ARGO NetCDF datasets into compact Parquet caches optimised for interactive querying. The Streamlit frontend coordinates visual exploration tabs, cached analytics, session state, and the chat interface. The query pipeline combines rule-based parsing with geocoding and statistical intent detection to translate natural-language prompts into temporal, spatial, and parameter filters against cached DataFrames. Matching results generate charts, summaries, profiles, and comparison views directly from the dataset. Optional fallback layers integrate DuckDuckGo snippets and locally hosted Ollama models when cached data cannot satisfy a query.
constraints
- archive weight — raw NetCDF is too heavy to query interactively; conversion is a precondition, not an optimization
- query vocabulary — questions arrive as geography and oceanography ('PSAL near Lakshadweep'), not as column names
- offline-first — the explorer must answer from cache; external services are enrichment, never dependency
tradeoffs
- pre-converted Parquet cache over live archive queries: NetCDF deserialization overhead exceeded conversational latency under interactive use, so that cost moved out of the request path into an offline step
- rule-parsed queries with LLM enrichment over LLM-first chat: deterministic answers from data, generative answers only at the edges
- Streamlit over a custom frontend: exploration breadth shipped ahead of interface ownership
failure notes
- the fallback chain is explicit and ordered: cached data first; DuckDuckGo snippets when the cache cannot answer; locally generated context only if an Ollama model is actually running — each rung degrades, none pretend
infrastructure
python · streamlit · plotly · leaflet · cesium · netcdf → parquet · ollama (optional)
engineering reasoning
Designed around an offline-first architecture so scientific queries resolve directly from cached datasets instead of depending on external APIs or live archive access. Deterministic parsing and statistical analysis remain the primary execution path, while LLM-based responses are treated as optional fallback layers rather than core infrastructure.
future work
- > broader geographic focus beyond the Indian Ocean defaults
- > deeper BGC parameter comparisons