File size: 3,776 Bytes
073c12d
9884451
 
 
 
073c12d
c776726
073c12d
 
 
9884451
073c12d
 
9884451
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
---
title: briefing-32
emoji: πŸ“°
colorFrom: red
colorTo: gray
sdk: gradio
sdk_version: 5.42.0
app_file: app.py
pinned: false
license: apache-2.0
short_description: A 32B-class AI-news briefing the maker runs every 2 hours.
---

# briefing-32

A small-model AI-news briefing agent. Submission for the **Hugging Face
Build Small Hackathon** ([huggingface.co/build-small-hackathon](https://huggingface.co/build-small-hackathon))
in the **Backyard AI** track.

## What it is

This is a deliberate down-port of [`ai-news-agent`](https://github.com/MukundaKatta/ai-news-agent),
a personal cron that already runs every two hours on the maker's laptop to
deliver an AI-news digest to WhatsApp. The production cron uses Groq
Llama-3.3-70B for relevance scoring. Build Small forces the same workflow
under 32B parameters.

The honest story for the Backyard AI track:

> "I have used a personal AI-news briefing every two hours since spring 2026.
> The original uses a 70B model on a free Groq tier. Build Small asked me to
> live under 32B, on a laptop. So I split the single 70B scoring pass into
> two cheaper passes on Qwen3-32B β€” a binary relevance filter, then a graded
> ranker β€” and the digest quality holds up."

## Pipeline

```
fetch (RSS Β· HN Β· arXiv Β· GitHub)
        β”‚
        β–Ό
pass 1 β€” binary relevance filter on Qwen3-32B
        β”‚
        β–Ό
pass 2 β€” graded 0–10 ranker on Qwen3-32B
        β”‚
        β–Ό
digest renderer on Qwen3-32B
```

Two small-model calls do the work one big-model call did before.

## Sources (no Reddit / Bluesky)

- **RSS / Atom**: Anthropic, OpenAI, DeepMind, Google AI, Meta AI, Mistral,
  xAI, HuggingFace, Latent Space, Import AI, The Rundown AI, Stratechery,
  Simon Willison, Karpathy, Lilian Weng, Linus Lee, and several more
  high-signal blogs and newsletters.
- **Hacker News**: AI-tagged stories via the Algolia public API.
- **arXiv**: newest `cs.AI` / `cs.CL` / `cs.LG` submissions.
- **GitHub**: repos with `topic:ai` created in the last 14 days, sorted by stars.

Reddit and Bluesky public endpoints both 403-block traffic in 2026, so the
port drops them. The production cron has the same scars in its logs.

## Run locally

```sh
pip install -r requirements.txt
HF_TOKEN=hf_xxx python app.py
```

Then open the Gradio URL it prints. Click **Run briefing**.

## Run as an HF Space

The repo is shaped like a standard Hugging Face Space. The `README.md`
front-matter wires `app.py` as the entry point and pins the Gradio SDK.
After deploy, the Space's "Settings β†’ Variables and secrets" gets one
secret: `HF_TOKEN` (a read-permission token is plenty).

## Model

Default model: **Qwen/Qwen3-32B** (Apache 2.0, 32B dense, native JSON mode),
routed through HF Inference Providers.

Alternatives that fit Build Small's ≀32B cap and were considered:
`Qwen/Qwen3-30B-A3B`, `deepseek-ai/DeepSeek-R1-Distill-Qwen-32B`,
`mistralai/Mistral-Small-24B-Instruct-2501`. Swap in the sidebar.

## Targeted bonus quests

The hackathon has six optional bonus quests. This submission targets:

- **Field Notes** β€” a write-up about the 70B β†’ 32B down-port and what
  surprised me (see `docs/down-port-notes.md` after the build window).
- **Sharing is Caring** β€” a captured agent trace published alongside the
  Space (see `docs/sample-trace.md`).
- **Off-Brand** β€” custom Gradio theme + layout (see `app.py`).

Optional stretch: **Llama Champion** (a llama.cpp variant for the same
pipeline) + **Off the Grid** (the llama.cpp variant doubles for that badge).

## License

Apache 2.0.

## Credit

Built by [Mukunda Katta](https://github.com/MukundaKatta) as an independent
project for Build Small. The production cron it down-ports is
[`MukundaKatta/ai-news-agent`](https://github.com/MukundaKatta/ai-news-agent).