You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What ships
- src/ycai/reports/docx.py: 9-section narrative memo per USER.md
document-format discipline. Title, headline, coverage methodology,
the agentic batch (capability heatmap), industry distribution, tech
stack + OSS posture, six company spotlights, unanswered questions,
reproducibility footer. Same analytics.py math as the deck. Same
Layer 2 audit pre-write.
- src/ycai/reports/anti_hallucination.py: date-pattern stripping
extended to YC-batch labels ('Winter 2026') and bare 4-digit years
flanked by non-digits. The drift checker no longer surfaces years
as numerical drift.
- src/ycai/cli.py: 'ycai report <run-dir>' now produces both deck +
memo by default. --deck-only / --memo-only constrain.
- pyproject.toml: python-docx>=1.1 dep, mypy override extended to
ycai.reports.docx (same untyped-import situation as ppt).
Tests: 4 new docx tests (149 total). Validates the .docx is a valid
zip with word/document.xml, contains 'coverage' + 'agents' in the
body, embeds >=3 chart images, aborts on a forbidden phrase smuggled
into a company rationale, builds even with empty quote candidates.
Real W26 memo captured at examples/output/report-w26-pr15-2026-05-01.docx.
4 chart PNGs (capability heatmap, industry bar, OSS pie, tech stack
bar). ~47 paragraphs. Layer 2 audit clean on the real run.
Phase 2 of the project plan is now shipped: depth=1 crawler (PR #11),
ECharts dashboard (PR #12), .pptx deck (PR #14), .docx memo (PR #15).
Phase 3 (Chrome extension) lives at the v1.0 milestone.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
17
17
18
18
### Phase 2 — reports
19
19
-**PR #14 — VC-style `.pptx` deck with anti-hallucination Layer 2.** New `src/ycai/analytics.py` is the single source of chart math, consumed by both the dashboard (ECharts JSON) and the deck (matplotlib PNG). New `src/ycai/reports/ppt.py` builds a 16-slide deck (cream/orange palette, sans/serif typography). Each chart is a matplotlib PNG anchored to the same Counter the dashboard used. `ycai report <run-dir>` produces `deck.pptx` from existing artifacts at zero LLM cost. New `src/ycai/reports/anti_hallucination.py`: forbidden-phrase scan + numerical-drift check + date-pattern stripping. Two prose streams audited separately — aggregate commentary gets full drift check, per-company taglines/rationales get forbidden-phrase only (Layer 1 already gated their source URLs). 24 new tests (145 total).
20
+
-**PR #15 — narrative `.docx` memo.** New `src/ycai/reports/docx.py` builds a 9-section narrative memo per USER.md document-format discipline: title, headline, coverage methodology, the agentic batch (capability heatmap), industry distribution, tech stack + OSS posture, six company spotlights, unanswered questions, reproducibility. Same `analytics.py` math as the deck, same Layer 2 audit pre-write. Date-pattern stripping extended to YC-batch labels ("Winter 2026") and bare 4-digit years. `ycai report <run-dir>` now produces both `deck.pptx` and `report.docx`; `--deck-only` / `--memo-only` to constrain. 4 new tests (149 total).
See [CHANGELOG.md](CHANGELOG.md) for what 0.1.0 includes, [BACKLOG.md](BACKLOG.md) for the working backlog, and `docs/decisions/` for architecture decisions.
Copy file name to clipboardExpand all lines: examples/README.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,8 @@ Sanitized sample artifacts. Every commit goes through `make publish-check` so PI
4
4
5
5
| File | What |
6
6
|---|---|
7
-
|[`output/deck-w26-pr14-2026-05-01.pptx`](output/deck-w26-pr14-2026-05-01.pptx)|**PR #14 VC-style deck — current best.** 16 slides, a16z-feel palette, matplotlib chart PNGs anchored to the same data the dashboard uses. Anti-hallucination Layer 2 ran before write (no forbidden phrases, no numerical drift). |
7
+
|[`output/deck-w26-pr14-2026-05-01.pptx`](output/deck-w26-pr14-2026-05-01.pptx)|**PR #14 VC-style deck.** 16 slides, a16z-feel palette, matplotlib chart PNGs anchored to the same data the dashboard uses. Anti-hallucination Layer 2 ran before write. |
8
+
|[`output/report-w26-pr15-2026-05-01.docx`](output/report-w26-pr15-2026-05-01.docx)|**PR #15 narrative memo.** 9 sections, ~47 paragraphs, 4 embedded chart PNGs. Headline finding, coverage methodology, capability heatmap with analysis, industry distribution, tech-stack/OSS-posture caveat, six company spotlights, unanswered questions. Layer 2 audit clean. |
8
9
|[`output/dashboard-w26-pr12-2026-05-01.html`](output/dashboard-w26-pr12-2026-05-01.html)|**PR #12 dashboard — current best HTML.** Same W26 data, ECharts canvases (real heatmap, pies, bars). |
9
10
|[`output/dashboard-w26-pr11-2026-05-01.html`](output/dashboard-w26-pr11-2026-05-01.html)| PR #11 dashboard with the depth=1 crawl but static CSS bars. Useful for comparing visual fidelity vs. PR #12. |
10
11
|[`output/analyses-w26-pr11-2026-05-01.json`](output/analyses-w26-pr11-2026-05-01.json)| Source data for both PR #11 and PR #12 dashboards. 113/124 high-confidence. |
0 commit comments