HARNESTS
Today£0.00
← all jobs
engineering·£1.00·done in seconds

ADR Generator from Notes

An Architecture Decision Record written from your meeting or Slack notes.

·

Your inputs

Fill the required fields above to enable.

More from Engineering

What you get

Get a written Architecture Decision Record in a standard format, including Title, Status, Context, Decision, Consequences, and Alternatives considered.

Who it's for

  • Software architects documenting design decisions
  • Technical leads writing meeting notes
  • Engineering managers reviewing project trade-offs
  • DevOps teams maintaining asynchronous documentation

Use cases

  • Documenting a new database schema after a team meeting
  • Recording the reasoning behind a recent infrastructure change
  • Creating a knowledge base for onboarding new team members
  • Justifying a technical debt payoff strategy to stakeholders
  • Preserving institutional knowledge during team turnover

FAQ

what is an architecture decision record

An Architecture Decision Record is a document that captures a decision made during a project, including the context, consequences, and alternatives considered. It typically follows a standard format.

how long does it take to generate

You'll receive your Architecture Decision Record for £1.00 immediately after providing the required inputs, including a one-sentence decision and discussion notes.

can i customise the output format

The Architecture Decision Record is generated in a standard format, including Title, Status, Context, Decision, Consequences, and Alternatives considered, to ensure clarity and consistency.

what if i dont have meeting notes

You can provide any relevant discussion notes, such as Slack conversations or asynchronous documentation, to generate your Architecture Decision Record.

Sample output

**Title:** Replace Postgres with SQLite for Billing Service
**Status:** Proposed

**Context:** The billing service requires a database to store and manage billing information. Initially, we considered using Postgres (Aurora) or MySQL (PlanetScale) due to their high scalability and performance. However, after re-evaluating our requirements, we are considering using SQLite (Turbo) as a simpler and more lightweight alternative.

**Decision:** We will use SQLite (Turbo) instead of Postgres for the billing service. This decision is based on the fact that our billing service will have a limited number of writers, with only one writer per billing row, which reduces the concern of write contention.

**Consequences:**
* Positive: Reduced complexity, easier setup and maintenance, and lower operational costs.
* Negative: Write contention may still occur at high write volumes (>200 writes/sec on a single billing row), potentially leading to performance issues. Additionally, SQLite may not scale as well as Postgres or MySQL for very large datasets.

**Alternatives considered:**
* Postgres (Aurora): Rejected due to increased complexity and higher operational costs. While Postgres provides high scalability and performance, it may be overkill for our current billing service requirements.
* MySQL (PlanetScale): Rejected due to similar concerns as Postgres, including higher operational costs and increased complexity. Additionally, MySQL may require more maintenance and tuning to achieve optimal performance.

Mitigation strategies for the potential write contention issue include sharding by tenant in phase 2, which will help distribute the write load and reduce contention. We will monitor the performance of the billing service and adjust our strategy as needed to ensure optimal performance and scalability.

Last updated: 2026-06-28

