Chinh (lelouvincx) / Weekly Report - 2026-W19

Created Mon, 25 May 2026 00:00:00 +0000 Modified Mon, 25 May 2026 06:02:25 +0000
3790 Words

Weekly Report — Apr 29 – May 8, 2026 (friday mode)

First full 5-workday week after W18 holidays. Big internal closure: Lead Funnel by Sales Motion (DAT-560) shipped — DAT-561/562/563/564 all closed May 8, ending a 5-week carry-over that had been blocked on Calendly. Big presales loss: [[Showbie]] went to Omni; learning synthesis captured. MRR exchange rate (DAT-576) still NOT STARTED — now 4-week carry-over and being treated as a restart in W20: Hieu left and most implementation context is gone, so W20 Mon AM is recovery + scoping (not implementation), with a Wed-EOD escalation gate to anh Triet. CircleCI dbt PR #858 still open (cherry-pick dbt#861 merged). DAT-555 closed for real this week. Tooling week was strong: Holistics MCP, amp plugin for MCP error logging, slackcli, caveman skill, RTK install.

  • Work

  • Internal

  • DONE — Lead Funnel by Sales Motion (DAT-560) (#P1, 5-week carry-over since W14) — closed May 8.
    • Business driver: BizOps (Vincent, Sriram) is planning 2026 revenue ($330K MRR target); needed sales-motion breakdown (call-first / trial-first / trial-only / call-only) on fct_sales_leads to decide where to invest.
    • Calendly data ingested + transformed; sales_motion dimension live in dbt and Holistics BI. All 4 sub-issues closed:
      • DAT-561 — Enrich with additional call sources beyond Calendly demo calls.
      • DAT-562 — Add sales_motion dimension to fct_sales_leads.
      • DAT-563 — Fix rep assignment bug in fct_sales_leads (prefer deal owner over Calendly rep — dbt#862).
      • DAT-564 — Re-audit sales motion classification with BizOps (Ampcode).
    • PRs landed: dbt#859 (DAT-283 add sales_motion column), dbt#862 (rep-assignment fix), internal-aml-project#54 (migrate from tmp models → fct_sales_leads).
    • Refs: Notion DE-202, Ampcode synthesis.
  • DONE — Resolve DAT-555 follow-up (#P1, was IN-PROGRESS) — closed May 7.
    • Original failure: [dbt] Mart Product flow on 2026-03-16 — 3 errors (resource limit on fct_job_queue_performance, PARSE_JSON syntax in mart_product__dataset_datamodel_dimensions, uniqueness test failure on dataset_datamodel_dependencies_skey). All 3 sub-issues now resolved: DAT-565 Done (resource cap via 7-day incremental lookback), DAT-567 Done (PARSE_JSON fix), DAT-566 marked Duplicate.
    • fct_job_queue_performance migration completed across the BI layer. Tracked via 5 Ampcode threads (1, 2, 3-fix, 4-migrate, 5-migrate continue).
    • BI cleanup: deleted [WIP] Job Queue Performance 3.0; migrated Job Queue Performance Estimation v2v4 (kept old v3 link since shared with customers); kept Report Job Queue Performance Monitoring and Tenant exceeds job queue limit. Done.
  • DONE — Set up GitHub App for bi.holistics.io (#P2, carry-over from W18) — closed May 4.
    • Squad modeling shipped GitHub App integration to staging Apr 29 (Khai To FYI) — replaces SSH Deploy Keys + PATs with one-click org-owned install. Industry alignment with dbt Cloud / Lightdash; ahead of Looker, Metabase, Sigma. Customer pull from Aarki, RYT Bank, TestGorilla.
    • Refs: discuss thread, Ampcode.
  • DONE — Review DAT-584 “Deploy dbdocs flow fails in Prefect” round 1 (dbt#860, #P2) — round 1 May 4, round 2 LGTM + merged later in week.
    • Failure: Deploy dbdocs flow on Apr 21 — npx dbdocs build /tmp/output.dbml --project holistics exited non-zero. Logged JWT token in plaintext (caught when reading the prefect log: DBDOCS_TOKEN=[REDACTED:jwt-token] — flagged with :pepe-hang:).
    • Sub-issue DAT-586 “Fix dbdocs token leakage” handled in parallel.
    • Refs: Ampcode.
  • DONE — Align Data Import schedules (DAT-587, Cycle 73, #P2) — closed May 5.
    • Trigger (Slack): Triet — "@data please help me check why this returns empty tenant. Users synced but Tenant has not?" (impersonation lookup for [email protected], new tenant created 2026-05-03 16:04 VNT).
    • Root cause: users import 0:00 VNT but tenants import 7:00 VNT — 7-hour gap. dbt flows run 22:00–3:00, so new users arrive but joinable tenant row missing.
    • Fix shipped same day: rescheduled all data imports (staging, EU, US, SG) to 20:00–23:00 VNT (before 0:25 first dbt run). Triet’s bar = “1–2 hour gap acceptable; 7 hours is way too long.”
    • Refs: Slack.
  • DONE — 1Win duplicate-customer check (#P2, carry-over from W18) — closed May 4.
    • Trigger: Quinn DM Apr 28 (DM).
  • DONE — fix(calendly): unique_combination_of_columns for dom_calendly__bookings (#P1) — closed May 8.
  • DONE — Shorten dbt README (dbt#864, #P3) — closed May 8.
  • IN-PROGRESS — Review CircleCI PRs for anh Dong (#P1, carry-over from W18).
  • NOT STARTED — MRR exchange rate (DAT-576, #P1, manager priority, Cycle 74). Treat as restart — Hieu left, most implementation context lost.
    • Honest assessment: Linear scope reads clear (“ingest live rate → replace static rate in fct_mrr → handle historical FX noise → validate vs Zoho”), but the how and why is not yet known. Last hand-off doc ([[[Internal] Customers’ MRR (Exchange Rate)]]) captures W16 transfer with anh Hieu, but that was a knowledge transfer, not an implementation handover.
    • What is known (from [[[Internal] Customers’ MRR (Exchange Rate)]] + parent DAT-177):
      • Base currency = SGD (Zoho only). Reporting currency = USD (agreed Option 2: live rates, today’s rate, “what is it worth now”).
      • Current pipeline: fct_mrr reads subscription.exchange_rate set at plan creation in Zoho (static, ~yearly refresh). Drift = MRR variance vs. Zoho (Slack from Sriram).
      • Existing fix scaffolding: PR #812 (region mapping fix), PR #852 (hard-coded edge-case patches: map_holistics_zoho.csv, partner_programs.csv, dom_holistics__internal_tenants.sql).
      • Edge cases known to bite: Datacubed (multi-tenant), Kognity (region migration), Vector AI (vector.ai vs raft.ai).
      • Sample query Hieu/Triet used to debug (from DAT-177 comment):
        select created_date, zoho_subscription_id,
          sum(curr_mrr * exchange_rate_to_sgd * 0.71) as curr_mrr_usd
        from skilled-fulcrum-90207.mart_holistics.fct_daily_mrr
        where created_date = (select max(created_date) from skilled-fulcrum-90207.mart_holistics.fct_daily_mrr)
        group by 1, 2 order by 1, 3
        
        → confirms fct_daily_mrr already has exchange_rate_to_sgd column. Question: where does that column come from today, and what’s the swap path?
    • What is unknown (the actual W20 work):
      • Where exchange_rate_to_sgd lives upstream of fct_daily_mrr (which staging/dim model). Need to read dbt code.
      • Whether Triet’s earlier exchange-rate experiment (referenced by Hieu Aug 2025: Notion: Zoho-MRR transformation logic) was merged or abandoned, and what it broke.
      • Rate source: ECB vs Google Finance vs Zoho live API. Cost, refresh cadence, currency coverage.
      • Schema for dim_exchange_rates: grain (daily? hourly?), columns (date, from_currency, to_currency, rate, source), keys (composite or surrogate).
      • Backfill story: do we re-state historical MRR with live rates (causes FX noise on growth metrics), or freeze history at end-of-month rates (safer)? Need stakeholder call (Sriram, Vincent, Triet).
      • Validation: which Zoho report is the canonical comparison (Zoho MRR vs bi.holistics MRR Overview).
    • Now 4-week carry-over (W16 → W17 → W18 → W19). W19 Mon-AM hard-block consumed by GitHub App + carry-overs; rest of week absorbed by Bicycle Transit prep + CircleCI debug + DAT-560 push.
    • Restart plan for W20 (replaces “design dim_exchange_rates” from earlier plan):
      • Mon AM (09:00–12:00 hard-block): context recovery pass — re-read [[[Internal] Customers’ MRR (Exchange Rate)]], DAT-177 history, Notion: Zoho-MRR transformation logic + Notion: Handle Multi-Currency. Trace fct_daily_mrrexchange_rate_to_sgd upstream in dbt. Output: 1-page “what we have / what’s missing” gap doc as Linear comment.
      • Mon PM: 30-min sync with anh Triet — recover his earlier experiment context, confirm rate source decision (ECB?), confirm backfill stance.
      • Tue: draft dim_exchange_rates schema + ECB ingestion approach in a Linear comment for review (no code yet). Tag Sriram + Vincent for stakeholder buy-in on backfill stance.
      • Wed: small POC ingest (1 month ECB rates → BigQuery table) if scoping signed off. If still blocked by Wed EOD → escalate to anh Triet for formal re-scoping (smaller deliverable) or de-prioritization.
  • NOTE — review tooling gap. When reviewing a Holistics PR, would like a semantic dashboard diff: which part changed (new filter/widget, position change, filter mapping). Captured for future tooling/Logseq exploration.
  • Presales

  • DONE — Prep for anh Nam’s call with Bicycle Transit (#P1, P0 escalation from anh Nam Tran) — closed May 5.
    • Trigger (Slack verbatim): "[P0] Hi @presales. I will have a meeting with Bicycle Transit (201-500, internal self-service use case, looking into Omni, Rill, and PBI), and they have some of the Tableau dashboards that they want to replicate in Holistics. Is there any way we can replicate it before my meeting tomorrow (12PM PDT)? Or how would you suggest we showcase it?" — 1-day notice.
    • Context: 201–500 employees, internal self-service. Actively comparing Holistics vs Omni, Rill, PBI. Existing Tableau dashboards to replicate.
    • Approach: reused holistics-embed-demo.pages.dev (same site as Jonas Chorum). Picked Overview dashboard for widest demo surface — narrative text block, KPIs, dual-axis trend chart, map. End-to-end mock-demo workflow: use case → sample dashboard → mock data (DBML schema → mock program → BigQuery import → Holistics connection) → AMQL assets (models, datasets w/ relationships + metrics, dashboard, theme via in-app builder, embed portal, host app render).
    • Demo angles: (1) RLP — LA user sees only LA data; (2) dynamic markdown narrative; (3) embedding; (4) map (their Tableau lacks one); (5) conversational AI.
    • AI story: code-first → AML repo (demo4); in-app AI dev; CLI + MCP; live-preview (Khai To recording 1st version on staging13).
    • Feedback to AI/squad: AI skills produce wrong AMQL syntax — where(fact_trips.user_role = 'rider') should use ==; where(is_null(dim_bike.retired_at))is_null() does not exist; weak at dynamic-markdown templating ({{ user_trips_now }}).
    • Refs: Slack, Notion brief, Ampcode dashboard prep, Ampcode embed host, Ampcode follow-up.
  • DONE — Bicycle Transit follow-up questions (#P1) — closed May 8.
    • (1) Microsoft Fabric Data Warehouse: not currently supported, but components exist (SQL Server without local SQL account + Entra ID). To raise with anh Huy Vu — BTS noted “Entra ID is the only auth method for Azure databases, which Rill/Omni do not provide” → potential differentiator.
    • (2) SSO via Microsoft Entra ID / Azure AD: already supported (Entra ID = Azure AD post-2023 rebrand).
    • (3) Azure DevOps: no per-repo deploy keys (SSH key sits on user account, not repo). Solution = dedicated service user with permission scoped to target repo only, paste pubkey into that user’s SSH Public Keys page. Standard pattern (Valohai, Flux CD, ArgoCD use same approach). Catches: Azure DevOps is RSA only (rsa-sha2-256/512), no Ed25519 — confirm what algo our generator emits. SSH URL format [email protected]:v3/<org>/<project>/<repo> — confirm “Other/SSH” dialog parses ok. No PR-workflow parity (GitHub App-only).
    • Refs: Slack, Ampcode.
  • DONE — Follow up on [[BuyCo]]’s triage tickets (#P1, customer [[BuyCo]]) — closed May 6.
  • DONE — [[BuyCo]] custom theme (#P1, customer [[BuyCo]]) — closed May 7.
  • LOST — [[Showbie]] deal — Closed Lost to Omni (champion: Erin Oris; Holistics owner: Chukwudi Ezennia; HubSpot deal: company 6096045850).
    • Timeline (from HubSpot DM logged May 4 — 1, 2):
      • Mid-Apr: Erin asked to keep embed dashboard live to present to leadership; Chukwudi extended trial through Apr 30 at no cost. “Your trial account is actually a full production account.”
      • Late-Apr: Erin requested pricing review meeting in spirit of transparency.
      • May 1 (loss notification): “After careful consideration, we’ve decided to move forward with another tool for our BI and embedding use case… We were very impressed with Holistics, and truly appreciate the partnership throughout the process.”
      • Final reason verbatim: “After a lot of deliberation, we ultimately landed on a contract with Omni. For us, the decision came down to the overall functionality within the tool…” (DM was truncated mid-sentence in the HubSpot capture; full reason needs Harsha follow-up).
    • Erin’s stated reasons for Omni (per internal debrief): (1) overall functionality, (2) clear migration story from Looker → Omni (preserves what they liked about Looker without the pitfalls), (3) rated lowest-risk option by their Security & Data Compliance Specialist.
    • Positives banked: “Hands-down, Holistics wins for most cost-effective tool”; “I particularly appreciated the level of customization that could go into the dashboard designs themselves.” Chukwudi specifically called out my contribution in the internal loss thread.
    • Action item carried to W20: synthesize Holistics-vs-Omni learning (focus on Looker-migration moat + security risk perception); chase Harsha for personal feedback (full reasoning beyond the truncated HubSpot capture). Do not lose without learning.
  • WAITING — Wamly onboarding call (#P2, moved to backlog).
    • Farren cancelled Apr 29 call (urgent matter), now on 10-day paternal leave from May 1; Chukwudi will reach out ~May 11–15 per the reschedule thread. Trial-expires-May-6 panic moot since customer unavailable. Re-pick around May 11–15 (W20).
  • Duty Support

  • WAITING — Support ticket — [[PatientsKnowBest]] (#P2).
  • Docs

  • DONE — Update docs to mention Entra ID (#P2) — closed May 8.
    • Triggered by Bicycle Transit Q on Azure AD/Entra ID rebrand. Refs: Slack, Ampcode.
  • DRAFT — Feedback to Khai To on auto-export dashboard PNG (drafted May 5, status draft on Backlog).
    • Ask: holistics dashboard export <id> --format png (preferred) OR extend submit_export to accept format=png. Motivation: PNG renders enable a dashboard-as-code review flow on PRs (visual diff for canvas dashboards, akin to Chromatic for Storybook). Will send after the 2-way sync CLI ships.
    • Linked signals: BuyCo AMQL-vision question; external — ggsql alpha, Shaper, benn.substack — How do you make a chart; internal — dbdocs CI gap raised in dbt#860 review. Refs: Ampcode.
  • Personal / Tooling

  • DONE — Set up Holistics MCP locally to query development metrics (MCP only) (#P3, [[Personal]]) — closed May 6.
    • Validates the personal data-platform-as-leverage thesis. Local MCP unlocks faster iteration on internal analytics during ad-hoc questions. Ref: Slack.
  • DONE — Create amp plugin to log errors from Holistics MCP tools (#P3, [[AI]]) — closed May 7.
    • Inspired by Amp, Rebuilt — Plugins. Logs to ~/.config/amp/logs/holistics-mcp-errors.jsonl. Will review monthly to drive Holistics MCP/skill improvements. Plugin opens the door to a finer-grained amp-thread lifecycle:
      • Auto-format AQL JSON results → markdown (token saving).
      • Trigger rtk automatically.
      • Surface failures back into the second brain.
    • Ref: Ampcode.
  • DONE — Install slackcli latest (#P3, [[Personal]]) — closed May 7.
  • DONE — Install RTK rewrite hook ([[Personal]]) — early week.
  • DONE — Install caveman skill and trial it ([[Personal]]) — week-long trial. Persistence-mode global instruction working as expected; default full intensity.
  • DONE — Fix bq CLI dependency warning (#P3, [[Personal]]) — closed May 6.
    • Resolved the urllib3 1.26.9 / chardet 7.4.3 / charset_normalizer 2.0.7 mismatch on the gcloud 558.0.0 install. No more noise on every bq invocation.
  • NOTE — Cloudflare 10K page-views milestone (May 6) on the second-brain assets domain. Reminded me of Spotify Wrapped — Holistics could deliver a yearly customer-engagement wrap-up using product analytics. Captured as future presales/marketing idea.
  • IDEA — Daily cronjob to ingest Slack activity (slack-cli activity ref) — including threads + mentions, beyond the ~80% I manually log in Logseq. Captures information not currently relevant to me but potentially future-relevant.
  • IDEA — Auto-format execute_aql result from JSON → markdown for better LLM token efficiency. Captured: Ampcode. Likely first plugin to ship after the MCP error logger.
  • Learning & Notes

  • LEARNING — AI-assisted BI development is here. Ampcode T-019dfbd0 (Job Queue Performance migration) is an early sign: with enough knowledge, tooling, and data, an AI agent can do nearly the full migration cycle end-to-end. Reinforces the W18 “Harness Engineering” thread.
  • LEARNING — Vague tasks → time-block + start. From the BuyCo triage check: when a task feels vague, time-block it, dive in, and the act of doing makes it concrete. Don’t wait for clarity that won’t come from thinking.
  • READ — Amp, Rebuilt — new Plugins primitive. Direct trigger for the MCP error-logger plugin. Plugins enable fine-grained amp-thread lifecycle hooks → unlock several second-brain ideas in queue.
  • READ — How We Built an AI Second Brain for 60K Knowledge Workers (Meta) — future direction for data teams: company-level second-brain ingesting Slack, Notion, ReadAI, HubSpot, Zoho. Anchors the IDEA above on Slack daily ingest.
  • NOTE — Mock-demo prep workflow (captured during Bicycle Transit prep). End-to-end checklist: use case → sample dashboard → mock data (DBML schema → mock program → DB import → Holistics connection) → AMQL assets (models w/ data check, datasets w/ relationships + metrics, dashboard, double-check UI, theme via in-app builder, embed portal, host app render). Reusable template for next Presales call.
  • NOTE — Showbie reflection. Two structural learnings: (1) “Migration from Looker” is a competitive moat we don’t tell well — analogous Holistics story is as-code + AI-native developer experience. (2) Security & compliance perception decided this deal — invest in trust artifacts (SOC2 narrative, threat-model docs) for enterprise prospects.
  • NOTE — Anh Thanh (chief engineer) ad-hoc convo on AI-assisted AQL (May 4). Signal that Data + Presales is recognized as a contributor to the AI/AMQL agenda. Position: in the AI era, standalone BI is not enough — the differentiator is process (as-code + AI-native).
  • NOTE — AI skill gaps in AMQL (Bicycle Transit feedback): where(... = ...) should be ==; is_null() does not exist; weak at dynamic-markdown templating. Fed back to AI/squad.
  • BOOKMARKLinkedIn job posting 4407948340 (note to revisit).
  • Next Week

  • P1 — Must Do
    • Internal — MRR exchange rate restart (DAT-576). Treat as restart — Hieu left, implementation context lost. Mon AM = context recovery pass (re-read [[[Internal] Customers’ MRR (Exchange Rate)]] + DAT-177 + Notion docs; trace fct_daily_mrr.exchange_rate_to_sgd upstream). Mon PM = 30-min sync w/ anh Triet. Tue = scoping comment in Linear. Wed = POC if signed off, else escalate. Now 4th week of carry-over per [[Priority Rules]].
    • Internal — Close out CircleCI dbt PR #858 for anh Dong. Awaiting next review-request notification; respond same-day when it lands.
    • Presales — Showbie loss synthesis + chase Harsha for personal feedback. Slipped from W19. Block 2h Wed.
    • Docs — Add demo video for local development docs (P1 in Backlog). Still WAITING on Khai To’s 2-way sync CLI; do the scenario draft + discuss with anh Huy Vu/Dat. Set scoping by Wed.
  • P2 — Should Do
    • Personal — H1 self-reflection draft + CV refresh for 2026 H1 performance review. Block Sat May 16 + Sun May 17 (slid from W19 weekend due to W19 DAT-560 push).
    • Internal — DAT-499 Increase impersonation-lookup data freshness (#P3 manager-elevated context).
    • Presales — Onboarding call with Wamly (P2). [[Basata]] onboarding call 4 scheduled May 19. Wamly: re-engage Farren/Chukwudi May 11–15 per the reschedule thread.
    • Docs — Send the auto-export dashboard PNG feedback to Khai To (currently draft). Wait until 2-way sync CLI ships, then send + propose CI prototype.
    • Internal — Continue Cross-Model Calculation (DAT-504, Backlog). Re-evaluate after docs revamp.
    • Internal — Upgrade dbt-core of repo dbt to match prefect.
  • P3 — Nice to Have
    • Personal — auto-format execute_aql JSON → markdown plugin (queued from W19 IDEA).
    • Personal — daily Slack ingest cronjob POC.
    • Teaching — set-based vs row-based thinking exploration; visualization resources research.
  • Backlog (deprioritized)
    • Internal — DAT-524 exclude internal Zoho test accounts (13-week carry-over — raise in next 1-on-1 to formally drop or assign owner).
  • Approaching due dates
    • [[Basata]] onboarding call 4 — Tue May 19.
  • Career & Personal Consulting

  • Progress Review — Start / Stop / Keep
    • Keep: full-week throughput discipline. 5 internal closures + 4 presales closures + 4 personal/tooling closures in one week, despite the Showbie hit. The mock-demo workflow you reused for Bicycle Transit (1-day notice from anh Nam) shows compounding leverage from your earlier Jonas Chorum embed-demo investment.
    • Keep: turning AI/tooling thoughts into shipped artifacts. Amp plugin for MCP error logging is a small, well-scoped feedback loop — exactly the “Harness Engineering” pattern from W18 Hashimoto reading. Repeat for the auto-format plugin.
    • Keep: structured loss handling. The Showbie loss note (verbatim quotes, Erin’s reasons, Chukwudi’s call-out) is a model retro — captures both signal and your contribution. Hold this standard for all future losses.
    • Start: applying the 3+ week forcing function rule before it hits 4 weeks. DAT-576 is now 4 weeks out. Treat the Mon-AM W20 slot as non-negotiable; cancel it only for a P0. If it slips again, the honest move is escalation, not silent re-baselining.
    • Start: an explicit pre-mortem on lost-deal artifacts. Showbie revealed two narrative gaps (Looker-migration story + security risk). Build a 1-page “Holistics vs Omni” battlecard now, not after the next deal.
    • Stop: letting Mon-AM strategic blocks be eaten by carry-over closures. Pattern this week: planned exchange-rate slot → consumed by GitHub App + DAT-584. Carry-over closures are tempting because they finish quickly, but they crowd out the high-leverage work. Schedule them in afternoons or batch them on Friday.
  • Workload balance: this week was Internal-heavy (8 items) + Presales-medium (5 items, 1 LOST) + light on Personal/Teaching. Healthy mix. The DAT-560 push (5-week carry-over closure) was the right tradeoff.
  • Skill development opportunity: Bicycle Transit follow-up (Azure DevOps deploy-key pattern, Entra ID, Microsoft Fabric DW) shows you’re becoming the de-facto enterprise integration POC. Consider asking for ownership of “enterprise customer onboarding playbook” as a 6-month deliverable — it concentrates this skill into a formal artifact.
  • Recurring theme: AI tooling shows up in every domain this week — internal dbt CI, Bicycle Transit demo, BuyCo theme, MCP local setup, amp plugin, AMQL feedback. This is your highest-velocity learning area; protect it from scope creep.
  • Watch: the 5-project context switch (Internal, Presales, Docs, Personal, Teaching) flagged in W18 hasn’t been addressed. Focus Days proposal still untested. Recommend trialing in W20: Mon = exchange rate deep work; Tue = presales + reviews; Wed = MRR continuation; Thu = backlog grooming + DAT-499; Fri = wrap-up + tooling.
  • Battlecard prep — search “Looker-to-Omni migration” case studies; Omni’s Looker migration post + recent Erin Oris feedback are direct inputs. Write a Holistics counter-narrative grounded in as-code + AI-native developer experience.
  • Enterprise security postureVanta SOC2 readiness guide, Drata compliance trust center — Showbie loss signals data buyers route through a Security & Compliance Specialist; Holistics needs polished trust artifacts (SOC2 status, threat model, customer-facing security one-pager).
  • Multi-currency reporting in dbtdbt discourse — exchange rate threads and Brooklyn Data Co. — multi-currency dbt patterns. Direct inputs for DAT-576 dim_exchange_rates.
  • Amp PluginsAmp, Rebuilt + plugin examples in the official docs. Read once more after building the JSON→markdown plugin to spot reusable hooks.
  • Azure DevOps SSH integration patternsMicrosoft Learn — SSH key authentication for Azure Repos. Useful for Bicycle Transit follow-up + future Azure-shop onboardings.
  • Microsoft Fabric Data WarehouseMS Fabric DW overview — quick orientation in case Holistics modeling team picks up the connector.
  • Mock-demo automationMockaroo, Faker, dbml-cli. Templatize the Bicycle Transit mock-data pipeline as a reusable Presales asset.
  • BookThe Mom Test by Rob Fitzpatrick. Direct application: the Harsha personal feedback chase — ask about specifics (“what made the Looker migration story land?”), avoid leading questions. Short read, high ROI for presales loss interviews.