Skip to content

About

Engineering-grade platform for well log intelligence: Featuring automated LAS parsing, interactive curve visualization, and context-aware AI petrophysical interpretation.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

Β 

History

76 Commits

Folders and files

Repository files navigation

πŸ›’οΈ LAS Analyzer: Engineering-Grade Well Log Intelligence

React Node.js PostgreSQL AWS CI/CD

Transforming raw subsurface data into actionable geological insights. LAS Analyzer is a full-stack platform designed to bridge the gap between complex petrophysical data and modern AI reasoning.


🌎 Live Environment


🏁 Getting Started

If you are an evaluator or developer looking to run this project locally, please jump to our dedicated guide above.


πŸ”₯ Project Highlights & Innovations

πŸ” 1. Smart LAS Ingestion Engine

Unlike generic data parsers, this system is engineered specifically for the Log ASCII Standard (LAS) format.

  • Header Intelligence: Automatically mines critical metadata like WELL, FIELD, API Number, and Company from the LAS header.
  • Metadata Indexing: Pre-calculates statistical envelopes (min, max, mean) for every curve during ingestion. This allows the AI to have instant "Contextual Awareness" without re-processing entire datasets for every query.
  • Hybrid Storage Architecture: Combines the durability of Amazon S3 (for raw file preservation) with the agility of PostgreSQL (for structured data access and performance).

πŸ“Š 2. High-Performance Petrophysical Visualizer

Visualization is the fundamental tool for geological reasoning.

  • Synchronized Multi-Track Views: Render multiple curves side-by-side on a shared, unified depth axis.
  • Precision Interaction: Built-in support for zooming, panning, and interval isolation to focus on specific reservoirs or zones of interest.
  • Modern UI/UX: A clean, "Glassmorphism" dashboard built with Tailwind CSS and Plotly.js, optimized for high-density data interpretation.

🧠 3. Context-Aware AI Petrophysicist

We've integrated the world's most sophisticated reasoning model (Claude 3.5 Sonnet) directly into the workflow.

  • Automated Lithology Insights: Identifies rock types, fluid contacts, and potential anomalies based on numerical curve signatures.
  • Persistent AI Assistant: A specialized chatbot that understands the current well you are viewing. It doesn't just guess; it checks the actual statistics and metadata of the active well to answer your questions.

πŸ—οΈ Technical Architecture

πŸ“ System Design Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         PRESENTATION LAYER                          β”‚
β”‚                                                                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  File Upload     β”‚  β”‚  Visualization   β”‚  β”‚  AI Insights     β”‚   β”‚
β”‚  β”‚  Component       β”‚  β”‚  Dashboard       β”‚  β”‚  Panel           β”‚   β”‚
β”‚  β”‚                  β”‚  β”‚                  β”‚  β”‚                  β”‚   β”‚
β”‚  β”‚  - Drag & Drop   β”‚  β”‚  - Plotly Charts β”‚  β”‚  - Analysis      β”‚   β”‚
β”‚  β”‚  - Validation    β”‚  β”‚  - Curve Select  β”‚  β”‚  - Statistics    β”‚   β”‚
β”‚  β”‚  - Progress      β”‚  β”‚  - Depth Range   β”‚  β”‚  - Insights      β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚              Chatbot Interface (Bonus)                       β”‚   β”‚
β”‚  β”‚  - Message Input/Display                                     β”‚   β”‚
β”‚  β”‚  - Context-Aware Responses                                   β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                    β”‚
                              HTTP/REST API
                                    β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         APPLICATION LAYER                           β”‚
β”‚                                                                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                      API Gateway / Router                    β”‚   β”‚
β”‚  β”‚  - CORS Middleware                                           β”‚   β”‚
β”‚  β”‚  - Request Logging                                           β”‚   β”‚
β”‚  β”‚  - Global Error Handling                                     β”‚   β”‚
β”‚  β”‚  - Input Validation (Custom)                                 β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                    β”‚                                β”‚
β”‚       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚       β”‚                            β”‚                          β”‚     β”‚
β”‚  β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ό ┐   β”‚
β”‚  β”‚ File Service β”‚  β”‚  Data Service         β”‚  β”‚  AI Service     β”‚   β”‚ 
β”‚  β”‚              β”‚  β”‚                       β”‚  β”‚                 β”‚   β”‚
β”‚  β”‚ - Parse LAS  β”‚  β”‚ - Query Measurements  β”‚  β”‚ - Interpret     β”‚   β”‚
β”‚  β”‚ - Upload S3  β”‚  β”‚ - Filter by Depth     β”‚  β”‚ - Analyze       β”‚   β”‚
β”‚  β”‚ - Validate   β”‚  β”‚ - Aggregate Stats     β”‚  β”‚ - Chat          β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚         β”‚                      β”‚                         β”‚          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                      β”‚                         β”‚
          β”‚         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚
          β”‚         β”‚                           β”‚          β”‚
          β”‚         β”‚    Direct Data Access     β”‚          β”‚
          β”‚         β”‚    (via pg-pool)          β”‚          β”‚
          β”‚         β”‚                           β”‚          β”‚
          β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β”‚
          β”‚                      β”‚                         β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         PERSISTENCE LAYER                           β”‚
