Data engineering for companies whose data has outgrown Excel
When your reporting takes four hours, your numbers disagree between departments, and nobody can answer a question that spans two systems — that is not a BI problem. It is a data engineering problem.
Most companies discover data engineering the same way: someone asks a question that should be simple — what did we actually spend per tonne last quarter across all three plants — and it takes two weeks and three arguments to answer. The data exists. It is in the ERP, the historian, the weighbridge system, a shared drive and two spreadsheets, and there is no place where those things have ever been joined correctly.
Our data engineering practice exists to build that place. We design and operate the pipelines, storage and modelling layers that turn scattered operational data into something you can ask questions of — reliably, at whatever scale you actually have, and with enough governance that two people asking the same question get the same answer.
The work spans the full range. At one end, batch pipelines pulling from an ERP and a plant historian into a warehouse for daily reporting. At the other, streaming architectures ingesting tens of thousands of sensor readings a second into a lakehouse, with quality gates, watermarking and exactly-once semantics. We run both in production for clients in cement, steel, solar, manufacturing, logistics and commerce.
What distinguishes this practice is that we have operated these systems, not just built them. The difference shows up at 2 AM when a pipeline fails and someone has to know whether to replay, skip or escalate — and it shows up in design choices that seem pedantic until the day they save you.
Architecture: the medallion lakehouse, and why we default to it
Our default architecture is a medallion lakehouse on open table formats — Apache Iceberg or Delta Lake — with three layers that each have a clear contract.
Bronze holds raw ingested data, immutable and exactly as received, with source metadata and ingestion timestamps. Nothing is cleaned here. This layer exists so that when a downstream calculation is questioned six months later, you can prove what the source actually said, and so that a logic change can be replayed from history rather than re-extracted from a system that may no longer hold it.
Silver holds conformed data: typed, deduplicated, with business keys resolved and slowly changing dimensions handled. This is where a plant tag becomes a named measurement with units, where a customer in the ERP is reconciled with the same customer in the CRM, and where quality rules are enforced.
Gold holds business-facing marts, modelled for the questions people actually ask — production by product by shift, cost per tonne, customer profitability, availability and utilisation. These are the tables BI tools and analysts touch, and they are designed for query performance and comprehensibility rather than normalisation purity.
Open table formats matter because they decouple storage from compute. Your data sits in your own object storage in an open format that Spark, Trino, Snowflake, Databricks, Athena and DuckDB can all read. You are not locked into a vendor whose pricing you will renegotiate under duress in three years.
Streaming when it earns its complexity
Streaming is genuinely harder to build and operate than batch, and a great deal of it is built for reasons that do not survive scrutiny. The honest test is whether a decision changes because the data arrived in seconds rather than hours. A control-room alert on kiln temperature deviation: yes. A monthly management report: no.
Where it does earn its place we build on Kafka for durable, replayable ingestion and Spark Structured Streaming for processing, with the details that separate a demo from a production system: watermarking for late and out-of-order events, exactly-once semantics through idempotent writes and checkpointing, schema evolution handled without breaking consumers, dead-letter queues for records that fail validation, and backpressure that degrades gracefully rather than falling over.
For plant environments we usually pair this with a store-and-forward buffer at the edge, so a network interruption between plant and cloud never loses readings — they queue locally and back-fill automatically when the link returns. This is not an optional refinement; in Indian industrial settings the link will drop, and a system that loses data during those windows is a system nobody trusts.
In practice
Every engagement starts with a conversation, not a proposal template.
Thirty minutes with a senior engineer. You leave with an architecture sketch and an honest cost range, whether or not you hire us.
Batch pipelines and orchestration
Most value in most organisations still comes from well-run batch. We orchestrate with Apache Airflow — self-hosted, or on Cloud Composer, MWAA or Astronomer depending on your cloud — with a set of conventions that make hundreds of pipelines manageable.
Every DAG has an owner, an SLA, a retry policy with backoff, and an alerting route that reaches a human who can act. Tasks are idempotent so a rerun is always safe. Backfills are a first-class operation rather than a manual script. Dependencies are expressed as data availability rather than clock time, so a downstream job waits for its input instead of running at 3 AM and hoping.
We also treat pipeline observability as a deliverable. You should be able to see, for any table, when it last updated, how many rows it received, whether that is normal for this day of the week, and which upstream job produced it. Freshness and volume anomalies are where data quality problems announce themselves, usually days before anyone notices a wrong number in a report.
Data quality and contracts
The fastest way to destroy trust in a data platform is to publish a number that is wrong once. After that every subsequent number is questioned, and the platform gets used as a starting point for a spreadsheet rather than as an answer.
So we enforce quality at the boundary. Every ingestion has a contract: expected schema, nullability, value ranges, uniqueness constraints, referential expectations and freshness thresholds. Records failing the contract go to quarantine with the specific reason attached rather than being silently dropped or, worse, silently coerced. The owning team gets an alert with the failing rows, and there is a defined path to correct and reprocess.
We also implement reconciliation as a routine operation: row counts and control totals compared between source and target for every critical pipeline, published as a report that finance and operations can see. This is unglamorous and it is the single practice that most reliably produces a platform people trust.
Wrong data is worse than no data
A pipeline that fails loudly is an operational issue. A pipeline that succeeds with wrong numbers is a business issue that surfaces in a board meeting. We design for the former: fail fast, quarantine visibly, never silently coerce.
Cost engineering — the part most vendors avoid discussing
Cloud data platforms are priced in ways that punish careless design. A single badly written query scanning an unpartitioned table can cost more than a month of well-designed workload. We have taken over estates where 60% of the warehouse bill came from three scheduled queries that nobody had reviewed since they were written.
Our cost work is systematic. Partition and cluster tables on the columns people actually filter by. Compact small files, which are the silent killer of both cost and performance in lakehouses. Size warehouses and clusters to the workload with auto-suspend configured aggressively. Materialise expensive aggregations that are computed repeatedly. Move cold data to cheaper storage tiers with lifecycle policies. And attribute cost by team and by pipeline so the conversation about spend is specific rather than a general demand to reduce it.
Across recent migrations and optimisations the median reduction has been 41% of warehouse spend with no loss of capability — and usually with better query performance, because the same design choices that reduce scanned bytes also reduce latency.
| Lever | Typical saving | Effort |
|---|---|---|
| Partitioning and clustering on real filter columns | 20–45% | Low — a schema change and a backfill |
| Small-file compaction on lakehouse tables | 15–30% | Low — a scheduled maintenance job |
| Auto-suspend and right-sized warehouses | 10–25% | Very low — configuration |
| Materialising repeated aggregations | 10–20% | Medium — modelling work |
| Storage lifecycle tiering | 5–15% | Low — policy configuration |
| Killing unused pipelines and tables | 5–20% | Low — but needs someone to look |
Governance, lineage and who is allowed to see what
Once a platform holds data from HR, finance and operations together, access control stops being optional. We implement role-based access at the table and, where needed, column and row level — so a plant manager sees their plant, a regional head sees their region, and salary columns are visible to a defined group only.
Lineage is captured automatically so any figure can be traced back through its transformations to the source records. This matters for two reasons: when someone challenges a number you can show the derivation, and when a source system changes you can see immediately what downstream reports are affected. We use catalogue tooling appropriate to the platform — Glue Data Catalog, Unity Catalog, or an open-source catalogue for self-managed estates.
For clients in regulated sectors we add retention policies, deletion workflows and access audit trails sufficient to satisfy India's data protection framework and, where relevant, customer contractual obligations.
“Before this we had three versions of production numbers depending on who you asked. Now there is one, everyone can trace how it was calculated, and the arguments have moved on to what to do about it.”
How we engage
Most engagements start with a two to three week assessment: what data exists, where it lives, what questions the business cannot currently answer, and what the current reporting actually costs in person-hours. That produces a target architecture and a phased plan, and you own that document whether or not you continue with us.
Build engagements then run in phases, each delivering a working slice — usually one subject area end to end, from ingestion through to a report someone actually uses. We resist the temptation to build the whole platform before delivering anything, because platforms built that way are frequently wrong in ways that only usage reveals.
Many clients then keep us on to operate the platform, either fully managed or as a support tier behind their own team. Data platforms are not a project that finishes; sources change, volumes grow, and the questions people ask evolve.
Every engagement starts with a conversation, not a proposal template.
Thirty minutes with a senior engineer. You leave with an architecture sketch and an honest cost range, whether or not you hire us.
What is actually included in data engineering
Each of these is something we have shipped and still support in production — not a list of things we could do if asked.
Lakehouse architecture
Iceberg or Delta on S3, ADLS or GCS with medallion layering, time travel and open compute access.
Streaming ingestion
Kafka and Spark Structured Streaming with watermarking, exactly-once semantics and dead-letter handling.
Batch pipelines
Airflow-orchestrated extraction, transformation and load with SLAs, retries and backfill as a first-class operation.
Warehouse modelling
Dimensional and wide-table modelling in Snowflake, BigQuery, Redshift or Databricks SQL, with dbt for transformations.
Plant and IoT data
OPC, Modbus and MQTT ingestion with edge buffering, time-series storage and tag-to-KPI modelling.
Data quality
Contracts, validation, quarantine, reconciliation reporting and freshness monitoring.
Cost optimisation
Partitioning, compaction, warehouse sizing, materialisation and per-team cost attribution.
Governance and lineage
Catalogues, role and row-level security, automated lineage and access audit trails.
The stack we actually use for this
Chosen for what your team can maintain in three years, not for what looks impressive in a proposal.
Processing
- Apache Spark
- Spark Streaming
- Kafka
- Flink
- dbt
- Python
Storage
- Apache Iceberg
- Delta Lake
- S3
- ADLS Gen2
- GCS
- Parquet
Warehouses
- Snowflake
- BigQuery
- Redshift
- Databricks SQL
- Athena
- ClickHouse
Orchestration
- Airflow
- Cloud Composer
- MWAA
- Azure Data Factory
- Dagster
From first conversation to something in production
Two-week slices, a demo you can share every alternate Friday, and no phase where you are waiting without seeing progress.
Assessment
Source inventory, question inventory, current reporting cost and a target architecture — two to three weeks.
Foundation
Storage, catalogue, orchestration, CI and observability set up before the first pipeline.
First subject area
One domain end to end — ingestion, quality, modelling, a report in use — within six to eight weeks.
Scale out
Additional sources and domains added on the established pattern rather than reinvented each time.
Optimise
Cost, performance and reliability reviewed against real usage, with changes measured.
Operate
Managed running with SLAs, or a support tier behind your own platform team.
Everything hands over. No lock-in, ever.
Source code in your Git organisation, infrastructure in your cloud account, domains in your name and documentation written for the next team rather than for us. If you part ways with us in year three, a competent engineer should be able to take over in a fortnight.
Deliverables checklist
- Target architecture document and phased roadmap
- Infrastructure as code for the entire platform
- Ingestion pipelines with documented contracts
- Medallion-layered tables with lineage captured
- Orchestration DAGs with SLAs and alerting
- Data quality dashboard and reconciliation reports
- Cost attribution and optimisation report
- Runbooks for every failure mode we can anticipate
What this typically costs
Real ranges from real projects. The variable is almost always scope and integration count — the calculator will get you closer in two minutes.
Assessment
₹2,40,000
Understand your data estate and get a costed architecture.
- Source and question inventory
- Current cost analysis
- Target architecture
- Phased roadmap
- Tooling recommendation
Platform build
₹12,00,000 – ₹45,00,000
Build the platform and the first subject areas.
- Infrastructure as code
- Ingestion and pipelines
- Modelling and marts
- Quality and observability
- Team enablement
Managed platform
₹3,50,000 / month upwards
We run it, you use it.
- 24×7 monitoring
- SLA-backed response
- Ongoing pipeline development
- Cost management
- Quarterly architecture review
All figures exclude GST. Fixed-price options available on defined scope. Build your own estimate →
The questions clients actually ask
Including the ones where the honest answer is that you may not need us. If your question is not here, call +91 70033 91355 — you will speak to an engineer, not a call handler.
Most organisations of any size end up with a lakehouse, which is genuinely both. Raw and semi-structured data lands in object storage in an open table format; structured, modelled data is queried through a warehouse engine over the same files. That gives you cheap storage for everything, expensive compute only when queried, and no vendor lock-in on the data itself. Pure warehouse-only makes sense if all your data is relational and modest in volume; pure lake-only leaves your analysts without a good query experience.
Snowflake if your workload is predominantly SQL analytics and you value operational simplicity and easy data sharing. Databricks if you have significant Spark, machine learning or streaming work alongside SQL, and a team comfortable with notebooks. BigQuery if you are on Google Cloud and want serverless with no cluster management at all. We have production experience with all three and the recommendation depends on your workload mix, your existing cloud and your team's skills — not on which vendor we prefer.
Yes. We build fully on-premise platforms for clients with data residency or security requirements — Spark on Kubernetes, MinIO or HDFS for storage, Iceberg tables, Trino for query, Airflow for orchestration. This is exactly the architecture underlying our AURA product for plant reporting, which runs entirely inside the customer network with no internet path. It costs more in operational effort than managed cloud, and we will be straight about that trade-off.
The first subject area — one domain from ingestion through to a report people actually use — should be live within six to eight weeks of the build starting. We deliberately avoid the pattern where a platform is built for six months before anyone can query anything, because that pattern reliably produces platforms that answer the wrong questions.
That is the normal case, not the exception. We have extracted from ERPs whose vendor no longer exists, historians with tag naming conventions known only to one retired engineer, and databases with no foreign keys. The approach is patient: profile the data to discover its real structure, interview the people who use it, document what we find as we go, and build defensively so that surprises fail visibly rather than corrupting downstream numbers.
Yes, and we build with that in mind — conventional tooling, documented patterns, infrastructure as code, and runbooks. Typical enablement is pairing through the build plus focused workshops on Airflow, Spark and the modelling conventions. Several clients now run their platforms independently with us on a quarterly advisory. That is a good outcome and we design for it.
Why being local to you matters here
Kolkata has a large and genuinely strong data engineering talent pool — much of it working for global capability centres rather than for regional industry. The result is that a cement group in West Bengal often finds it easier to hire a Spark engineer than to find a partner who understands both Spark and a kiln. We sit precisely in that gap, and it is why our industrial work concentrates here.
For data engineering consulting in Kolkata and across India, call +91 70033 91355 or WhatsApp us. The assessment can start with a two-hour session on what you currently cannot answer.
Services that pair with this
View everythingTell us what is slowing your business down.
A 30-minute call with a senior engineer — not a salesperson. You leave with an architecture sketch and an honest cost range, whether or not you hire us.
Direct line
+91 70033 91355Mon–Sat · 9:30 AM – 7:30 PM IST · Sealdah, Kolkata