Prompt Details
Model
(claude-5-sonnet)
Token size
4,801
Example input
[PLATFORM]: Snowflake Data Warehouse Sources: Salesforce, PostgreSQL, Stripe, HubSpot, Google Analytics Transformations: dbt + Spark Consumers: Tableau dashboards, Finance reports, Internal APIs
[STACK]: Python, SQL, Spark, dbt, Airflow, Snowflake, S3, Great Expectations, GitHub Actions
[STRUCTURE]: /ingestion /transformations /orchestration /quality /warehouse /api /docs
[AUDIENCE]: Backend software engineer transitioning into Data Engineering. Intermediate Python, beginner SQL. Available learning time: 8 hours/week.
[GOAL]: Become productive quickly, understand architecture, safely contribute new dbt models and production pipelines.
Example output
# πΊοΈ PIPELINE EXPLORER'S MAP
**Onboarding Readiness Score:** 6.5/10 | **Complexity Level:** Moderate-High | **Data Quality Checks:** 12 core checks, ~70% coverage estimated | **Time to Productivity:** 5 weeks @ 8 hrs/week | **Pipeline Stages:** 5 (ingestion β transform β quality β warehouse β publish) | **Spike Risks:** 4 identified
**30-sec summary:** Moderate-high complexity β five well-known SaaS/DB sources rather than 50+, which lowers ingestion sprawl risk, but the dual dbt+Spark transformation layer plus Airflow orchestration means real tooling breadth. Primary Challenge: SQL proficiency (you're starting from beginner SQL while the pipeline leans on window functions and incremental logic from day one). Learning Path: 5 weeks. Hidden Dependencies: 3 (Finance reports off Stripe reconciliation, Tableau off Snowflake materialized views, internal APIs off warehouse freshness).
---
# π SECTION 1 β CODEBASE ASSESSMENT
| Dimension | Rating | Why | Spike Risk |
|---|---|---|---|
| Data paradigm shift | π | Batch mindset (nightly runs) vs. your request-response backend instincts | Medium |
| SQL proficiency | π΄ | Beginner SQL meeting window functions, CTEs, incremental filters immediately | High |
| Tool ecosystem | π | dbt + Spark + Airflow + Snowflake + Great Expectations + GitHub Actions = 6 tools | Medium |
| Data volume | π‘ | Not TB-scale by default with 5 sources, but Stripe/GA can spike in row count | Low |
| Quality concerns | π’ | Great Expectations already in stack β good habit to inherit early | Low |
| CI/CD (GitHub Actions) | π‘ | New layer vs. typical Airflow-only setups β dbt CI runs need understanding | Medium |
**Domain Characteristics:** Business criticality is high β Finance reports depend on Stripe reconciliation accuracy, and Tableau dashboards are watched by non-technical stakeholders who notice stale data fast. Data volume is moderate (5 sources, not 50+), so distributed processing exists but isn't the dominant daily concern the way it would be in a 50-source shop. Hidden dependencies: internal APIs likely serve cached Snowflake views to other backend services β a transformation bug propagates further than it looks.
**Onboarding Difficulty:** MODERATE-HIGH, achievable in 5 weeks at 8 hrs/week.
- SQL is the real gate β window functions and dbt's Jinja-templated SQL will feel foreign to a backend engineer used to ORMs.
- Batch mindset shift β errors surface hours after a nightly run, not synchronously like an API 500.
- Tool count (6) creates real but manageable cognitive load given your Python background β dbt and Airflow are both Python-adjacent.
- GitHub Actions + dbt CI is a layer many onboarding guides skip; worth deliberate attention since it gatekeeps merges.
---
# ποΈ SECTION 2 β ARCHITECTURE FIRST
**High-Level Data Flow:**
Salesforce / PostgreSQL / Stripe / HubSpot / Google Analytics β **Ingestion** (API connectors + CDC replication + GA export, landing in S3) β **Staging** (raw Parquet, partitioned by date) β **Transformation** (Spark for heavy dedup/joins, dbt for business logic models) β **Warehouse** (Snowflake materialized views) β **Consumption** (Tableau, Finance reports, internal REST APIs).
**Orchestration (Airflow):** Nightly master DAG. Expect roughly 5 ingestion tasks (one per source) β transformation tasks (Spark then dbt run) β 2 quality tasks (Great Expectations suite) β 2 publish tasks (refresh materialized views, invalidate API cache). On failure: alert channel, pipeline halts, exponential backoff retry.
**CI/CD Layer (GitHub Actions):** This is new relative to the base template β expect dbt tests and SQL linting to run on every PR before merge. This is your safety net: a broken model should fail CI before it ever reaches the nightly DAG.
**Data Quality Gates:** Row counts shouldn't drop >10% day-over-day per source. No nulls in customer/key IDs. Stripe revenue figures never negative. Salesforce lead IDs match expected format. Failed validation halts the pipeline for analyst review.
**Key Concept β Partitioning:** Everything partitioned by `date`. A Spark job for `2026-07-05` only touches that day's data; Snowflake queries filtered by partition cut scan cost dramatically (unpartitioned scans on even moderate tables can turn a $5 query into a $500 one).
**Incremental Loads:** First run processes full history; subsequent runs process only new/changed rows per source, tracked via a "last synced" watermark β this is what keeps a 5-source pipeline fast instead of re-processing everything nightly.
---
# π SECTION 3 β REPOSITORY NAVIGATION
- **/ingestion** β `connectors/salesforce_connector.py`, `connectors/stripe_connector.py`, `connectors/hubspot_connector.py` (API polling, incremental sync, rate-limit handling), `connectors/postgres_replicator.py` (CDC off a read replica, never master), `connectors/ga_export.py` (Google Analytics data export API), `config/connections.yaml` (credentials via secrets manager β this is where you register the 5th source if one's added).
- **/transformations** β `dbt_project/models/staging/` (per-source cleaning, deduplication, null handling), `dbt_project/models/marts/` (business-facing models β e.g. a `fct_revenue` blending Stripe + Salesforce, a `dim_customer` as single source of truth), `dbt_project/macros/` (shared SQL templates β high blast radius, treat as senior-review territory), `spark_jobs/` (heavy dedup/join logic that's cheaper to run distributed than in dbt/Snowflake directly).
- **/orchestration** β `dags/daily_warehouse_load.py` (task order matters β wrong sequencing means stale data reaching Tableau).
- **/quality** β `expectations/*.yml` (Great Expectations suites per source/model β failed checks halt + alert).
- **/warehouse** β `views/*.sql` (materialized views joining upstream marts, indexed for BI query speed).
- **/api** β internal REST endpoints querying Snowflake views, likely with a short-TTL cache layer.
- **/docs** β look for a data lineage doc first; this answers "where did this metric come from?" faster than tracing code.
- **.github/workflows/** β not in the original template but relevant here: this is where dbt CI, SQL linting, and test-on-PR logic lives. Read this in week 1 even though it's not listed in STRUCTURE β it gatekeeps every future PR you submit.
---
# π SECTION 4 β PERSONALIZED LEARNING PATH (5 weeks, 8 hrs/week)
**Week 1 β SQL Fundamentals + Lineage (8 hrs):** Days 1-2: SQL basics refresh (SELECT/WHERE/JOIN/GROUP BY), read the data lineage doc, sketch the 5-source flow by hand. Days 3-4: window functions specifically (`ROW_NUMBER`, `SUM() OVER PARTITION BY`) since dbt marts lean on these β write 5 practice queries against a staging table. Day 5: read one full staging model SQL file end to end, annotate every clause you don't understand.
**Week 2 β dbt + Spark Basics (8 hrs):** Days 1-2: dbt fundamentals β models, refs, `dbt run`, `dbt test`. Trace one staging model's compiled SQL. Days 3-4: Spark basics via local PySpark REPL β load a sample DataFrame, run `.dropDuplicates()`, understand why Spark handles the heavy joins instead of dbt. Day 5: modify one Spark job locally (add a filter), test on a sample, don't touch production config.
**Week 3 β Orchestration + CI (8 hrs):** Days 1-2: Airflow DAG structure β trace the daily DAG task-by-task, note dependency order. Days 3-4: GitHub Actions β read the workflow file, understand what dbt CI checks on a PR, open a trivial PR (e.g. a doc fix) just to watch the pipeline run. Day 5: add a GE test locally and confirm it runs in CI.
**Week 4 β Data Quality + Debugging (8 hrs):** Days 1-3: Great Expectations β write a new expectation (e.g. Stripe revenue never negative), test locally, add to CI. Days 4-5: debugging scenario β simulate a row-count drop, trace through Airflow logs β Snowflake counts β Spark output β dbt logs, in that order.
**Week 5 β First Production Contribution (8 hrs):** Build one new staging or mart model end to end (e.g. a `stg_google_analytics_sessions` model), write its dbt tests + GE checks, open a PR, get it through CI, merge, and monitor the next nightly run through to Tableau.
---
# π¨βπ» SECTION 5 β HANDS-ON PRACTICE TASKS
π’ **Beginner (Weeks 1-2):**
1. Write a read-only query: top 10 customers by revenue from the revenue mart.
2. Add row-count logging (before/after) to one Spark dedup job β no logic change.
3. Add YAML column descriptions to one staging model β documentation only.
π‘ **Intermediate (Weeks 3-4):**
4. Fix a data quality issue: filter null customer IDs before aggregation in one mart model.
5. Add an incremental filter to a Spark job so it only processes the last 24 hours.
6. Create a new staging model for Google Analytics sessions data, following the pattern of an existing staging model.
π΄ **Advanced (Week 5):**
7. Debug a simulated pipeline failure: dbt run fails, trace root cause across Airflow/Spark/Snowflake logs.
8. Optimize a slow Tableau-facing query by adding an index to a materialized view.
9. Ship a new metric end-to-end: design it, implement as a dbt model with tests, deploy, verify in Tableau.
---
# π§ SECTION 6 β KNOWLEDGE DEPENDENCY MAP
**Prerequisite Chain:** SQL fundamentals β Data lineage understanding β dbt model reading/writing β Spark basics β Airflow orchestration β GE validation β CI/CD flow β Production debugging β Independent contribution.
**Risky Modules:** Ingestion connectors (π΄ β bugs cause duplication/data loss, always test on samples). dbt macros (π β shared logic, changes ripple everywhere, needs senior review). Airflow DAG task ordering (π β wrong sequence = stale downstream data). Snowflake materialized views (π β cached by Tableau and internal APIs, test refresh in dev first).
**Safe to Modify:** Staging dbt models (isolated blast radius). Read-only warehouse views. New GE checks (additive). Airflow task timeout/retry configs. Documentation.
---
# π¨ SECTION 7 β COMMON PITFALLS
**Pitfall 1 β Partial Stripe Sync:** Connector times out mid-sync, only partial transaction data lands. Next day's revenue mart joins incomplete data with fresh data, understating revenue. *Prevention:* validate raw row count against Stripe API expected count. *Fix:* rerun with backfill for the missing window.
**Pitfall 2 β Spark OOM on Join:** A dedup/join step across 5 sources exceeds executor memory, fails silently, pipeline halts with no new metrics. *Prevention:* partition by date, process incrementally. *Fix:* increase executor memory or reduce partition size.
**Pitfall 3 β Window Function Off-By-One:** Using `ORDER BY` instead of pure `PARTITION BY` in a dedup query causes duplicate customer rows in `dim_customer`. *Prevention:* test dedup logic on a small sample before running against full data. *Fix:* verify with a `GROUP BY ... HAVING COUNT(*) > 1` check.
**Debugging Shortcuts (in order):** Airflow UI task logs β raw row counts in Snowflake/S3 β Spark job logs (OOM/timeout?) β dbt logs (SQL error, zero rows?) β compare row counts stage-by-stage to isolate where data was lost.
---
# π SECTION 8 β MILESTONES
- **End Week 1:** Can trace the 5-source data flow, run local SQL confidently. Readiness 15%.
- **End Week 2:** Can read/modify a dbt model and a Spark job safely. Readiness 35%.
- **End Week 3:** Understands DAG structure and CI gating, can open a passing PR. Readiness 50%.
- **End Week 4:** Can write GE tests and debug a simulated failure independently. Readiness 70%.
- **End Week 5:** Has shipped one production model end-to-end and monitored it live. Readiness 85% β independent contributor.
---
# π FINAL REPORT
| Category | Score | Notes |
|---|---|---|
| Architecture Clarity | 7/10 | 5-source flow is tractable to learn fully, unlike a 50-source shop |
| Documentation Coverage | 6/10 | Assumed adequate; verify lineage doc exists and is current |
| Learning Path Quality | 8/10 | Compressed to 5 weeks given 8 hrs/week and Python background |
| Hands-on Tasks | 8/10 | Progressive blast-radius scaling well matched to SQL skill gap |
| Debugging Support | 7/10 | GE + Airflow logs give good signal; CI adds an extra early check |
**Top improvements to consider:** (1) Confirm a data lineage doc actually exists before week 1 β if not, build one first. (2) Set up a sandbox dbt target so early PRs don't risk touching shared dev schemas. (3) Since GitHub Actions CI isn't in most standard onboarding docs, write a short "what CI checks and why it failed" cheat sheet β this will save real time in weeks 3-4.
Given SQL is your steepest gap, I'd start there even before day 1 of the plan above β want me to build out a focused week-0 SQL drill set (window functions, CTEs, incremental filter patterns) tailored to what dbt models actually use?
By purchasing this prompt, you agree to our terms of service
CLAUDE-5-SONNET
Codebase Assessment.Repository Navigation Guide: Maps exactly where your ingestion, transformation, and orchestration logic lives..30-Day Daily Learning Path: Breaks down learning into structured, daily hour-by-hour milestones.Hands-on Practice Tasks: Generates safe, isolated tasks from Beginner (read-only SQL) to Advanced (shipping new dbt models).Production Survival Guide: and more
...more
Added 1 day ago
