Skip to content

Commit 9261d8a

Browse files
RyanAlbertsclaude
andauthored
release: v0.2.0 (#16)
Phase 2 release. Cumulative changes since 0.1.0: - PR #11: depth=1 polite website crawl, OSS posture unknown rate 55% -> 21%, identified tech-stack mentions 14 -> 41 - PR #12: Apache ECharts replaces static CSS bars in dashboard - PR #14: VC-style .pptx deck + anti-hallucination Layer 2 - PR #15: narrative .docx memo + dual-output ycai report 149 tests passing. Mypy strict clean. python -m build produces a clean 0.2.0 wheel + sdist. CHANGELOG and README updated to reflect shipped Phase 2 status. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 8df8c68 commit 9261d8a

4 files changed

Lines changed: 16 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
_(no changes since 0.2.0)_
11+
12+
## [0.2.0] — 2026-05-01
13+
14+
Phase 2 release. Adds the depth=1 website crawler that lifts OSS-posture
15+
classification from 55% unknown to 21%, replaces the dashboard's static CSS
16+
bars with Apache ECharts, and ships the VC-style `.pptx` deck and narrative
17+
`.docx` memo with a second anti-hallucination layer that scans aggregate
18+
prose for forbidden hedge phrases and audits every number against the same
19+
dataframe the dashboard cites.
20+
1021
### Added
1122
- **PR #11 — depth=1 website crawl (B007 resolved)**: new `src/ycai/crawler.py` module. Polite, robots-aware, max 5 pages per company, 30 KB per page, 4-second timeout. Pages ranked by signal-path priority (`/pricing`, `/security`, `/about`, `/docs`, `/open-source`, …). HTML stripped and PII-sanitized before any LLM call. Crawled URLs are also accepted by the source-URL guard so the LLM can cite specific pages as evidence. New `--no-crawl` flag opts out.
1223
- W26 with crawler enabled: **OSS posture `unknown` rate dropped 55% → 21%** (target was <30%). Tech-stack identified mentions: 14 → 41. Vision capability: 17 → 26. Multimodal: 17 → 22.
@@ -56,5 +67,6 @@ First publishable release. End-to-end pipeline that pulls the latest YC batch, c
5667

5768
103 tests passing. Mypy `--strict` clean. CI runs ruff, mypy, pytest, detect-secrets, gitleaks, and a custom credential-pattern sweep on every PR.
5869

59-
[Unreleased]: https://github.com/RyanAlberts/yc-ai-pulse/compare/v0.1.0...HEAD
70+
[Unreleased]: https://github.com/RyanAlberts/yc-ai-pulse/compare/v0.2.0...HEAD
71+
[0.2.0]: https://github.com/RyanAlberts/yc-ai-pulse/releases/tag/v0.2.0
6072
[0.1.0]: https://github.com/RyanAlberts/yc-ai-pulse/releases/tag/v0.1.0

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "yc-ai-pulse"
3-
version = "0.1.0"
3+
version = "0.2.0"
44
description = "Open-source YC batch analyzer — VC-style report and dashboard for the most recent Y Combinator batch."
55
readme = "README.md"
66
requires-python = ">=3.11"

src/ycai/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
Phase 0 stub. Feature modules land in subsequent PRs.
44
"""
55

6-
__version__ = "0.1.0"
6+
__version__ = "0.2.0"

tests/test_smoke.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010

1111
def test_package_imports() -> None:
12-
assert ycai.__version__ == "0.1.0"
12+
assert ycai.__version__ == "0.2.0"
1313

1414

1515
def test_cli_version_subcommand() -> None:

0 commit comments

Comments
 (0)