Introduction
Greghaus is an internal tool for Readwise engineers that helps collect the context needed to investigate issues faster.
Today, Greghaus is focused primarily on Dev Help triage. That path is the most complete part of the product, and the docs in this section will keep evolving as more integrations and workflows ship.
Access
- An issue surfaces — a report in Slack
#dev-help(support ticket or Sentry/New Relic upticks pending). - Classify the bug using heuristics to determine what type of issue it is (parsing, sync, client-side, server-side, etc.).
- Search Linear and Slack for prior discussion and existing tickets to avoid duplicate work.
- Based on the classification, pull only the relevant data — e.g. a parsing issue doesn't need Supernova user data, a feature request might need Canny context instead of Sentry traces.
- Present a report in the dashboard with all the context gathered. If the on-call engineer clicks through, Triager can append to an existing ticket or create a new one.
- If the bug is well-understood, have Triager draft a PR with the proposed fix.
Integration summary
Internal context
| Service | What it provides | Typical use during triage | Status |
|---|---|---|---|
| Slack | Team communication (all channels) | Receive bug reports from #dev-help; search across all channels for prior discussion and context |
✅ |
| Linear | Issue tracking | Find existing tickets with related context, avoid duplicates | 🔜 |
| Canny | Feature requests and vote counts | Determine if an issue is a feature request rather than a bug, check how popular/requested it is | 🔜 |
| Readwise Docs | Official product documentation (docs.readwise.io) | Source of truth for how features should work — verify whether reported behavior is a bug or intended, check documented limitations | 🔜 |
Customer context
| Service | What it provides | Typical use during triage | Status |
|---|---|---|---|
| HelpScout | Customer email history | Read the full support thread, see prior complaints, check ticket status | ✅ |
| Supernova | Enriched user data | Look up account state, subscription, devices for a specific user | 🔜 |
| Prod databases | Readwise and Bookstore DBs | Direct queries when you need data not surfaced by other tools | ✅ |
Bug tracking
| Service | What it provides | Typical use during triage | Status |
|---|---|---|---|
| New Relic | Client-side error and performance data | Spot frontend bugs, JS exceptions, page load regressions | 🔜 |
| Sentry | Server-side error tracking | Investigate backend exceptions, stack traces, breadcrumbs | 🔜 |
| Postgres (outgoing email) | Email send checking | Verify outgoing email delivery status | 🔜 |
| GitHub / Codebase | Source code search and analysis | Investigate code paths, identify root cause, find related changes in git history | 🔜 |
Slack (communication)
#dev-help is the primary entry point — the support team posts bug reports there for the on-call engineer. Triager monitors this channel as a key triage input. Beyond #dev-help, Triager searches across all Slack channels for prior conversation, related incidents, and context that can enrich the investigation. During triage, use it to answer:
- What did the support team report in
#dev-help? - Has someone already looked into this?
- Was there a recent deploy or config change that might be related?
- Is there a thread with investigation notes from a previous incident?
Readwise Docs (product documentation)
The official Readwise documentation at docs.readwise.io is the source of truth for how features are supposed to work. During triage, use it to answer:
- Is this reported behavior actually a bug, or is it working as documented?
- What are the documented limitations of this feature?
- Has this feature's behavior been intentionally changed recently?
- What's the correct workflow the user should be following?
This is especially valuable for "lookup" classifications — when someone asks "does X support Y" or "how does Z work", the docs may already have the answer without needing any investigation.
Linear (tickets)
Linear integration lets you search existing tickets for prior context. During triage, use it to answer:
- Has this been reported before?
- Is there an existing ticket with investigation notes?
- What was the resolution last time this happened?
HelpScout (customer emails)
HelpScout gives access to the full customer support inbox. During triage, use it to answer:
- What exactly did the user report, in their own words?
- How many users have written in about this?
- Is there an ongoing thread with more detail or reproduction steps?
Canny (feature requests)
Canny tracks feature requests and vote counts. During triage, use it to answer:
- Is this a feature request rather than a bug?
- How popular or requested is this feature? How many votes does it have?
- Has this already been requested and tracked?
New Relic (client errors)
New Relic surfaces errors and performance problems happening in the browser or mobile client. During triage, use it to answer:
- Is this a client-side problem or server-side?
- Which browsers/OS versions are affected?
- Did error rates spike after a recent deploy?
Sentry (server errors)
Sentry captures backend exceptions with full stack traces, request context, and breadcrumbs. During triage, use it to answer:
- What exception is being thrown and where?
- How many users are affected?
- Is this a new issue or a regression?
Supernova (user data)
Supernova provides enriched data about a specific user. During triage, use it to answer:
- What plan/subscription is this user on?
- What device and app version are they using?
- Is there anything unusual about their account state?
Prod databases (Readwise & Bookstore)
Direct database access for when you need data that other tools don't surface. During triage, use it to answer:
- What does this user's data actually look like in the DB?
- Are there data integrity issues causing the bug?
- How many rows/users are affected by this issue?
Postgres (outgoing email)
Checks outgoing email delivery status. During triage, use it to answer:
- Did the user actually receive the email?
- When was the last email sent to this address?
- Are there delivery failures or bounces?
GitHub / Codebase (source code)
The codebase (via GitHub or local clone) is a key enrichment source during triage. Once a bug is classified, Triager can search the code for relevant components, error handling paths, and recent changes. During triage, use it to answer:
- Where is the code that handles this feature?
- Has this area been changed recently (git log)?
- What error handling exists — could it be swallowing errors silently?
- Is there a known pattern or TODO comment about this issue?
Tech stack
- Django backend with Django Ninja API
- Tailwind CSS frontend
- ContextOne for data enrichment
- Integrations via service-specific API clients