- Daily Build
- Posts
- Writing a Product Spec
Writing a Product Spec
Building a feature for a finance platform

So today, I used Claude to help me write a product spec for a new feature for a finance platform.
I wanted to see how it would do. What surprised me most was how technical it was able to get—the specificity with regard to the schema.
It’s a high-level spec but you could prompt the model to go deeper and deeper depending on what you wanted.
If you’re a PM, you might want to start writing your specs with AI.
Prompt
“Product spec for a feature that allows users to connect their bank to a finance platform.”
Output
I’m impressed. I’ve written some product specs in my day and I like the brevity and clarity that Claude gave us here:
Bank Account Connections Spec
Overview
This feature will allow users to connect their bank accounts to our platform via API integrations. Transactions and account data will be synced on a regular basis.
User Stories
- As a user, I want to connect my bank accounts to import their data. 
- As a user, I want to disconnect accounts and remove their data. 
- As a user, I want to see sync status for each account. 
Requirements
- Integrate with Plaid, Yodlee or other bank APIs. 
- Store encrypted API keys and credentials securely. 
- Sync transactions and balances daily via API. 
- Categorize transactions during import. 
- Allow users to export transaction data. 
API Endpoints
/api/v1/bank_accounts
- POST - Create new bank account connection 
Input:
{
  user_id: 123,
  access_token: 'abcd1234', 
  bank_name: 'Chase' 
}{ user_id: 123, access_token: 'abcd1234', bank_name: 'Chase' }
Output:
{
  id: 456,
  is_connected: true
}{ id: 456, is_connected: true }
- GET - Get list of connected accounts 
- DELETE - Disconnect a bank account 
/api/v1/bank_accounts/{id}/sync
- POST - Trigger sync for specific account 
/api/v1/bank_accounts/transactions
- GET - Get paginated transactions for user 
Data Model
BankAccount
- id 
- user_id 
- bank_name 
- access_token (encrypted) 
- last_sync_time 
Transaction
- id 
- account_id 
- date 
- payee 
- category 
- amount 
Backend Sync Process
- Get access token from vault 
- Call bank API to get new transactions and balances 
- Parse & categorize transactions 
- Insert into database 
- Update last sync time 
Error Handling
- Retry failed syncs up to 3 times 
- Notify users if sync fails via email/in-app 
- Handle expired credentials and refresh tokens 
Performance Considerations
- Sync transaction window limited to past 30 days 
- Use incremental sync after initial import 
- Queue sync jobs with Redis/Celery 
- Paginate transaction API responses 
Here’s the live URL in case you want this project.
Know someone who might like this?
Send them this newsletter:

Reply