If you've ever run a book club, you know the pattern. Someone proposes a book over text. Someone else proposes a different book. A third person suggests a compromise. Three weeks later you're meeting at a coffee shop, half the group hasn't read the book, and nobody can find the discussion questions someone promised to bring. Somewhere along the way a meeting got scheduled via a 40-message group chat where everyone has to say "I'm free Tuesday or Thursday after 7 except next Thursday."
bookcircle is for that problem, and the book clubs in my life immediately understood what it was for when I described it.
Six Features, All of Them Load-Bearing
Circles & invites. Start a circle, get a 6-character invite code, share the code with your members. They join via a link, get an account, see the circle dashboard. Admin can rotate codes, manage members, set the current book. No group-chat chaos, no "did you get added?" DMs.
Book voting (SwipeNight-style). Members propose books. The full list shows up as a SwipeNight-style interface (yes/no swipes per book). Votes are tallied. Admin finalizes the pick. Built-in Open Library search means nobody has to manually type book titles, authors, or cover art.
Reading progress. Each member marks their percent or chapter as they go. The group view shows everyone's status so you know who's ahead, who's behind, and — crucially — you don't accidentally spoil someone. Gentle nudge if someone's falling behind.
Discussion board. Threaded posts per circle, reactions, spoiler-aware tags. Spoilers stay hidden until a reader marks themselves caught up. This is the feature that makes the discussion worth having during the read rather than just at the end.
Meeting scheduler. Admin proposes 3-5 candidate slots. Members vote their availability. The system auto-picks the best slot. Download an iCal invite for the confirmed meeting. No more doodle-poll email chains or group-chat negotiation.
AI discussion questions. For the current book, Claude generates 10 open-ended discussion questions tailored to the title, author, and description. When the conversation stalls — and it always stalls around minute 35 — pull up the list.
Why Each of These Is There
Every feature came from a specific, annoying problem that showed up in the book clubs I talked to:
Circles & invites — solves "who's actually in the group" confusion when clubs grow past ~8 people.
Book voting — solves "how do we decide on the next book without a 200-message argument" and cuts the selection process from days to hours.
Reading progress — solves "I don't know if I can talk about chapter 6 yet without ruining it for Karen."
Discussion board — solves "we only talk about the book when we physically meet and by then we've forgotten half our reactions."
Meeting scheduler — solves the group-chat scheduling tax, which is a real thing that makes people dread hosting.
AI discussion questions — solves "I'm the person who prepped questions this month but I haven't had time, and Googling 'book club questions for [title]' returns the same five sites of SEO slop."
If we cut any of these features, we lose a specific recurring pain point. Each one pays for itself.
The Build
Standard Flask + SQLite + dcst. Multi-user auth module (this is one of the verticals that needs it — book clubs are inherently multi-person). Open Library API integration for book metadata. Claude integration via dcch for discussion questions. About 2,200 lines of custom Python, making it one of our larger verticals.
The interesting implementation details:
The SwipeNight voting interface is vanilla JavaScript — no framework, no build step. Borrowed the interaction patterns from the Dangercorn SwipeNight/SwipeBite prototypes we built earlier. Drag or tap, yes/no, next book. Touch-friendly.
The meeting scheduler generates an iCal file on the fly using standard icalendar Python lib. No external service required.
The Claude discussion questions call has an important fallback: if Anthropic is down or the user hasn't set a key, a curated library of 200 general discussion questions ("What was your initial reaction to the ending?" etc) is used instead. The feature degrades gracefully rather than breaking the club.
Quickstart:
git clone https://github.com/Dangercorn-Enterprises/bookcircle.git
cd bookcircle
pip install -r requirements.txt
echo 'BOOKCIRCLE_SECRET=pick-your-own-random-string' > .env
echo 'ANTHROPIC_API_KEY=sk-ant-...' >> .env # optional
python app.py
# → http://localhost:8420
Port 8420 is deterministic — it's always that for bookcircle. See the port hashing post for why.
Pricing
- Self-host: $0 forever. Unlimited circles and members, AI discussion questions if you bring your own Anthropic key.
- Hosted Pro: $19/mo per club. Fully managed, AI discussion questions included, email reminders for meetings, PDF reading-list exports.
- Library / School: $99/mo. Everything in Pro, plus up to 20 clubs per organization, SSO (SAML/OIDC), admin dashboards, phone support.
The "per club" on the Pro tier is deliberate — one family or one small group pays $19 for their circle. A community library or school district with many clubs pays for Library tier instead.
Who It's For
Three groups, in roughly this order:
Established clubs that are tired of running on group-chat and spreadsheets. These are the fastest conversions — they have a specific pain point (scheduling, or book selection, or spoiler management) and the product solves it immediately.
New clubs getting started. These are the slowest conversions but the highest potential — if bookcircle is the tool they learn first, they'll stay.
Library reading programs and school book clubs. The Library / School tier is for these — they need multi-club management, SSO for student/patron accounts, and administrator dashboards. Larger deals, longer sales cycle, more predictable when they close.
Book clubs are a great market because the pain points are universal but the current tooling is terrible. Every club in America has the scheduling problem and the spoiler problem. Nobody has solved them well. The opening is wide.
What's Next
Planned features, in order of likely build priority:
- Audio book support — progress tracking by hours listened rather than pages read. Currently you have to approximate.
- Reading challenges — "read a book from every continent" or "12 books by authors new to you" as structured multi-month group challenges.
- Library sync — pull ebook and audiobook availability from Libby/OverDrive so members can see what's available at their local library.
- Book club marketplace — discover other public bookcircle clubs, join open ones, see popular current reads. (This is a network-effect feature I'm on the fence about — nice for users, complicates self-host story.)
If You're In a Book Club
Self-host it, or try the hosted waitlist. If your club uses it and finds something missing or broken, tell me. This is the kind of vertical where the first 100 active users shape the roadmap, and we're not at 100 yet.