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#861merged). 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_leadsto decide where to invest. - Calendly data ingested + transformed;
sales_motiondimension live in dbt and Holistics BI. All 4 sub-issues closed: - PRs landed: dbt#859 (DAT-283 add
sales_motioncolumn), dbt#862 (rep-assignment fix), internal-aml-project#54 (migrate fromtmpmodels →fct_sales_leads). - Refs: Notion DE-202, Ampcode synthesis.
- 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
- DONE — Resolve DAT-555 follow-up (#P1, was IN-PROGRESS) — closed May 7.
- Original failure:
[dbt] Mart Productflow on 2026-03-16 — 3 errors (resource limit onfct_job_queue_performance, PARSE_JSON syntax inmart_product__dataset_datamodel_dimensions, uniqueness test failure ondataset_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_performancemigration 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 v2 → v4 (kept old v3 link since shared with customers); keptReport Job Queue Performance MonitoringandTenant exceeds job queue limit. Done.
- Original failure:
- 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 dbdocsflow on Apr 21 —npx dbdocs build /tmp/output.dbml --project holisticsexited 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.
- Failure:
- 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 created2026-05-03 16:04 VNT). - Root cause:
usersimport 0:00 VNT buttenantsimport 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.
- Trigger (Slack): Triet — "@data please help me check why this returns empty tenant. Users synced but Tenant has not?" (impersonation lookup for
- 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_columnsfordom_calendly__bookings(#P1) — closed May 8.- Refs: Ampcode.
- DONE — Shorten dbt README (dbt#864, #P3) — closed May 8.
- IN-PROGRESS — Review CircleCI PRs for anh Dong (#P1, carry-over from W18).
- Prefect PR #397: done.
- dbt PR #858: tests failing on CI per PR review #4217502670. After DM with anh Dong — debugged: CI false positive — partition change on
circleci_jobsinteracted with CI’s persistent ephemeral schemas (ci_pr_<n>_*); theincremental < 4 daysconfig kept rows built against the OLD partition definition. Dev/prod fine; CI re-ran from a stale baseline. Hit blockerThere are 1 unused configuration paths: models.internal_analytics.domain.circlecialong the way. - Cherry-picked CI workflow improvements (full-refresh directly-modified models) into dbt#861 “DAT-579: Improve CI test workflow” — merged May 5 for clean tracing/changelog. Also a new prefect PR #400. New request note. Notion: Data-model issue uncovered during implementation. Awaiting next review request on #858.
- Refs: Ampcode debug, Ampcode follow-up, Ampcode (latest).
- 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_mrrreadssubscription.exchange_rateset 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.aivsraft.ai). - Sample query Hieu/Triet used to debug (from DAT-177 comment):
→ confirmsselect 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, 3fct_daily_mrralready hasexchange_rate_to_sgdcolumn. 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_sgdlives upstream offct_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).
- Where
- 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_mrr→exchange_rate_to_sgdupstream 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_ratesschema + 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.
- 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
- Honest assessment: Linear scope reads clear (“ingest live rate → replace static rate in
- 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.
- Trigger (Slack verbatim): "
- 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.
- 14-thread sweep in
#holistics-buyco-externalcomplete. Items 13 + 14 advanced this week (item 13 Ampcode / Slack; item 14 Ampcode / Slack). Custom theme thread shipped (Ampcode).
- 14-thread sweep in
- 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.
- Timeline (from HubSpot DM logged May 4 — 1, 2):
- 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.
- DRAFT — Feedback to Khai To on auto-export dashboard PNG (drafted May 5, status
drafton Backlog).- Ask:
holistics dashboard export <id> --format png(preferred) OR extendsubmit_exportto acceptformat=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.
- Ask:
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.
- Inspired by Amp, Rebuilt — Plugins. Logs to
- DONE — Install
slackclilatest (#P3, [[Personal]]) — closed May 7.- Ref: Ampcode.
- DONE — Install RTK rewrite hook ([[Personal]]) — early week.
- DONE — Install
cavemanskill and trial it ([[Personal]]) — week-long trial. Persistence-mode global instruction working as expected; defaultfullintensity. - DONE — Fix
bqCLI dependency warning (#P3, [[Personal]]) — closed May 6.- Resolved the
urllib3 1.26.9 / chardet 7.4.3 / charset_normalizer 2.0.7mismatch on the gcloud 558.0.0 install. No more noise on everybqinvocation.
- Resolved the
- 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_aqlresult 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. - BOOKMARK — LinkedIn 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_sgdupstream). 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.
- 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
- 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-coreof repo dbt to match prefect.
- P3 — Nice to Have
- Personal — auto-format
execute_aqlJSON → markdown plugin (queued from W19 IDEA). - Personal — daily Slack ingest cronjob POC.
- Teaching — set-based vs row-based thinking exploration; visualization resources research.
- Personal — auto-format
- 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.
Recommended resources to learn
- 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 posture — Vanta 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 dbt — dbt discourse — exchange rate threads and Brooklyn Data Co. — multi-currency dbt patterns. Direct inputs for DAT-576
dim_exchange_rates. - Amp Plugins — Amp, Rebuilt + plugin examples in the official docs. Read once more after building the JSON→markdown plugin to spot reusable hooks.
- Azure DevOps SSH integration patterns — Microsoft Learn — SSH key authentication for Azure Repos. Useful for Bicycle Transit follow-up + future Azure-shop onboardings.
- Microsoft Fabric Data Warehouse — MS Fabric DW overview — quick orientation in case Holistics modeling team picks up the connector.
- Mock-demo automation — Mockaroo, Faker, dbml-cli. Templatize the Bicycle Transit mock-data pipeline as a reusable Presales asset.
- Book — The 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.