- 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