Research projects carried out by AI tools
Each directory in this repo is a separate research project carried out by an LLM tool - usually Claude Code. Every single line of text and code was written by an LLM.
This repo follows the pattern described in Code research projects with async coding agents like Claude Code and Codex.
Prompts and links to transcripts are included in the PRs that added each report, or in the commits.
Times shown are in UTC.
3 research projects
Franchise-Optimierer (Grundversicherung KVG, Schweiz) (2026-11-04 08:55)
A single-page web tool calculates which Swiss KVG basic-insurance deductible (Franchise) is cheapest given a user's monthly premiums and expected annual treatment costs, covering all six statutory tiers from CHF 300 to CHF 2,500. The cost model sums annual premiums, the deductible portion, and the 10% coinsurance — importantly capping coinsurance at the legally mandated CHF 700 per year for adults, without which results at high cost levels would be wrong. Beyond the point estimate, it sweeps costs in CHF 1 increments to derive break-even ranges, rendered as a colour band beneath a hand-drawn SVG chart plus a sorted tooltip across all tiers. Where only the CHF 300 premium is known, a helper estimates the rest using the maximum statutory discount (up to 70% of additional risk, Art. 95 KVV, adjustable). It is available at franchise-optimierer, with premium data sourced from priminfo.admin.ch.
- Results are typically "all or nothing": CHF 2,500 wins at low expected costs, CHF 300 at high ones; intermediate tiers only pay off when their discount is large relative to the deductible step.
- Implemented as one dependency-free
index.html(vanilla JS, custom SVG chart), with Swiss number formatting, lenient input parsing (206.40,206,40,1'000), dark mode, and localStorage-only persistence. - Out of scope: hospital daily contribution, maternity, child/youth tariffs, alternative insurance models, and supplementary insurance.
Which open-weights LLM actually runs well on a 4060 Ti 16 GB? (2026-09-02 11:46)
An architecture-first modelling exercise evaluated seven 27–35B open-weights LLMs on a single fixed rig (RTX 4060 Ti 16 GB, 48 GB DDR4-3200, i5-6600K) to find which can hit ≥32k context at >10 tok/s under Q4/IQ4 quantisation. Rather than benchmarking — the research environment had no GPU and blocked Hugging Face — it builds a per-architecture VRAM and decode-loop model, validated against two published KV-cache figures to within 2%, and ships it as both a Python tool and an interactive planner plus a bench.sh calibration script to fold real measurements back in. The headline conclusion is that MoE models with selective expert offload (--n-cpu-moe in llama.cpp) dominate: Qwen3.6-35B-A3B-MTP at IQ4_XS is predicted at ~39 tok/s at 32k, while all three dense candidates fall to 1.5–9 tok/s.
Key findings:
- The CPU offload path on Skylake AVX2 is core-bound (~2.2 GB/s per core, ~8.8 GB/s total), not RAM-bound — so faster memory buys nothing, and every offloaded byte costs ~26× GPU time.
- Minimising offload beats picking a "better" quant: GLM-4.7-Flash goes 20.9 → 35.6 tok/s simply by choosing IQ4_XS over UD-Q4_K_XL.
- None of the seven is a plain transformer (GatedDeltaNet, Mamba-2, MLA, sliding-window hybrids), so generic VRAM calculators mis-size all of them; long context turns out to be cheap and weights are the binding constraint.
- vLLM is the wrong engine here because nothing fits in 15 GiB and it has no selective expert offload; revisit at 24 GB.
- Freeing ~500 MB of VRAM (headless / iGPU desktop) takes dense Muse-Glimmer-30B from 9.0 to 14.5 tok/s — more valuable than any flag.
- Caveats flagged: Nemotron's quoted 25.48 GB "Q4_K_M" is 6.79 bits/param and likely mislabelled; GLM-4.7-Flash's attention type (MLA vs MHA) is ambiguous and changes its verdict; absolute tok/s carries ±30% until calibrated, though the ranking is stable across all parameter sweeps.
3D Stroke Type (2026-08-30 19:25)
A browser toy that types text as extruded 3D letters, built entirely from a hand-authored stroke font and a single 2D canvas — no WebGL, no font files, roughly 600 lines of JavaScript. Each glyph is a builder function parameterized by cap height (in grid squares) and stroke width, with centre lines placed so that stroke edges land exactly on grid intersections; straight strokes are used wherever a letter permits, arcs only where the shape demands them (S, O, C, G, Q, U, most digits). Chains are offset along angle bisectors, extruded into prisms with analytic per-face normals, back-face culled, and drawn with a painter's algorithm under a point light with ambient/Lambert/Blinn shading. Shadows come from projecting each prism's eight corners onto a floor plane and compositing the convex hulls once through an offscreen canvas, so overlaps stay soft rather than stacking to black. The live demo exposes depth, stroke, cap height, light distance, intensity and softness as knobs, plus a draggable sun and orbiting camera.
- Grid alignment is verified programmatically, not by eye: axis-aligned glyphs across 20 cap-height × stroke-width combinations assert every prism vertex hits a lattice point, with worst error 3.6e-15 squares.
- The first verification run caught a real bug — degenerate chains for
.and:were nudged into stubs, putting 12 vertices off by 1e-4. - Screen-drag to world-space light movement uses a numerically built 2×2 Jacobian of the projection, inverted and iterated Newton-style; the lamp is stored as a canvas fraction so it survives view refits.
- Grid sizing needs an inverse projection onto a constant-z plane, which reduces in closed form to a 2×2 linear system solved at the canvas corners.
- Known gaps: letters don't shadow each other, the font is caps-only, and diagonals/curves can only be pinned at endpoints and extremes.
Updating this README
This README uses cogapp to automatically generate project descriptions, with summaries written by the Claude API via LLM and llm-anthropic.
Automatic updates
A GitHub Action runs cog -r -P README.md on every push to main and commits any changes to the README or new _summary.md files. It needs an ANTHROPIC_API_KEY repository secret.
Manual updates
To update locally, with ANTHROPIC_API_KEY set in your environment:
uvx --with llm --with llm-anthropic --from cogapp cog -r -P README.mdThe script automatically:
- Discovers all subdirectories in this folder
- Gets the first commit date that touched each folder's
README.mdand sorts by date, newest first - For each folder, checks if a
_summary.mdfile exists - If the summary exists, it uses the cached version
- If not, it generates a new summary with `llm -m
anthropic/claude-opus-5
- Creates markdown links to each project folder on GitHub
- New summaries are saved to
_summary.mdto avoid regenerating them on every run
To regenerate a specific project's description, delete its _summary.md file and run cog again.