corporate renewal: make annual-report/RA/reinstatement orderable

The catalog already priced annual-report-filing ($149), registered-agent ($99),
entity-reinstatement ($299) but they had no intake spec, manifest entry, or
order page, so the corporation-check tool's overdue result dead-ended at a
contact form. Now a real self-serve funnel on the proven compliance-order
pipeline:
- REQUIRED_FIELDS intake specs (legal_name/address_state/email via the entity step)
- INTAKE_MANIFEST + CORPORATE_SLUGS entries (entity->review->payment)
- /order/annual-report-filing, /order/registered-agent, /order/entity-reinstatement
API tsc clean; site builds all 3 pages. E2E on dev next.
This commit is contained in:
justin 2026-07-01 09:23:09 -05:00
parent d40458057b
commit 3e133d8c46
5 changed files with 57 additions and 0 deletions

View file

@ -201,6 +201,13 @@ const REQUIRED_FIELDS: Record<string, FieldSpec> = {
"carrier-closeout": { required: ["dot_number", "legal_name", "email", "signer_name", "signer_title"], soft: ["mc_number"] },
"entity-dissolution": { required: ["legal_name", "address_state", "email", "signer_name"], soft: ["entity_type"] },
// ── Corporate Renewal / Good-Standing (collected via the `entity` step) ──
// Sold off the /tools/corporation-check overdue result. State-agnostic:
// annual-report/franchise filing, registered-agent setup, reinstatement.
"annual-report-filing": { required: ["legal_name", "address_state", "email"], soft: ["entity_number", "entity_type", "address_street", "address_city", "address_zip", "ein"] },
"registered-agent": { required: ["legal_name", "address_state", "email"], soft: ["entity_number", "entity_type"] },
"entity-reinstatement": { required: ["legal_name", "address_state", "email"], soft: ["entity_number", "entity_type", "address_street", "address_city", "address_zip", "ein"] },
// ── State-Level Trucking Compliance ──────────────────────────────────
// Collected via the state-trucking intake step (StateTruckingIntakeStep.astro).
"irp-registration": { required: ["dot_number", "legal_name", "base_state", "email", "power_units", "operating_states"], soft: ["mc_number", "fuel_type", "gross_weight_bracket"] },

View file

@ -94,6 +94,11 @@ export const INTAKE_MANIFEST: Record<string, IntakeStep[]> = {
"entity", "foreign_qual", "review", "payment",
],
// Corporate renewal / good-standing — sold off /tools/corporation-check
"annual-report-filing": ["entity", "review", "payment"],
"registered-agent": ["entity", "review", "payment"],
"entity-reinstatement": ["entity", "review", "payment"],
// Bundles
"fcc-full-compliance": [
"entity", "category", "officer", "jurisdiction", "history",
@ -205,4 +210,7 @@ const CORPORATE_SLUGS = new Set<string>([
"dc-agent",
"foreign-qualification-single",
"foreign-qualification-multi",
"annual-report-filing",
"registered-agent",
"entity-reinstatement",
]);

View file

@ -0,0 +1,14 @@
---
import Base from "../../layouts/Base.astro";
import OrderFlow from "../../components/intake/OrderFlow.astro";
import { SERVICE_META } from "../../lib/intake_manifest";
const slug = "annual-report-filing";
const meta = SERVICE_META[slug];
const title = meta ? `Order ${meta.name}` : "Order";
const description = "File your overdue or upcoming state annual report / franchise tax to keep your business in good standing.";
---
<Base title={title} description={description}>
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
</Base>

View file

@ -0,0 +1,14 @@
---
import Base from "../../layouts/Base.astro";
import OrderFlow from "../../components/intake/OrderFlow.astro";
import { SERVICE_META } from "../../lib/intake_manifest";
const slug = "entity-reinstatement";
const meta = SERVICE_META[slug];
const title = meta ? `Order ${meta.name}` : "Order";
const description = "Reinstate an administratively dissolved or forfeited business and restore its good standing.";
---
<Base title={title} description={description}>
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
</Base>

View file

@ -0,0 +1,14 @@
---
import Base from "../../layouts/Base.astro";
import OrderFlow from "../../components/intake/OrderFlow.astro";
import { SERVICE_META } from "../../lib/intake_manifest";
const slug = "registered-agent";
const meta = SERVICE_META[slug];
const title = meta ? `Order ${meta.name}` : "Order";
const description = "Set up professional registered agent service for your business in any state — one flat annual rate.";
---
<Base title={title} description={description}>
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
</Base>