Wino.Mail.AI.OpenAI
0.1.0-alpha.36
See the version list below for details.
dotnet add package Wino.Mail.AI.OpenAI --version 0.1.0-alpha.36
NuGet\Install-Package Wino.Mail.AI.OpenAI -Version 0.1.0-alpha.36
<PackageReference Include="Wino.Mail.AI.OpenAI" Version="0.1.0-alpha.36" />
<PackageVersion Include="Wino.Mail.AI.OpenAI" Version="0.1.0-alpha.36" />
<PackageReference Include="Wino.Mail.AI.OpenAI" />
paket add Wino.Mail.AI.OpenAI --version 0.1.0-alpha.36
#r "nuget: Wino.Mail.AI.OpenAI, 0.1.0-alpha.36"
#:package Wino.Mail.AI.OpenAI@0.1.0-alpha.36
#addin nuget:?package=Wino.Mail.AI.OpenAI&version=0.1.0-alpha.36&prerelease
#tool nuget:?package=Wino.Mail.AI.OpenAI&version=0.1.0-alpha.36&prerelease
Wino Mail AI
Mail-intelligence infrastructure shared by Wino Mail and Wino Mail API.
The solution separates four concerns:
- provider-neutral mail, artifact and metering contracts;
- deterministic HTML sanitization, visible-text extraction and content hashing;
- OpenAI structured generation, the current implementation of the summarization stage;
- the TypeSafe Jev adapter, the current implementation of the classification stage.
Processing is classification first, summarization second. Classification answers a fixed set of typed questions for every selected message — one Noul per smart label, one Noul for briefing inclusion, one Choice for priority and one Choice for the single action the recipient would take. Summarization writes a headline and a one-line summary, and only for the messages classification included in the briefing.
The two stages are named for what they do, not for the models behind them. TypeSafe's Jev
implements classification today and OpenAI implements summarization; either can be replaced
without changing MailClassificationArtifact or MailSummaryArtifact.
Jev returns typed, calibrated answers and never generates free-form text. It also reads
dates as text rather than ordered quantities and cannot count or do arithmetic, so no caller
may ask it for dates, totals or multi-hop conclusions. Keep that work in application code.
Its accuracy degrades when unrelated context is present, so JevMailClassifier projects a
deliberately tight state.
Question wording and thresholds are supplied by the caller and belong in server configuration. Calibrating a threshold must never require a contract change.
The packages are published publicly on nuget.org. The workflow requires the repository
NUGET_API_KEY secret and verifies every package after publication.
docs/architecture.md describes the pipeline these packages compose, including the identity
and freshness rules and the configuration boundary.
Build
dotnet restore Wino.Mail.AI.slnx
dotnet build Wino.Mail.AI.slnx --no-restore
dotnet test Wino.Mail.AI.slnx --no-build
Tests that call a paid provider are skipped unless WINO_AI_LIVE_TESTS=1 and
WINO_AI_OPENAI_TEST_KEY are both set, so a normal run costs nothing.
No NuGet credentials belong in source control. Configure NUGET_API_KEY as a GitHub Actions
repository secret before dispatching the public publication workflow.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.Http (>= 10.0.10)
- Wino.Mail.AI.Abstractions (>= 0.1.0-alpha.36)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0-alpha.4 | 0 | 9/24/2026 |
| 3.0.0-alpha.3 | 0 | 9/24/2026 |
| 3.0.0-alpha.1 | 0 | 9/24/2026 |
| 0.1.0-alpha.38 | 45 | 9/20/2026 |
| 0.1.0-alpha.37 | 43 | 9/20/2026 |
| 0.1.0-alpha.36 | 49 | 9/20/2026 |
| 0.1.0-alpha.35 | 49 | 9/19/2026 |
| 0.1.0-alpha.34 | 60 | 9/9/2026 |
| 0.1.0-alpha.33 | 68 | 9/3/2026 |
| 0.1.0-alpha.32 | 81 | 8/17/2026 |
| 0.1.0-alpha.29 | 77 | 8/15/2026 |
| 0.1.0-alpha.23 | 76 | 8/13/2026 |
| 0.1.0-alpha.22 | 70 | 8/13/2026 |
| 0.1.0-alpha.21 | 63 | 8/12/2026 |
| 0.1.0-alpha.20 | 88 | 8/12/2026 |
| 0.1.0-alpha.19 | 76 | 8/12/2026 |
| 0.1.0-alpha.18 | 73 | 8/12/2026 |
| 0.1.0-alpha.17 | 75 | 8/12/2026 |
| 0.1.0-alpha.15 | 73 | 8/12/2026 |
| 0.1.0-alpha.11 | 74 | 8/9/2026 |