zeroae / zeroae/zae-limiter

📝 Update README and docs with new positioning strategy

Open
#165 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

documentation
Dominant language
Python
Stars
0
Forks
0
Avg merge
6h 51m
Merged PRs (30d)
104

Description

Summary

Update README, docs, and GitHub description to reflect the new positioning strategy focused on "variable-cost operations" rather than LLM-specific messaging.

Core Positioning

Tagline:

Rate limiting for variable-cost operations

The Pattern:

Estimate → Execute → Reconcile

Why it exists:

Traditional rate limiters require knowing the cost before the request. zae-limiter lets you estimate, execute, then reconcile with the actual usage.

Messaging Hierarchy

Level 1 - Tagline:

Rate limiting for variable-cost operations

Level 2 - The Pattern:

Estimate before, execute, reconcile after. For operations where you don't know the cost upfront.

Level 3 - Examples:

  • LLM APIs (token count varies by response)
  • Video/audio processing (duration unknown until complete)
  • Metered APIs (response size varies)
  • Data pipelines (records scanned varies)
  • Streaming responses (bytes sent unknown until done)

Level 4 - Technical Features:

  • adjust() for post-hoc reconciliation
  • Hierarchical limits (user → org → global)
  • Multi-dimension limits (RPM + TPM in one call)
  • DynamoDB-native (~$1/1M requests)
  • Audit logging built-in

Changes Required

1. GitHub Repository Description

Current: (check current)

New: "Rate limiting for variable-cost operations - estimate, execute, reconcile"

2. README.md

Restructure to lead with the pattern:

# zae-limiter

**Rate limiting for variable-cost operations.**

Traditional rate limiters require knowing the cost before the request. 
zae-limiter lets you estimate, execute, then reconcile with actual usage.

## The Pattern

\`\`\`python
async with limiter.acquire(entity_id, limits, consume={"units": estimated}) as lease:
    result = await do_operation()
    await lease.adjust(units=actual - estimated)  # Reconcile
\`\`\`

## Use Cases

- **LLM APIs** - Token count varies by response
- **Video processing** - Duration unknown until complete  
- **Metered APIs** - Response size varies
- **Data pipelines** - Records scanned varies
- **Streaming** - Bytes sent unknown until done

## Features

- \`adjust()\` for post-hoc reconciliation
- Hierarchical limits (user → org → global)
- Multi-dimension (requests + units in one call)
- DynamoDB-native (~$1/1M requests)
- Audit logging built-in

## Quick Start
...
\`\`\`

### 3. Docs Landing Page (docs/index.md)

Lead with problem:
> Building APIs with variable-cost operations? Need to limit usage when you don't know the cost upfront?

### 4. Docs Guide Intro

Update to list multiple examples, not just LLM:
- LLM tokens
- Video processing
- Metered APIs
- Data pipelines
- Streaming responses

### 5. PyPI Description

Mirror the README intro.

### 6. Module Docstring (src/zae_limiter/__init__.py)

Update to reflect new positioning.

## Key Differentiators to Emphasize

| Differentiator | Message |
|----------------|---------|
| `lease.adjust()` | "Reconcile with actual usage after the operation" |
| Variable-cost focus | "Built for operations where cost isn't known upfront" |
| Hierarchical | "Cascade limits from user → org → global" |
| Multi-dimension | "Multiple limits (requests + units) in one call" |
| DynamoDB | "No Redis to manage, ~$1/1M requests" |

## What to De-emphasize

| Feature | Why |
|---------|-----|
| "Token bucket algorithm" | Everyone has this, not differentiating |
| DynamoDB performance | It's slower than Redis, don't highlight |
| CloudFormation | Implementation detail |
| Generic "rate limiting" | Too crowded |

## SEO Keywords to Target

**Primary:**
- "variable cost rate limiting"
- "rate limiter with adjustment"
- "post-hoc rate limiting"
- "DynamoDB rate limiter"

**Secondary:**
- "LLM rate limiting" / "token budget"
- "metered API rate limiting"
- "per-user rate limits Python"

## Acceptance Criteria

- [ ] GitHub repo description updated
- [ ] README restructured with new positioning
- [ ] Docs landing page updated
- [ ] Guide intro lists multiple use cases (not just LLM)
- [ ] PyPI description matches README
- [ ] Module docstring updated
- [ ] Consistent messaging across all touchpoints

## Related

- #147 - "Is zae-limiter right for you?" section
- #148 - Alternatives/comparison page

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by comparing README.md with the current GitHub description and inspect docs/index.md, the docs guide intro, and src/zae_limiter/init.py. Update each listed touchpoint to use the variable-cost positioning and examples while preserving the documented technical features. Done means the README, docs, PyPI description, module docstring, and repository description are consistent and all acceptance criteria are checked.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
content, documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.