ADR Generator from Notes | Harnests - End of the string.\n9. `i` - Flag for case-insensitive matching.\n\n**Worked Examples:**\n1. Input: \"SW1A 1AA\" → Match: \"SW1A 1AA\"\n2. Input: \"M1 1AE\" → Match: \"M1 1AE\"\n3. Input: \"sw1a1aa\" → Match: \"sw1a1aa\" \n\nNote: The case-insensitive flag (`i`) allows the regex to match postcodes regardless of the case used in the input string."},"createdAt":"2026-06-28 11:47:36.596823+00"},{"id":456,"slug":"database-schema-explainer","name":"Database Schema Explainer","niche":"engineering","description":"A plain-English walkthrough of a SQL schema — what each table holds, key relationships, gotchas.","inputFields":[{"key":"ddl","type":"textarea","label":"Schema DDL (CREATE TABLE statements)","required":true,"maxLength":6000,"placeholder":"CREATE TABLE users (id uuid PRIMARY KEY, ...);\\nCREATE TABLE orders (id uuid PRIMARY KEY, user_id uuid REFERENCES users(id), ...);"}],"systemPrompt":"You explain SQL schemas like a senior engineer onboarding a new joiner. Sections: Per-table walkthrough (2–3 sentences each), Relationships (FK map), Things to watch (1–3 gotchas — soft deletes, denormalisation, surprising defaults, ON DELETE CASCADE). Refer only to tables/columns present in the DDL. Banned: \"appears to\", \"might\". Example — Bad: \"The orders table appears to reference users.\" Good: \"`orders.user_id` is a FK to `users.id` with no ON DELETE — deleting a user will fail if orders exist.\" Before responding: confirm every named column exists in the DDL.","userPromptTemplate":"Schema:\n{ddl}\n\nReturn the walkthrough in the structure above.","model":"claude-haiku-4-5-20251001","maxTokens":600,"priceGbp":1,"isActive":true,"outputType":"text","imageSize":null,"subcategory":"General","seo":{"faq":[{"a":"The explanation includes a per-table walkthrough, key relationships, and potential gotchas such as soft deletes and denormalisation. The walkthrough is approximately 2-3 sentences per table and is delivered in a plain-English format.","q":"what is included in the database schema explanation?"},{"a":"You provide your SQL schema by copying and pasting your DDL (CREATE TABLE statements) into a textarea. The system will then generate a personalised explanation based on your schema.","q":"how do i provide my sql schema?"},{"a":"The database schema explanation costs £1. This is a one-time payment and you will receive your explanation immediately after payment.","q":"how much does the database schema explanation cost?"},{"a":"The explanation is delivered in a plain-English text format, with each section clearly labelled and easy to understand. The format is designed to be easy to read and understand, even for those without extensive technical knowledge.","q":"what format is the explanation delivered in?"}],"useCases":["Trying to understand a database schema for a new project","Debugging a database issue and needing to review the schema","Onboarding to a new team and needing to learn the database structure","Reviewing a legacy codebase and needing to understand the database design","Preparing for a technical interview and wanting to review database concepts"],"whoItsFor":["Junior developers onboarding to a new project","Data analysts trying to understand a complex database","DevOps engineers debugging database issues","Backend engineers reviewing a legacy codebase"],"whatYouGet":"Get a plain-English explanation of your SQL schema in a personalised walkthrough, including key relationships and potential gotchas, all for £1.","sampleOutput":"### Per-table walkthrough\nThe `users` table has a primary key `id` of type `uuid`, which uniquely identifies each user. This table stores information about the users in the system. The `users` table does not reference any other tables.\n\nThe `orders` table has a primary key `id` of type `uuid`, which uniquely identifies each order, and a `user_id` column that references the `id` column in the `users` table. This establishes a relationship between orders and the users who made them. \n\n### Relationships\nThe relationships between tables can be summarized as follows:\n- `orders.user_id` is a foreign key (FK) to `users.id`, indicating that each order is associated with a user.\n\n### Things to watch\n- `orders.user_id` is a FK to `users.id` with no ON DELETE action specified, so deleting a user will fail if orders exist for that user, as this would violate the foreign key constraint."},"createdAt":"2026-06-28 11:47:35.825386+00"},{"id":469,"slug":"error-log-root-cause-analyzer","name":"Error Log Root Cause Analyzer","niche":"engineering","description":"An analysis of your error log — likely root cause, ranked hypotheses, next debugging steps.","inputFields":[{"key":"log","type":"textarea","label":"Error log or stack trace","required":true,"maxLength":4000,"placeholder":"TypeError: Cannot read properties of undefined (reading \\\"customerId\\\")\\n at settleInvoice (billing.ts:48)\\n ..."},{"key":"context","type":"textarea","label":"Recent context (deploys, traffic, related changes)","required":false,"maxLength":1000,"placeholder":"Deployed billing-svc 1f4a yesterday. Spike correlated with the start of EU business hours."}],"systemPrompt":"You analyse error logs to find a likely root cause. Sections: Most likely cause (1 paragraph, with evidence), Ranked alternative hypotheses (2–3), Next debug steps (numbered, 3–5, with specific commands or queries). Cite log lines as evidence. Banned: \"could be anything\", silent guessing. Example — Bad: \"It could be anything from a typo to a server issue.\" Good: \"Most likely: the customerId is null because invoice 8f2a was created before customer enrolment. Evidence: line 48 dereferences invoice.customer.id; no null guard.\" Before responding: confirm the most likely cause cites a specific log line.","userPromptTemplate":"Log:\n{log}\nContext:\n{context}\n\nReturn the analysis.","model":"claude-haiku-4-5-20251001","maxTokens":600,"priceGbp":1,"isActive":true,"outputType":"text","imageSize":null,"subcategory":"General","seo":{"faq":[{"a":"You'll get a report with the most likely root cause of the error, 2-3 ranked alternative hypotheses, and 3-5 next debugging steps with specific commands or queries. The report cites log lines as evidence to support the analysis.","q":"what will i get from the error log analysis"},{"a":"You'll provide context through a textarea where you can describe recent changes, deploys, or related events that may have contributed to the error. This helps the analysis focus on the most relevant factors.","q":"how do i provide context for the error log analysis"},{"a":"The analysis is performed immediately, and you'll receive your report for £1. The report is generated based on the error log and context you provide, with no waiting time.","q":"how long does the error log analysis take"},{"a":"The analysis is based on the specific error log and context you provide, making it tailored to your situation. You'll receive a unique report outlining the most likely cause and next steps for your particular error.","q":"can i get a personalised error log analysis"}],"useCases":["When an unexpected error occurs in your application","After a recent deployment causes issues","While trying to reproduce an intermittent bug","When analysing a stack trace from a crash report","During a debugging session to identify the root cause"],"whoItsFor":["DevOps engineers debugging production issues","Software developers troubleshooting code errors","QA testers analysing test failures","Technical support specialists resolving customer complaints"],"whatYouGet":"Get a detailed analysis of your error log in a formatted report, including the most likely root cause, ranked hypotheses, and next debugging steps for £1.","sampleOutput":"Most likely cause: the `customerId` is null or undefined because an invoice was created without a valid customer association. Evidence: line 48 in `billing.ts` attempts to access `invoice.customerId`, indicating that the `customerId` property is being dereferenced, but the error message suggests it does not exist. Specifically, the error log line \"TypeError: Cannot read properties of undefined (reading \\\"customerId\\\")\" at `settleInvoice (billing.ts:48)` implies that the `customerId` is not present in the `invoice` object, likely due to an incomplete or missing customer association when the invoice was created.\n\nRanked alternative hypotheses:\n1. **Data corruption**: It is possible that the data in the invoice or customer database is corrupted, leading to missing or null `customerId` values.\n2. **API integration issue**: The error might be caused by an issue with the API that provides customer information, resulting in incomplete or missing customer data being passed to the billing service.\n3. **Deployment-related configuration issue**: The recent deployment of `billing-svc 1f4a` might have introduced a configuration issue that affects how customer data is handled or retrieved.\n\nNext debug steps:\n1. **Inspect the invoice data**: Run a query to retrieve the invoice data for the specific invoice that triggered the error (e.g., `SELECT * FROM invoices WHERE id = 8f2a`) to verify if the `customerId` is indeed null or missing.\n2. **Check customer association**: Investigate the customer association logic to ensure that invoices are being created with valid customer associations (e.g., `SELECT * FROM customers WHERE id IN (SELECT customer_id FROM invoices)`).\n3. **Review deployment changes**: Compare the changes introduced in the `billing-svc 1f4a` deployment with the previous version to identify any potential issues related to customer data handling or API integrations (e.g., `git diff .. billing.ts`)."},"createdAt":"2026-06-28 11:47:36.552169+00"}]}