Weekly Report — Apr 13 – Apr 19, 2026 (friday mode)
Work
Internal
- DONE Transfer MRR and exchange rate project with anh Hieu — completed Apr 14
- Walked through DE-187. Two main blockers: (1) customer identity resolution — dbt logic refactored but domain mapping remains unreliable; (2) exchange rates — Zoho uses static rates set at plan creation time, finance team pivoting to bi.holistics.io as MRR source of truth.
- Decision: use USD as reporting currency with live exchange rates (Option 2). Recommendation to move toward period-average constant currency (Option 3) for trend analysis.
- Created dedicated knowledge page [[[Internal] Customers’ MRR (Exchange Rate)]] with data architecture diagram, ER diagram (dbdiagram.io), 9 identified problems, edge cases (Datacubed multi-tenant, Kognity multi-region, Vector AI domain mismatch), and technical fixes (PR #812, PR #852).
- Next steps: build
dim_exchange_ratestable (DAT-576), implement dual metrics (constant_currency_mrr+reported_mrr), implement canonicalcustomer_skeyfor long-term identity resolution. - Related: dbt monitoring flow DE-176 suspended (low priority), impersonation lookup frequency increase (DAT-499) pending.
- DONE Investigate Zoho Events sync 403 failure (DAT-574) — completed Apr 14
- Prefect flow
Sync Zoho Eventsfailed Apr 12 with HTTP 403 (Zoho error code 104003) — OAuth token lackedZohoSubscriptions.events.READscope after Finance (Vincent, Sriram) adjusted admin permissions for Janice’s account. - Root cause: permission/scope issue, not a code bug. Coordinated with Quinn (Growth) who updated read permission. Flow re-ran and backfilled successfully.
- Prefect flow
- DONE Write 1-on-1 report — completed Apr 15, PR #16. 1-on-1 meeting held Apr 15.
- Manager’s priorities for Internal (in order): (1) data quality/reliability — MRR identity + exchange rates; (2) bi.holistics.io cleanup; (3) increase data freshness (e.g., impersonation lookup); (4) product tracking; (5) development workflow.
- Embed demo app proposal: not the right timing. Mentoring Thuan: ask open questions, force him to think.
- DONE Fix
fct_job_queue_performanceBigQuery resource limit (DAT-555)- PR dbt #854 approved by marcusle02 and merged Apr 15. Capped incremental lookback to 7 days.
- PR review done. Backfill completed. Now proceed to clean up BI layer.
- Dashboard cleanup decision: delete [WIP] Job Queue Performance 3.0 (unused), keep v2 and Report Job Queue Performance Monitoring (migrate to 4.0).
- Related sub-tasks DAT-567 (delegated to Thuan, done) and DAT-575 also completed.
- IN-PROGRESS Calendly data pipeline (DAT-283)
- PR dbt #853 approved by marcusle02 on Apr 17 after multiple review rounds. PR is mergeable, awaiting final merge.
- Answered all review comments from anh Dong (marcusle02). Key feedback addressed: enable deprecated wrapper models for transition, avoid
SELECT *in CTEs, fixtracking_utm_contentdata type. - Re-modeled into fact bookings and dim event, with grain = event × invitee × rep.
- Lineage analysis completed: 2 domain + 3 redundant mart models consolidated into 1 domain (
dom_calendly__events) + 1 mart (fct_calendly_events). Source migrated from Google Sheets to Fivetran. Bug fix:fct_sales_leadswas dropping 88% of call-booking leads due to NULL UUIDs in Google Sheets — now joining oninvitee_email_domainfrom Fivetran source. Impacts 10+ downstream dashboards (Leads Analytics, Sales Performance, Deal Activity, etc.). - Next: merge PR, run dbt models, validate data in Holistics BI, then fix downstream
fct_sales_leadsjoin.
- DONE Guidance for countries level data (Add2Cart) — closed Apr 17
- Add2Cart won’t engage further. Closed task per Slack thread update.
- TODO Handle multi-currency exchange rates for MRR (DAT-576) — new backlog item from MRR transfer. P2. Scope per Linear: ingest live exchange rates (source TBD: ECB, Google Finance, or Zoho live rates), replace static rate logic in
fct_mrr, handle FX noise in historical growth metrics (pin to end-of-month rate), validate against Zoho totals. Notion doc: MRR discrepancy ~30,000 SGD between Zoho (340K SGD) and bi.h (243K USD × 1.28 = 311K SGD). - TODO Lead Funnel by Sales Motion (DAT-560) — blocked on Calendly pipeline completion. Carry-over.
- WAITING Create agent skill for fixing dbt data pipelines in #data-ops-bot — demoted to P3 per anh Triet’s direction to let Thuan handle data-ops-bot for training. Revisit in 3-6 months.
- BACKLOG Fix excluding internal testing Zoho accounts (DAT-524) — carry-over since W7 (10 weeks). Deprioritized: waiting for more important tasks (MRR exchange rate, Calendly) to be done first. Small task, will pick up later.
- TODO Review PR Circle CI for anh Dong (DAT-579) — new. PR prefect #397: expand CircleCI test metadata ingestion (success + failed jobs), add branch fallback logic, add 60-day backfill flow. Part of DAT-578 (CircleCI pipeline revamp). Notion: DE-214 — current state uses a bash script → SQLite → report; this PR moves it to Prefect + BigQuery.
- TODO Review AI sharing dashboard for Aurora — new. Enterprise customer, high priority. Slack.
- Context from Slack: Nam (Account Manager) proposed upselling Aurora a “Usage and AI Data Monitoring Transfer” package at $10,200/year. Internal debate: Phuong (Product) argued basic AI usage monitoring should be free (AI squad is building in-app dashboard); Vincent (Growth) clarified the upsell is for data sync to customer’s own systems (not in-app viewing), targeting enterprise compliance needs (e.g., 7-year log retention). Triet agreed — put it behind SCS paywall.
- Data from ClickHouse: conversation time/ID, user ID, messages (prompts + replies), token usage per user. Dashboard created by Hieu: Aurora AI Conversations.
- My action: review the dashboard quality before sharing. Confirm delivery format (Google Sheets or S3) and daily schedule.
Presales
- TODO Basata follow up on light/dark theme — new. Enterprise customer, high priority. Slack.
- Context from Slack: Basata (Taha) has dark mode in their app and needs embedded dashboards to match. Current Holistics limitation: theme is set globally, not per-embed payload. Anh Huy proposed adding
theme: 'light_theme' | 'dark_theme'to the embed payload. Also, Sankey chart labels don’t convert to light colors in dark theme (color palette not tied to theme). Basata says this is urgent — already rolled out embed to 3 clients, wants dark mode by end of next week. - I told them we’ll reach out Monday with an internal plan.
- Context from Slack: Basata (Taha) has dark mode in their app and needs embedded dashboards to match. Current Holistics limitation: theme is set globally, not per-embed payload. Anh Huy proposed adding
- DONE Onboarding call 2 with Jonas Chorum — completed Apr 17
- Feedback: (1) need Select All & Clear All in dataset; (2) make dashboard interactivity features (VUD, DD, BD) available for Explore too.
- Debriefed the call, brought feedbacks to the team.
- EAV lookup table pattern discussed during call: Tony’s
one_letter_codestable is a multi-purpose lookup where same code means different things per category (e.g., ‘C’ = ‘Cancelled’ for StayStatus, ‘City’ for Ledger). Proposed 3 approaches; decided on Approach 1 (SQL Query Models with inline joins) — most reliable, avoids bloating diagram view.
- DONE Presales sync — completed Apr 16
- Pivot prioritization to tutorial videos for local development docs.
- WAITING Polish embedding documentation — deprioritized per 1-on-1. Not the right timing. Continue maintaining holistics-embed-demo informally.
Add2Cart
- CLOSED All Add2Cart tasks closed — customer won’t engage.
- Guidance for countries level data — closed Apr 17.
- Project retro with anh Dong — canceled. Deal not progressing. Per Slack: Vincent reached out multiple times but Simon has not responded. Vincent suggests stopping service and treating remaining 50% unrecovered sprint work as an internal lesson on scoping and early commitment.
Docs
- TODO Add demo video for local development docs — elevated to P1 per presales sync. Draft scenario, discuss with anh Huy Vu/Dat.
- NOTE DataHub integration (holistics/datahub-holistics) — built for customer MoneySmart. Anh Triet flagged concern: data team needs to be prepared for support if customer reports an issue.
Personal / Tooling
- Explored ReactFlow for vibe-coding data lineage with high-quality canvas. Also applicable for knowledge graph visualization from Logseq.
- Found docglow as dbt docs alternative — prettier UI, supports column-level lineage.
- Found meta-sql — data lineage graph with dependency visualization, useful inspiration for [[dblineage]].
- Read articles on dbt incremental models (lookback windows,
_dbt_max_partitiongaps), dbt Cloud Canvas, and data ingestion tool comparison. - Considered downgrading Google One (no longer using Gemini chatbot regularly).
- Reflected on context-switching cost across projects (Internal, Presales, Docs, Personal, Teaching). Considering Focus Days approach to reduce overhead.
Learning & Notes
- Read “Protect Your Shed” — personal projects keep you an engineer while enterprise work teaches scale. Resonated with how side projects (like Logseq automation) maintain motivation.
- Read “My AI Adoption Journey” by Mitchell Hashimoto (co-founder of HashiCorp, creator of Ghostty).
- Key concept: Harness Engineering — design better feedback loops so AI agents know when they’re wrong. The simplest form is adding rules to
AGENTS.md. Already practicing this with Logseq automation. - 6-step framework: (1) drop the chatbot, use agents; (2) reproduce your own work to learn edges; (3) end-of-day agents for warm starts; (4) outsource slam dunks while doing deep work; (5) engineer the harness; (6) always have an agent running.
- Key insight: “Turn off desktop notifications. Context switching is expensive.” Validates experience with multi-project context overhead.
- On skill formation: “discovering it yourself resulted in a stronger fundamental understanding” — applies beyond AI.
- Key concept: Harness Engineering — design better feedback loops so AI agents know when they’re wrong. The simplest form is adding rules to
- Read dbt incremental model articles: strategies (merge, insert_overwrite, append), lookback windows for late-arriving data,
_dbt_max_partitiongaps. Directly applied to DAT-555 fix. Next Week
- P1 — Must Do
- Duty Support: Review AI sharing dashboard for Aurora (enterprise customer). Slack. Monday priority.
- Presales: Basata follow up on light/dark theme (enterprise customer). Slack. Monday priority.
- Internal: Merge Calendly PR #853 (approved, ready to merge), run dbt models, validate data in Holistics BI. Then fix downstream
fct_sales_leadsjoin. - Internal: Review anh Dong’s CircleCI PR prefect #397 (DAT-579).
- Internal: Start MRR exchange rate work (DAT-576) — build
dim_exchange_rateswith live rate ingestion. Manager priority #1. - Docs: Add demo video for local development docs — draft scenario, discuss with anh Huy Vu/Dat.
- P2 — Should Do
- Internal: Clean up BI layer for job queue dashboards (delete WIP 3.0, migrate v2 to 4.0).
- Internal: Increase data freshness — impersonation lookup more frequent than daily (DAT-499). Manager priority #3.
- Internal: Lead Funnel by Sales Motion (DAT-560) — review and plan after Calendly pipeline stabilizes.
- Teaching: Find a football dataset for Duc Anh.
- P3 — Nice to Have
- Internal: Contribute to Holistics skills and internal-skills repos.
- Presales: Read Modeling Patterns docs.
- Personal: Self reflection and update CV.
- Backlog (deprioritized, pick up after MRR/Calendly)
- Internal: DAT-524 Fix excluding internal Zoho accounts — small task, 10 weeks carry-over.
Career & Personal Consulting
- Progress Review (Start/Stop/Keep)
- Keep: Thorough knowledge transfer documentation (MRR page with architecture diagrams, ER diagrams, problem taxonomy). This is a strong practice that makes handoffs durable. Also keep the pattern of debriefing presales calls and bringing structured feedback to the team.
- Start: Decisively backlogging low-impact carry-over items. DAT-524 formally backlogged — small task that doesn’t warrant 10 weeks of cognitive overhead. Good precedent.
- Stop: Holding onto tasks that external parties have deprioritized. Good move closing all Add2Cart tasks when it became clear the customer won’t engage. Apply this pattern to other WAITING items proactively.
- Workload Observations: This week was well-balanced between deep work (MRR transfer, Calendly PR reviews) and collaborative work (presales calls, 1-on-1). The MRR knowledge page creation shows growing ownership of a complex domain. DAT-555 being merged is a solid win — one fewer carry-over.
- Skill Development: The intersection of data engineering and presales (e.g., Jonas Chorum call with EAV lookup tables) is a differentiating skill. Few people in the industry can both design data models and demo them to customers. This is worth leaning into.
- Harness Engineering observation: You’re already practicing what Mitchell Hashimoto describes — iterating on
AGENTS.md, building automation scripts that learn from mistakes. This is a genuine competitive advantage in the AI-first era. Continue investing in it. - Context switching: You flagged this yourself — many projects are “always on” (Internal, Presales, Docs, Personal, Teaching). The Focus Days approach is worth a trial run next week: e.g., Mon/Wed = deep Internal work, Tue/Thu = presales + reviews, Fri = wrap-up.
Recommended resources to learn
- Mitchell Hashimoto’s “My AI Adoption Journey” — already read, but worth revisiting Step 5 (Harness Engineering) as you build more automation. Share with team?
- dbt discourse: Multi-currency reporting patterns — search for “exchange rate” and “multi-currency” threads. Community patterns for
dim_exchange_ratesand constant-currency MRR will shortcut your DAT-576 implementation. - Ghostty AGENTS.md example — referenced in Hashimoto’s article. Good reference for structuring
AGENTS.mdfor different subdirectories. - YouTube: Analytics Engineering with dbt — Incremental Models Deep Dive — reinforces the lookback window patterns you applied to DAT-555.
- Book: “The Staff Engineer’s Path” by Tanya Reilly — relevant for your growing ownership of cross-team projects (MRR, Calendly, presales tooling). Good framework for “glue work” and technical leadership.
/ Weekly Report - 2026-W16
Created Mon, 25 May 2026 00:00:00 +0000
Modified Mon, 25 May 2026 06:02:25 +0000