β”‚                                                                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚  β”‚   Amazon S3      β”‚       β”‚      PostgreSQL Database        β”‚     β”‚
β”‚  β”‚                  β”‚       β”‚                                 β”‚     β”‚
β”‚  β”‚  Bucket:         β”‚       β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚     β”‚
β”‚  β”‚  las-files/      β”‚       β”‚  β”‚  wells                    β”‚  β”‚     β”‚
β”‚  β”‚                  β”‚       β”‚  β”‚  - metadata & header      β”‚  β”‚     β”‚
β”‚  β”‚  Object Key:     β”‚       β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚     β”‚
β”‚  β”‚  {wellId}/       β”‚       β”‚                                 β”‚     β”‚
β”‚  β”‚  original.las    β”‚       β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚     β”‚
β”‚  β”‚                  β”‚       β”‚  β”‚  curves                   β”‚  β”‚     β”‚
β”‚  β”‚  Access:         β”‚       β”‚  β”‚  - curve definitions      β”‚  β”‚     β”‚
β”‚  β”‚  - IAM Role      β”‚       β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚     β”‚
β”‚  β”‚  - Pre-signed    β”‚       β”‚                                 β”‚     β”‚
β”‚  β”‚    URLs          β”‚       β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚  β”‚  measurements             β”‚  β”‚     β”‚
β”‚                             β”‚  β”‚  - depth-indexed values   β”‚  β”‚     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚  β”‚  - indexed on (curve,     β”‚  β”‚     β”‚
β”‚  β”‚  Claude API      β”‚       β”‚  β”‚    depth)                 β”‚  β”‚     β”‚
β”‚  β”‚                  β”‚       β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚     β”‚
β”‚  β”‚  - API Key in    β”‚       β”‚                                 β”‚     β”‚
β”‚  β”‚    Backend ENV   β”‚       β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚     β”‚
β”‚  β”‚  - Rate Limits   β”‚       β”‚  β”‚  interpretations          β”‚  β”‚     β”‚
β”‚  β”‚  - Error Retry   β”‚       β”‚  β”‚  - AI-generated insights  β”‚  β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚     β”‚
β”‚                             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Technology Stack

Layer Tech Choice Why?
Frontend React 19 + Vite Minimal bundle size, blazing fast HMR, and modern hooks.
Styling Tailwind CSS Utility-first approach for consistent, premium aesthetics.
Backend Node.js (Express) High concurrency for I/O bound parsing tasks.
Database PostgreSQL 16 Relational power for complex well-to-curve modeling.
AI Intelligence Claude 3.5 Sonnet Superior technical reasoning compared to other LLMs.
Infrastructure Docker + AWS Industry-standard reliability and container portability.

πŸ“‚ Project Structure

  • /frontend: React application, UI components, and visualization logic.
  • /backend: Express API, LAS parsing engine, and database logic.
  • /docker-compose.yml: Local and production container orchestration.
  • /.github/workflows: Fully automated Build -> Push -> Deploy pipelines.
  • run_locally.md: Comprehensive developer onboarding guide.

🚒 Continuous Deployment (CI/CD)

This project follows professional DevOps practices:

  • Build: Every push to main triggers a GitHub Action to build a production Docker image.
  • Storage: Images are securely stored in Amazon ECR.
  • Deployment: The pipeline SSHes into an AWS EC2 instance and orchestrates a fresh rollout using Docker Compose.
  • Frontend: Automatically synchronized and served via Vercel with global edge CDN.

πŸ“½οΈ Demo Presentation

[Placeholder: Google Drive Link(will add after making the video)]


βœ… Deliverables Checklist

  • Core Architecture: Decoupled Full-Stack design via REST API.
  • Data Ingestion: Multi-stage parsing and S3/Postgres storage.
  • Visualization: Interactive Track-based Plotly.js charts.
  • AI Interpretation: Deep petrophysical analysis via Anthropic AI.
  • Bonus Feature: Specialized context-aware Well Chatbot.
  • Cloud Deployment: Live on AWS and Vercel.
  • Documentation: Standard README and Local Setup guides.

πŸ‘€ Project Information

Author: adldi07 (Adesh Kumar | IIT ISM Dhanbad) Project Status: 🟒 Production Ready / Full Feature Complete


Designed and engineered for One-Geo as a demonstration of high-performance full-stack data applications.

About

Engineering-grade platform for well log intelligence: Featuring automated LAS parsing, interactive curve visualization, and context-aware AI petrophysical interpretation.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages