Chinh (lelouvincx) / Weekly Report - 2026-W13

Created Mon, 25 May 2026 00:00:00 +0000 Modified Mon, 25 May 2026 06:02:25 +0000
2356 Words
  • Weekly Report — Mar 23 – Mar 28, 2026 (friday mode)

  • Work

  • Internal

  • DONE Investigate failed dbt assets in #data-ops-bot (DAT-569)

    • Triggered by bot alert in #data-ops-bot: 4 not-null tests failing (24 + 9 null rows across mart_event__drill_down and mart_event__view_underlying_data).
    • Root cause: dbt Mart Snowplow Events job ran before dbt Mart Product (which builds dim_users), causing null tenant/user IDs. Secondary bug: LEFT JOIN to internal_tenants incorrectly passed internal events when user was missing from dim_users.
    • Fix: refactored SQL to pre-extract IDs from Snowplow event properties with coalesce fallback. Wrote Notion investigation doc (DE-207) with debugging guide for juniors.
    • LEARNING The bigquery agent skill often gets trouble mapping logical (dbt) and physical table names (BigQuery). Improvement: use dynamic mapping from INFORMATION_SCHEMA (excluding dev_* in prod).
  • DONE Review Thuan’s work on DE-208 / mart_product__dataset_datamodel_dimensions (PR #845 — OPEN)

    • PR: “DAT-567: Fix PARSE_JSON syntax error in mart_product__dataset_datamodel_dimensions”. Still open, 2 rounds of review completed (Gemini code-assist also commented). Parent issue: DAT-555.
    • Notion doc (DE-208): model failed due to regex-based JSON parsing that couldn’t handle special characters. Thuan replaced with JS UDF macro (json_obj_to_arr_header). Code review identified: loss of dictionary keys via Object.values(), inconsistency with sibling models, and excessive type conversions. Changes requested.
    • Impact: low (no downstream dependencies).
  • DONE Guide Thuan to solve DAT-567 — mentored in person on dbt debugging process (check Prefect logs → run CTEs step-by-step → find root cause → propose solutions). Collected his thought process for documentation.

  • DONE Revise phase 2 of MRR problem — discussed with Hieu. After PR #812 — MERGED, problem 2.1 (missing holistics region) is fixed. Remaining: static exchange rate (1.1/1.2), domain mapping (2.2), duplicated companies (2.3). Next step: align with growth team (Quinn, Arden) on the Customer Identity Monitoring dashboard. Data alignment doc shared with RevOps to reconcile issues loaded into the warehouse.

  • DONE Review what Hieu wrote, help him communicate with growth team (2 items: dashboard alignment + currency exchange rate). After call with Quinn, agreed solution: bi.h will adopt Zoho exchange rate table (with effective date ranges) to align MRR calculations. Exchange rate is customer-grain, determined by plan version (e.g., v8d, v8g). Edge cases identified: dunned customers keep old rate, custom plan switches inherit existing rate. Waiting for Hieu to complete the exchange rate document for review.

  • DONE Create a new GitHub account for work (chinh-dm-holistics) per company request. Next: update Logseq automation to switch between credentials.

  • DONE Check back Census usage estimate to use free tier — confirmed via Fivetran billing dashboard.

  • DONE Check BigQuery’s dataframes-dbt — evaluated for potential adoption.

  • DONE Ask squad modeling why user 112390 does not exist (Slack thread) — answer from Dat Bui: shareable link and embed link pseudo users are hard-deleted when their respective links are deleted. Khanh confirmed external users remain permanently (no cleanup mechanism). Audit log not affected as long as data is in activities table, but Dat and Triet noted current tracking may not be enough — need to add tracking for creation/deletion of shareable and embed links.

  • TODO Create an agent skill for fixing data pipelines (dbt) for #data-ops-bot — planned, not started. Partially informed by DAT-569 investigation.

  • TODO Calendly data pipeline (DE-162 / DAT-283) — ongoing. Currently only demo/onboarding calls are ingested, but not 1-1, case study, customer success calls (50+ event types in total). Assessed that Calendly and ReadAI/Clari are complementary (Calendly = scheduling/booking metadata for attribution; ReadAI = call recordings for quality). Growth team needs this for sales rep performance tracking and lead categorization (call-first vs trial-first). Pending: standardize source pipeline and build unified dbt models.

  • NOTE New backlog item: Visualize schedule of all data lineage (airbyte, data import, prefect sync, dbt table-level, census/fivetran activations). Tried Google Stitch, not ideal.

  • Presales

  • DONE Onboarding call 3 with Basata — shared Date Drill use case, reported Auto Mapping Filter issue, prepared embedded dashboards document for customers.

  • DONE Share the embedded dashboards document for different customers — Huy asked in #presales-sa to work out a sample embed tutorial. Created Excalidraw diagram, built a vibe-coded demo app, and delivered Notion guide. Implementation: Basata serves 34+ medical practices needing multi-tenant analytics. Key decisions: workflow-based portals (not per-customer), RLP via organization_slug user attribute, single JWT payload switching between portals. HTTPS required for local dev (CSP frame-ancestors blocks HTTP origins). Shared demo repo: holistics/holistics-embed-demo. Tai gave feedback: diagram needs clearer relationship between model → dataset → dashboard → portal.

  • DONE Debrief onboarding call 2 with Basata — reviewed ReadAI transcript, synthesized key points into Slack summary for Huy and Tai. Had a quick huddle with Huy to align on approach.

  • DONE Call with Adam from Superbexperience (Slack thread) — Huy delegated lead to Wudi (Chukwudi), I prepared local React demo app for embed portal. Wudi noted Adam “usually needs things explained in detail or even done for him.” Collected UX feedback for embed team: User Attribute flow is counterintuitive (Adam assumed attributes were tied to his personal account/dataset ownership), Embedded Analytics page hard to find in nav, Permission-as-Code friction (where to place code, syntax, values, List tab presentation).

  • DONE Showbie - embedding question (Slack thread) — Alma reported RLP not taking effect on embedded dashboard. Root cause: she was testing as Admin with full data source access, which bypasses RLP. Updated docs to add warning block + FAQ about this (PR #1451 — MERGED). Upgraded existing :::info callouts to :::caution for visibility.

  • DONE Onboarding call 1 with Innerspace.io (Slack thread) — Matt MacGillivray had specific asks: release management/version control, heatmap visualizations, embedded analytics (JWT, RLP), customer support via impersonation, and LLM. Demo’d version control/branching (as-code strength vs GoodData), sent custom chart library. Marcus (Dong) prepared prep notes. Call went smoothly; next session scheduled. Shared embed demo repo with team.

  • NOTE Showbie performance concern raised with Huy (Slack) — Huy asked Wudi for progress update. Wudi confirmed another meeting early next week, no date yet. Will wait for next call to assess, then investigate.

  • NOTE New backlog item: Polish embedding documentation — increasing friction observed across Showbie (RLP confusion), Superbexperience (Permission-as-Code friction), and Basata (multi-tenant setup). More leads coming for embedding solutions.

  • Add2Cart

  • DONE Ping Anurag via DM (Slack thread) — aligned on next steps: Anurag will ingest 6 countries from 6 RDS databases into Redshift (airbyte_schema_*). First step: Retailer tables only. Background: there’s a data discrepancy between retailer table and slugs in atc_price_history — 23 matched Australian retailers (40% of rows), 6 near-miss (slug mismatch), 11 missing from history, and 589 history-only retailers from other markets (MY, ID, PH, SG) and brand stores.

  • TODO Ingest countries data into Retailers table — audited Redshift stored procedures to plan bridge_product_retailer elimination. Running out of time and Ampcode tokens, delayed to Monday.

    • Active pipeline: sp_run_all orchestrates 3 layers (Layer 0: transforms → Layer 1: bridge/promo → Layer 2: aggregation/enrichment).
    • Unused SPs: sp_load_price_history_by_partition (superseded by sp_refresh_daily_prices), sp_refresh_serving_from_rds (subset of sp_run_all), sp_refresh_price_history_from_s3 (wrapper, now saved locally).
    • Orphan tables: PriceHistory, atc_price_history_native (21.4M rows), atc_price_history_tmp, atc_daily_min_price, _prisma_migrations, ad_suggested_*, match_suggestion, and others.
    • Plan: 4 phases — (1) add retailer_id/SKEY columns to atc_price_history + backfill, (2) modify SPs to resolve retailer_id inline, (3) update Holistics AML joins, (4) drop bridge + orphan tables after soak period.
  • Docs

  • DONE Fix markdown files missing for index pages (PR #1443 — MERGED) — Docusaurus category index pages returned 404 at .md URLs. Implemented Nginx try_files fallback. Discussed “Open Markdown” button placement with Huy — moved to bottom right.

  • Personal / Tooling

  • DONE UIUX learning points from SHUB for Smartclass project — analyzed test-taking UI patterns (split-screen layout, MCQ card design, navigation grid, submit confirmation flow, results review).

  • DONE Added Playwright skill for web structure analysis (PR #15).

  • DONE Setup linear CLI and agent skill for it — completed and moved to backlog Done.

  • DONE Taught Duc Anh (teaching session).

  • Installed Annotate — on-screen annotation tool for customer call screen sharing and demos. Free, lightweight.

  • Tried Zed IDE — doesn’t support Ampcode, and more familiar with terminal-based IDE (neovim). Not switching.

  • IDEA Surface interactive dbdiagram into Claude/ChatGPT chat interfaces — use DBML inside AI chat for data support (reproducing dataset diagrams from customer questions/AML). Advantages over Mermaid: drag-and-drop, better relationship syntax, collaborative export. Timing: wait for dbx team alignment.

  • IDEA Synthesize tone/writing style from Holistics Notion pages into an agent skill for better output quality.

  • NOTE Good timing matters — read each team’s sync notes to decide whether to propose ideas. Example: checking dbx team sync before proposing Claude connector for dbdiagram.

  • Learning & Notes

  • LEARNING dbt debugging process (collected from mentoring Thuan): check Prefect logs → run each CTE step-by-step → find root cause → propose solutions.

  • LEARNING BigQuery agent skill struggles with logical (dbt) vs physical (BigQuery) table name mapping. Fix: dynamic mapping from INFORMATION_SCHEMA.

  • LEARNING Holistics workers and objects — what do they mean? (to explore further).

  • LEARNING How to present embed portal setup to customers: high-level mechanism → backend JWT signing → frontend iframe → row-level permissions → payload user attributes. This workflow is now repeatable across Basata, Superbexperience, and Innerspace.

  • NOTE Productivity reflection: after Tet 2026, feeling more productive than the whole last year. Biggest change is communication confidence, traced back to the Showbie call where I suddenly led the conversation. The 80/20: it’s communication confidence.

  • TODO Self reflection and update CV.

  • TODO Change to a more professional work avatar.

  • Next Week

  • P1 — Presales: Schedule and prepare next onboarding sessions (Innerspace call 2, Basata follow-up).

  • P1 — Add2Cart: Ingest countries data into Retailers table (carry-over, delayed from Friday). Complete Redshift SP/table audit.

  • P1 — Internal: Create agent skill for fixing dbt data pipelines in #data-ops-bot.

  • P2 — Internal: Final approval on Thuan’s PR #845 (DE-208) — changes requested, needs follow-up.

  • P2 — Internal: Continue Calendly data pipeline (DAT-283) — standardize source pipeline and build unified dbt models.

  • P2 — Internal: Fix excluding internal testing Zoho accounts (DAT-524) — lingering since W7.

  • P2 — Internal: Visualize schedule of all data lineage (new backlog item).

  • P2 — Presales: Polish embedding documentation — reduce friction for prospects setting up embed portals.

  • P2 — Add2Cart: Document project and guide setup for other countries.

  • P2 — Teaching: Brazilian dashboard Dash 2 (Shipping Overview) + demo video for Yen — carry-over.

  • P3 — Presales: Read Modeling Patterns.

  • P3 — Internal: DAT-555 resolution — decide whether to remove fct_job_queue_performance.

  • P3 — Personal: Consider a Flashcard app for learning English words.

  • Career & Personal Consulting

    Progress Review (Start/Stop/Keep):

  • Start: Formalizing the embed portal demo workflow as a repeatable playbook — you’ve now done it for Basata, Superbexperience, and Innerspace with the same pattern (Gemini mockup → Ampcode implementation → HTTPS fix → live demo). Document this as a reusable template.

  • Start: Collecting UX feedback from presales calls more systematically — the Superbexperience feedback (User Attributes, Permission-as-Code friction) is gold for the product team. Consider a structured feedback form after each call.

  • Stop: Delaying carry-over items indefinitely — DAT-524 (Zoho accounts) has been lingering since W7. Either timebox it or explicitly deprioritize with a reason.

  • Keep: Mentoring Thuan — the structured debugging process you documented is exactly the kind of knowledge transfer that scales. The “collect his thought process” follow-up shows intentional coaching.

  • Keep: Using AI tools aggressively for productivity — Gemini for design, Ampcode for implementation, ReadAI for call summaries. This compound effect is visible in your output this week.

    Observations:

  • This was a high-output week with significant context-switching across 5+ projects (Internal, Presales, Add2Cart, Docs, Personal). The presales load is increasing — 4 customer interactions this week (Basata, Superbexperience, Showbie, Innerspace). If this trend continues, consider discussing capacity with your manager.

  • Your communication confidence growth is real and self-reinforcing. The Innerspace debrief (“these people really know what they’re doing… my speaking and confidence increase after the call”) shows a positive feedback loop.

  • The Ampcode token exhaustion on Friday (Add2Cart Redshift audit) is a signal: heavy analytical work is best scheduled early in the week when token budget is fresh.

  • Consider batching presales calls (e.g., Tue/Thu) to protect deep-work blocks for engineering tasks (dbt pipelines, MRR, Calendly ingestion).

  • Presales & Customer Communication (your fastest-growing edge right now):

  • Book: The Trusted Advisor by David Maister — you’re transitioning from “technical demo person” to “trusted advisor” for customers like Innerspace and Superbexperience. This book frames exactly that shift: credibility + reliability + intimacy over self-orientation.

  • YouTube: Demo Like a Pro — search for presales demo techniques. Your embed portal workflow (mechanism → backend → frontend → permissions) is already structured well; learning demo pacing and storytelling will compound on that.

  • Article: Levels of Detail in Communication by Wes Kao — already in your backlog. Read it now — directly relevant to how you adjust depth between technical (Innerspace) and non-technical audiences.

    Data Engineering & dbt (your core craft):

  • Article: How we structure our dbt projects — official dbt guide. Relevant as you’re creating the agent skill for dbt pipeline fixing and mentoring Thuan on model structure.

  • Tool: Elementary — dbt-native data observability. Connects to your DAT-569 investigation and the broader goal of automating #data-ops-bot. Could replace manual Prefect log checking.

  • YouTube: dbt Learn On-Demand — free courses. The “Advanced Materializations” and “Refactoring SQL” modules are relevant to the MRR pipeline refactoring and Redshift SP cleanup.

    Mentoring & Knowledge Transfer (you’re becoming a senior who grows others):

  • Book: The Coaching Habit by Michael Bungay Stanier — 7 essential questions for coaching conversations. Short read (~150 pages). Directly applicable to your Thuan mentoring sessions and collecting his thought process.

  • Article: Teaching Technical Concepts by Julia Evans — her approach to “implementation challenges” is exactly what your dbt debugging process document is. Could inspire how you structure the agent skill for juniors.

  • Personal Productivity & Career (sustaining this momentum):

  • Book: Staff Engineer by Will Larson — you’re exhibiting staff-level behaviors (cross-team alignment on MRR, creating reusable playbooks, mentoring). This book helps you articulate and intentionally develop that trajectory.

  • Tool: Excalidraw deep dive — you already used it for the embed portal guide. Learn its component library and collaboration features to make it your go-to for customer-facing diagrams.

  • Article: The Engineer/Manager Pendulum by Charity Majors — relevant as your role blends IC engineering with presales and mentoring. Helps think about where you want to be on this spectrum.