Data Model: Offer
Purpose: The Offer entity represents a single, distinct RWA investment opportunity presented to investors on the platform. It acts as the central container for all financial terms, legal information, marketing content, and status tracking related to a specific asset being tokenized.
Fields/Attributes
The table below details every piece of information held by the Offer entity.
| Name | Type | Description | Validation Rules |
|---|---|---|---|
| Core Identification | |||
id | Unique Identifier | The primary system ID for the offer. ️ | • Required • System-generated, Read-only |
status | Choice | The current stage of the offer in its lifecycle. | • Required • Must be one of: NEW, DRAFT, LEGAL-REVIEW, LEGAL-ACCEPTED, LEGAL-DECLINED, PUBLISHED, CLOSED-SUCCESSFULLY, CLOSED-UNSUCCESSFULLY, EXITED |
name | Text | The primary public-facing name of the offer. | • Required • Could be edited after status is PUBLISHED |
slug | Text | A URL-friendly version of the offer name. | • Required, Unique • Auto-generated from name • Could be edited after status is PUBLISHED |
legal_name | Text | The formal legal name of the entity or asset being offered. | • Required • Cannot be edited after status is PUBLISHED |
| Financial & Offering Terms | |||
valuation | Currency | The total estimated value of the underlying asset. | • Required • Must be a positive number |
capital_being_raised | Currency | The total funding goal for this offer. | • Required • Must be a positive number • Cannot be edited after status is PUBLISHED |
price_per_share | Currency | The price for a single share or token in the offer. | • Required • Must be a positive number • Cannot be edited after status is PUBLISHED |
minimum_investment | Integer | The minimum N of shares/tokens an investor must commit to participate. | • Required • Must be a positive number |
total_shares | Integer | The total number of shares/tokens available for purchase in this offer. | • Read-only • Calculated (TBD): capital_being_raised / price_per_share |
subscribed_shares | Integer | The number of shares reserved by investors through submitted (but not yet fully funded) investments. | • Read-only • System-managed |
confirmed_shares | Integer | The number of shares corresponding to fully funded and legally confirmed investments. | • Read-only • System-managed |
security_type | Choice | The legal classification of the security being offered. | • Required • Must be one of: EQUITY, PREFERRED_EQUITY, DEBT, CONVERTIBLE_DEBT, etc. |
| RWA Details | |||
asset_category (TBD) | Choice | The high-level category of the underlying real-world asset. Helps with filtering and classification. | • Required • Must be one of: REAL_ESTATE, PRIVATE_CREDIT, ART, INFRASTRUCTURE, etc. |
asset_status (TBD) | Choice | The current operational status of the physical asset. | • Optional • Must be one of: OPERATIONAL, UNDER_DEVELOPMENT, ACQUISITION_PENDING, etc. |
| System & Integration IDs | |||
author_id | Foreign Key | A reference to the admin user who created the offer (issuer). | • Required • System-set on creation |
esign_template_id | Text | The unique identifier for the document template from the e-signature provider. | • Required before moving to LEGALLY ACCEPTED status |
wallet_id | Text | The ID for the dedicated offer's wallet where funds will be collected post-escrow. | • System-generated |
| Escrow & Payment Details | |||
payment_instructions | JSON | A structured object containing all wire details needed for an investor to send funds. | • Required before status is PUBLISHED |
| Asset Location | |||
address_1 | Text | The primary street address of the asset. | • Required |
address_2 | Text | The secondary address line (e.g., Suite, Apt). | • Optional |
city | Text | The city where the asset is located. | • Required |
state | Text | The state or province. | • Required |
zipcode | Text | The postal or ZIP code. | • Required |
country | Choice | The country where the asset is located. | • Required • Defaults to 'USA' |
| Marketing & Presentation | |||
title | Text | A short, compelling title for display on offer cards. | • Required |
description | Rich Text | A detailed description of the investment opportunity. | • Required |
highlights | Rich Text | Bullet points or key takeaways about the offer. | • Optional |
additional_details | Rich Text | Any other relevant information for investors. | • Optional |
thumbnail_url | URL | A link to the primary image used for the offer on listing pages. | • Optional • Must be a valid image URL |
website_url | URL | The official website for the asset or its managing company. | • Optional • Must be a valid URL |
social_links | JSON | A structured object containing links to social media profiles (e.g., {"facebook": "url", "linkedin": "url"}). | • Optional |
seo_title | Text | A custom title for search engine optimization. | • Optional |
seo_description | Text | A custom meta description for search engines. | • Optional |
| Metadata | |||
publication_date | Timestamp | The exact date and time the offer became visible to investors. | • Read-only • System-set when status changes to PUBLISHED |
close_date | Date | The planned date when the offer will stop accepting new investments. | • Required • Must be in the future |
created_at | Timestamp | The date and time the offer record was created. | • Read-only • System-set on creation |
updated_at | Timestamp | The date and time the offer was last modified. | • Read-only • System-managed |
regulation_type | Choice | The specific legal framework under which the offer is conducted. This dictates the investor eligibility and verification rules for this offer. | • Required • Must be one of: MICA, REG_A_T1, REG_A_T2, REG_CF, REG_D_506B, REG_D_506C |
Security-Specific Terms
| Name | Type | Description | Validation Rules |
|---|---|---|---|
liquidation_preference | Text | A term defining the payout order in a liquidation event (e.g., 1x, 2x participating). | • Required if security_type is PREFERRED_EQUITY |
dividend_type | Choice | The method by which dividends or returns will be paid. | • Required if security_type is PREFERRED_EQUITY • Must be one of: CUMULATIVE, NON_CUMULATIVE, PIK |
pre_money_valuation | Currency | The valuation of the company or asset before this investment round is included. | • Required if security_type is COMMON_EQUITY or PREFERRED_EQUITY • Must be a positive number |
voting_rights | Choice | Defines the shareholder's power in corporate governance. | • Required if security_type is COMMON_EQUITY • Must be one of: ONE_VOTE_PER_SHARE, NON_VOTING, CUSTOM |
interest_rate_apy | Percentage | The Annual Percentage Yield (APY) that will be paid to the debt holders. | • Required if security_type is DEBT or CONVERTIBLE_NOTE • Must be a positive number |
payment_schedule | Choice | The frequency of interest payments. | • Required if security_type is DEBT • Must be one of: INTEREST_ONLY_QUARTERLY, MONTHLY, AT_MATURITY |
term_length | Integer | The duration of the loan before the principal is due. | • Required if security_type is DEBT or CONVERTIBLE_NOTE • Must be a positive integer |
term_unit | Choice | The unit of time for the term length. | • Required if security_type is DEBT or CONVERTIBLE_NOTE • Must be one of: MONTHS, YEARS |
maturity_date | Date | The specific date on which the loan matures and the principal must be repaid. | • Required if security_type is DEBT or CONVERTIBLE_NOTE • Must be a future date |
valuation_cap | Currency | The maximum company valuation at which a SAFE or Convertible Note will convert into equity. | • Required if security_type is SAFE or CONVERTIBLE_NOTE • Must be a positive number |
discount_rate | Percentage | An optional discount applied to the future valuation for SAFE or note holders when their investment converts to equity. | • Optional • Applicable only if security_type is SAFE or CONVERTIBLE_NOTE • Must be between 0 and 100 |
targeted_irr | Percentage | The projected Internal Rate of Return that the investment aims to generate. | • Optional • Applicable if security_type is LLC_MEMBERSHIP_UNITS |
targeted_equity_multiple | Decimal | The projected total return on investment, expressed as a multiple of the initial capital (e.g., 2.5). | • Optional • Applicable if security_type is LLC_MEMBERSHIP_UNITS |
targeted_cash_on_cash | Percentage | The projected annual pre-tax cash flow as a percentage of the total cash invested. | • Optional • Applicable if security_type is LLC_MEMBERSHIP_UNITS |
property_type | Choice | For real estate assets, specifies the category of the property. | • Optional • Applicable if asset_category is REAL_ESTATE • Must be one of: MULTIFAMILY, COMMERCIAL, INDUSTRIAL, etc. |
distribution_waterfall | Rich Text | A detailed description of the legal and financial structure defining the order in which profits are distributed. | • Required if security_type is LLC_MEMBERSHIP_UNITS |
repayment_multiple | Decimal | The total amount the investor is entitled to receive, expressed as a multiple of their initial investment (e.g., 2.0). | • Required if security_type is REVSHARE • Must be a positive number |
revenue_share_percentage | Percentage | The percentage of the company's gross revenue allocated to the investor repayment pool. | • Required if security_type is REVSHARE • Must be between 0 and 100 |
projected_term | Text | An estimated timeframe for the investor to receive their full repayment multiple (e.g., "36 Months"). | Optional • Applicable if security_type is REVSHARE |
Key Relationships
Investments: An
Offercan have many Investments (a one-to-many relationship). Each Investment record represents a single investor's financial commitment to this specific offer.Wallet: Each
Offerhas one dedicated Wallet (a one-to-one relationship) to aggregate and hold investor funds after they are released from "smart escrow" account. This is represented by thewallet_idfield on the Offer model.Smart Contract: An
Offeris represented on the blockchain by a single Smart Contract (a one-to-one relationship). This contract manages the ownership tokens, distribution logic, and other on-chain functions for the asset.Filer: An
Offerhas many Documents associated with it (a one-to-many relationship). These files represent all legal, financial, and marketing materials. For details, see the Filer Model.Profiles (Investors): An
Offeris invested in by many Profiles (a many-to-many relationship). This connection is established through theInvestmentmodel, which links a specific Profile to a specificOffer.
Auditing & Event History
Every significant action or change made to an Offer is recorded as an immutable entry in a system-wide EventLog. This creates a complete and tamper-proof audit trail for compliance and operational tracking.