22 KiB
You are working on the existing Kifi application.
Use the senior architect, Flutter UI/UX, Spring Boot/R2DBC, PostgreSQL/DBA, accounting/finance, AI and Indian jewellery-domain rules defined in the active skill.
Keep responses short and token-efficient.
After each logical checkpoint, report:
Progress: XX%
Do not repeat requirements already understood.
Objective
When account setup is completed with:
Account Type = BUSINESS
Nature of Business = JEWELLERY
the application must operate in Jewellery Business Mode.
This mode must provide a robust jewellery retail/inventory/accounting system suitable for Indian jewellery businesses.
This specification is directional, not exhaustive.
Do not blindly implement only the fields listed here.
Use your jewellery, accounting, GST, inventory and ERP expertise to identify missing requirements, correct flawed assumptions and build the smallest robust production-grade architecture.
Before changing anything:
- Inspect existing jewellery/inventory modules.
- Inspect current category/product/purchase/customer/invoice flows.
- Inspect existing double-entry accounting implementation.
- Inspect current ledger/chart-of-accounts design.
- Inspect daily metal-price synchronization.
- Inspect barcode/SKU/EAN logic.
- Inspect existing settings/configuration.
- Inspect reports and dashboard statistics.
- Reuse existing architecture where sound.
- Refactor flawed areas instead of creating duplicate systems.
1. Jewellery Business Mode
When:
BUSINESS + JEWELLERY
is selected during setup:
- Persist this business nature in backend.
- Load Jewellery-specific navigation/modules after login.
- Do not rely only on Flutter state.
- Backend remains source of truth.
Jewellery mode should expose relevant modules such as:
Dashboard
Inventory
Categories
Products
Purchases
Vendors
Customers
Sales / Invoices
Reports
Configuration
Adjust based on existing architecture.
2. Category Hierarchy
Support hierarchical jewellery categories up to 3 nested levels.
Example:
Gold Jewellery
↓
Rings
↓
Ladies Rings
or:
Diamond Jewellery
↓
Necklace
↓
Bridal Necklace
Each category should support:
- Name
- Parent category
- Active/inactive
- Sort order if useful
hasChild- Default HSN code
- Default GST rate
- Calculation unit/type
- Default rate-calculation behaviour
- Other domain-relevant configuration
Leaf Category Rule
Configuration intended for actual saleable products should only be collected on the leaf category.
If:
hasChild = true
do not require product-level defaults such as:
- HSN
- GST
- calculation unit
- auto-rate calculation
- other leaf-only product rules
Those should be configured at the last category level where products are actually created.
Do not duplicate inherited configuration unnecessarily.
Consider inheritance/fallback where appropriate.
3. Calculation Unit
Support jewellery-specific calculation modes.
Examples:
Quantity × Gram
Quantity × Piece
Weight-based
Piece-based
Fixed
Do not hardcode only these values if the domain requires more.
Design calculation units as controlled/configurable values.
Examples of later use:
Gold jewellery → weight-based
Loose items → piece-based
Accessories → quantity-based
4. Rate Auto Calculation
Leaf categories/products should support:
Auto Calculate Rate = ON/OFF
When enabled, selling value may be derived from:
Current metal rate
× purity
× applicable net/fine weight
+ making charges
+ stone/diamond value
+ certification/other charges
Do not overwrite original purchase cost.
Current market rate and purchase cost are different concepts.
Keep pricing rules configurable.
5. Product / Inventory Master
Refactor Inventory/Product Master so creating a product definition produces a:
product_id
Product master should contain attributes such as:
- Product name
- Category
- Subcategory hierarchy
- Photo
- SKU
- EAN where applicable
- Barcode configuration
- Metal/type
- Default purity if appropriate
- Default HSN
- Default GST
- Default making charges
- Making-charge calculation type
- Default certification charge
- HUID required toggle
- Rate auto-calculation toggle
- Calculation unit
- Active/inactive
- Other useful jewellery attributes
Making-charge calculation types must support at least:
PERCENTAGE
FLAT
PER_GRAM
Use stable backend enum values and user-friendly labels.
Do not confuse:
Product Master
with:
Physical Inventory Item / Tag
A product represents the design/type.
Purchases populate actual stock instances under that product.
6. Inventory Item / Tag Level
Each purchased physical jewellery item should create a unique inventory record when required.
Track relevant attributes such as:
product_id
tag/barcode
SKU
HUID
purity
gross weight
net weight
stone weight
diamond weight
fine weight
making charges
making charge type
purchase cost
metal cost
stone cost
certification cost
tax
branch/location
vendor
purchase reference
status
Apply jewellery-domain rules.
Do not store only aggregate quantity if uniquely identifiable pieces require tag-level traceability.
Support statuses such as:
AVAILABLE
RESERVED
SOLD
TRANSFERRED
RETURNED
REPAIR
MELTED
DAMAGED
as appropriate.
7. Vendor Module
Vendor form already exists.
Inspect it first.
Add only missing fields needed for:
- Jewellery purchasing
- GST
- Payments
- Accounts payable
- Double-entry accounting
- Vendor ledger
- Purchase returns
Potential information may include:
Business name
Contact person
Mobile
Email
Address
State
GSTIN
PAN
Payment terms
Opening balance
Credit limit
Bank details if needed
Ledger/account mapping
Do not add unnecessary fields.
Sensitive identifiers must follow existing PII encryption/masking rules.
Each vendor must be able to participate in accounting entries.
8. Purchases
Existing Purchases module must be inspected and refactored.
A purchase should support:
Header
- Vendor
- Vendor invoice number
- Invoice date
- Purchase date/business date if different
- GST treatment
- Place/state of supply where required
- Discounts
- Shipping/freight charges
- Other charges
- Tax
- Round-off
- Payment status
- Payment mode if immediate
- Credit purchase
- Notes
- Attachments if existing architecture supports them
Purchase Items
User selects:
Product
and adds one or more physical inventory items.
For each item capture relevant values including:
- Purity
- Gross weight
- Net weight
- Stone weight where applicable
- Fine weight if applicable
- Quantity/pieces
- Making charges
- Making-charge calculation type
- Certification charges
- HSN
- GST rate
- HUID when required
- Stone/diamond values where applicable
- Rate
- Discount where appropriate
- Other jewellery-specific costing components
Defaults may inherit from product/category but must remain editable where business rules allow.
If:
HUID Required = true
HUID must be validated before the item can be finalized, unless a legitimate workflow requires temporary pending status.
9. Multi-Product Purchase Invoice
One vendor purchase invoice may contain multiple products.
Flow:
Select Vendor
↓
Select Product A
↓
Add one/multiple inventory items
↓
Select Product B
↓
Add items
↓
...
↓
Review
↓
Post Purchase
Do not require separate purchase invoices for each product.
10. Immutable Purchase Cost
The original purchase cost is critical.
Never overwrite historical purchase cost because:
- Metal rates change
- Making charges change
- Selling rate changes
- Product defaults change
Preserve immutable purchase-cost components needed for:
COGS
Gross profit
Net profit
Margin analysis
Stock valuation
Audit
If corrections are required, use controlled edit/reversal/adjustment rules with audit history.
11. Purchase Accounting
Every posted purchase must generate correct accounting entries.
Depending on GST/payment mode, conceptually:
Dr Inventory Asset
Dr Input GST
Dr Freight/Eligible Cost if applicable
Cr Vendor Payable / Cash / Bank
Actual journal structure must follow the project's chart of accounts and accounting configuration.
Do not hardcode accounting account IDs.
Use configurable accounting mappings.
Purchase posting must be transactionally consistent with inventory creation.
If accounting fails:
Purchase + Inventory
must not remain partially posted.
12. Inventory Asset Mapping
Inventory is a Current Asset.
Do not automatically create one GL ledger for every jewellery category.
Prefer configurable mapping such as:
Category / Product Type
↓
Inventory Asset Account
COGS Account
Sales Account
Purchase Return Account
Sales Return Account
Allow multiple categories to map to the same inventory account.
Example:
Gold Rings
Gold Bangles
Gold Chains
↓
Gold Jewellery Inventory
A business may optionally configure more granular ledgers later.
Support sensible fallback mapping.
13. Customer Module
Customer form already exists.
Inspect and extend only where necessary.
Potential requirements:
- Name
- Mobile
- Address
- State
- GSTIN for B2B
- PAN where required
- Customer type
- Credit limit
- Opening balance
- Customer ledger
- Notes
Support:
- Cash sales
- Credit sales
- Customer receivables
- Payments
- Sales returns
- Old-gold exchange if implemented
Maintain a queryable customer ledger.
14. Sales / Invoice Refactor
Existing invoice logic must be inspected and refactored around the new inventory model.
Invoice should allow:
Select Customer
↓
Scan/Search Inventory
↓
Add Items
↓
Calculate Current Selling Value
↓
Discount / Charges
↓
GST
↓
Payment
↓
Post Invoice
Item lookup should support where applicable:
- Barcode
- SKU
- EAN
- Tag
- HUID
- Product search
A sold unique inventory item must transition from:
AVAILABLE → SOLD
within the same transaction as invoice/accounting posting.
Prevent double selling through backend concurrency controls.
15. Sales Price Calculation
Current selling value may be calculated using the latest applicable rate.
Do not modify the item's historical purchase cost.
Conceptually:
Current Selling Value
=
Current Metal Value
+ Making Charges
+ Stone/Diamond Value
+ Certification/Other Charges
- Discount
+ GST
Apply correct purity/weight logic.
Support manual override where business rules permit, with audit if necessary.
16. Sales Accounting
Posting an invoice generally produces two accounting effects.
Revenue:
Dr Customer / Cash / Bank
Cr Sales Revenue
Cr Output GST
COGS:
Dr Cost of Goods Sold
Cr Inventory Asset
Use actual mapped accounts.
Ensure:
Total Debit = Total Credit
for every posted journal.
Do not calculate COGS using today's metal rate.
Use appropriate historical inventory cost/valuation logic.
17. Gross Profit and Net Profit
Preserve data required to calculate:
Gross Profit
=
Sales Revenue
- Cost of Goods Sold
and:
Net Profit
=
Gross Profit
+ Other Income
- Operating Expenses
- Other Expenses
Do not calculate profit simply as:
Invoice Total - Purchase Invoice Total
because taxes, discounts, inventory cost allocation, freight, returns and expenses may affect the result.
Apply proper accounting principles.
18. Daily Price Sync
Daily price synchronization already exists.
Inspect it.
Refactor so new market rates are stored as history.
Never overwrite historical pricing.
Conceptual structure:
metal_rate_history
metal
purity/basis
rate
effective_at
source
created_at
Latest applicable rate should be used for real-time valuation/selling calculations.
Inventory's original cost must remain unchanged.
19. Inventory Valuation
Clearly distinguish:
Historical Cost Value
Current Market/Estimated Value
Selling Value
These must not overwrite one another.
Dashboard and reports must state which valuation is being shown.
For accounting balance sheet/current assets, use the appropriate accounting valuation method configured by the system/business.
Do not silently use live gold price as the accounting book value.
20. Barcode / SKU / EAN
Existing barcode scan, SKU and EAN logic already exists.
Inspect before modifying.
Adapt to the new model:
Product Master
↓
Physical Inventory Item / Tag
Determine whether barcode belongs to:
Product
or
Individual Inventory Item
based on use case.
For unique jewellery, tag/barcode will commonly identify the physical inventory item.
Preserve existing functionality where compatible.
21. Configuration Module
Move relevant business configuration currently located in:
User Profile
or scattered elsewhere into the dedicated:
Configuration
navigation destination.
Potential configuration groups:
Business
Jewellery
Tax/GST
Pricing
Inventory
Accounting
Invoice
Numbering
Barcode
Metal Rates
Making Charges
Reports
Do not move identity/profile fields into Configuration.
Profile and Configuration remain separate.
22. Chart of Accounts / Ledgers
Create or correct the required accounting structure so every transaction is queryable.
Do not call accounting accounts "wallets" internally if they are actually GL accounts.
Use proper concepts:
Chart of Accounts
Ledger Accounts
Journal Entries
Journal Lines
Sub-ledgers
If the existing system uses the term Wallet for a valid payment account abstraction, preserve it only where appropriate.
At minimum jewellery businesses may require accounts such as:
ASSETS
Current Assets
Cash
Bank
Accounts Receivable
Inventory
LIABILITIES
Accounts Payable
GST Payable
INCOME
Jewellery Sales
Other Income
EXPENSES
Cost of Goods Sold
Making/Labour Expenses
Freight
Operating Expenses
Do not hardcode this exact chart if an existing configurable COA exists.
23. Sub-Ledgers
Vendor and customer transactions should remain individually queryable.
Support:
Vendor Ledger
Customer Ledger
Inventory Ledger
Cash Ledger
Bank Ledger
GST Ledger
without creating unnecessary GL accounts for every entity if a sub-ledger architecture is more appropriate.
The user must be able to query transaction history at any time.
24. Double-Entry Accounting Audit
Inspect the current accounting implementation for flaws.
Validate:
- Debit = Credit
- No orphan journal lines
- Proper transaction references
- Purchase posting
- Sales posting
- Payments
- Vendor payable
- Customer receivable
- Purchase returns
- Sales returns
- Discounts
- Freight
- GST
- Round-off
- Inventory/COGS
- Cancellation/reversal
Fix incorrect architecture where necessary.
Do not silently patch symptoms.
25. Reversal Instead of Delete
Posted financial/inventory transactions should generally not be destructively deleted.
Use:
Cancel
Reverse
Return
Adjustment
with audit history.
Examples:
Purchase → Purchase Return / Reversal
Invoice → Sales Return / Cancellation
Payment → Reversal
Inventory → Adjustment
Journal → Reversal
26. Reports Module
In Business Mode, show a dedicated:
Reports
card/module.
At minimum support or architect for:
- GSTR-1
- GSTR-3B
- Profit & Loss
- Balance Sheet
- Trial Balance
- Current Assets
- Inventory Valuation
- Inventory Movement
- Sales Report
- Purchase Report
- Customer Ledger
- Vendor Ledger
- GST Summary
- Stock Ageing
- Gross Profit
- Product/category profitability
Use correct term:
Profit & Loss
not "Profile and Loss".
GST reports should derive from transaction data, not manually maintained totals.
27. Monthly GST Reports
Design transaction records so monthly GST reports can be generated accurately.
Consider:
- B2B
- B2C
- CGST
- SGST
- IGST
- Taxable value
- HSN
- GST rate
- Credit/debit notes
- Returns
Do not claim statutory filing compliance without validating current GST requirements.
Build report architecture capable of adapting to regulatory changes.
28. Dashboard Statistics
For Jewellery Business Mode, the Stats section should include at least:
Total Sales
Total Asset / Inventory Value
Existing dashboard filters must apply consistently.
For example:
Today
This Week
This Month
This Financial Year
Custom Range
Branch
where supported.
Clearly distinguish:
Book Inventory Value
Current Estimated/Market Value
Do not label current gold-price valuation as accounting assets unless that is the configured accounting basis.
29. Jewellery Dashboard
Consider useful jewellery business metrics such as:
Today's Sales
Monthly Sales
Inventory Cost Value
Current Estimated Inventory Value
Gross Profit
Outstanding Receivables
Outstanding Payables
Gold Stock Weight
Silver Stock Weight
Low/Old Stock
Recent Purchases
Recent Sales
Do not overload the dashboard.
Use strong information hierarchy and follow UI/UX skill rules.
30. Inventory History
Maintain complete inventory movement history.
Examples:
PURCHASE
SALE
SALE_RETURN
PURCHASE_RETURN
TRANSFER
RESERVATION
RELEASE
REPAIR
MELTING
ADJUSTMENT
Each movement should record enough information to answer:
What changed?
Why?
When?
Who?
Which transaction caused it?
31. Jewellery-Specific Domain Gaps
The specification above is incomplete by design.
Use domain expertise to evaluate whether architecture should support concepts such as:
- Gross/net/fine weight
- Purity
- Stone weight
- Diamond carat
- Stone/diamond valuation
- Hallmark/HUID
- Old-gold exchange
- Repairs
- Memo/approval stock
- Branch transfer
- Tagging
- Purchase returns
- Sales returns
- Stock ageing
- Wastage
- Labour/job work
- Certification
- Multiple payment modes
- Advance payments
- Credit sales
- Rate locking
- Manual rate override
- Audit history
Do not implement every advanced feature immediately.
But ensure today's database/architecture does not block sensible future expansion.
32. Security
Protect sensitive data such as:
- GST
- PAN
- Bank details
- Customer identifiers
- Vendor identifiers
Follow existing PII encryption/masking rules.
Do not log sensitive values.
Invoice/legal documents may display values in plain form where required.
33. Transactions and Concurrency
Important operations must be atomic.
Examples:
Purchase posting
=
Purchase
+ Inventory creation
+ GST
+ Vendor payable
+ Journal
and:
Sales posting
=
Invoice
+ Inventory status change
+ Customer/payment
+ GST
+ Revenue journal
+ COGS journal
If one critical component fails, do not leave partially posted records.
Prevent two users from selling the same inventory tag simultaneously.
34. Database Requirements
Inspect schema first.
Use proper:
- Primary keys
- Foreign keys
- Unique constraints
- Check constraints
- Monetary NUMERIC types
- Weight precision
- Audit timestamps
- Status enums/controlled values
- Useful indexes
Do not store money using floating-point types.
Do not introduce unnecessary indexes.
35. Migration Strategy
This is an existing application.
Preserve existing:
- Inventory
- Products
- Purchases
- Invoices
- Customers
- Vendors
- Journals
- Rates
- Barcodes
Create migration/backfill strategy where necessary.
Do not drop/recreate business data simply to fit the new design.
36. UI/UX
Follow the active skill's mandatory Material 3 modern UI rules.
Do not create generic CRUD screens.
Jewellery workflows should be:
- Fast
- Searchable
- Scanner-friendly
- Keyboard-friendly
- Responsive
- High information density without clutter
For purchase/invoice item entry, prioritize operational speed.
37. Implementation Strategy
Do NOT implement everything blindly in one uncontrolled pass.
First produce a concise architecture assessment.
Then execute in logical phases.
Suggested phases:
Phase 1
Audit existing architecture/accounting
Phase 2
Category + Product Master
Phase 3
Inventory/Tag model
Phase 4
Vendor + Purchase refactor
Phase 5
Customer + Invoice/Sales refactor
Phase 6
Double-entry accounting correction
Phase 7
Metal-rate history/valuation
Phase 8
Barcode/SKU/EAN integration
Phase 9
Configuration migration
Phase 10
Reports + Dashboard
Phase 11
Migration/testing/security review
Adjust if project dependencies require another order.
At every phase report:
Progress: XX%
38. Before Coding
First return only a concise assessment containing:
1. Existing architecture found
2. Major flaws/risks
3. Proposed target architecture
4. Tables/entities that likely need change
5. Accounting model
6. Jewellery inventory model
7. Implementation phases
Keep it short.
Then proceed with implementation.
Do not ask for confirmation unless a genuinely blocking business decision cannot be safely inferred.
39. Final Quality Gate
Before marking complete, verify:
- Jewellery business mode works from account type
- Category hierarchy works
- Leaf-category configuration works
- Product master is distinct from stock items
- Purchases create inventory correctly
- Original cost is preserved
- Live rates do not overwrite cost
- Sales consume exact inventory
- COGS is correct
- Debit = Credit
- Customer/vendor ledgers work
- GST data is reportable
- Barcode/tag logic works
- Settings moved appropriately
- Dashboard filters work
- Reports derive from source transactions
- Existing users/data remain valid
- Concurrency is safe
- Audit trail exists
- UI follows modern Material 3 standards
Do not claim completion if important parts remain broken.
Final Directive
This is not merely an inventory feature.
Build the foundation of a production-grade jewellery ERP/accounting system for Indian jewellery shop owners.
Use domain expertise to correct our assumptions where needed.
Prefer accounting correctness, inventory traceability and operational usability over quick CRUD implementation.