---
name: darkly-energized-project-initiation
description: Start a software project with Darkly Energized — capture what the user wants to make happen so it can be scoped and a Statement of Work drafted. Use when the user wants to hire Darkly Energized, get an estimate, or describe an MVP, an app, an automation, or a system they want built or rescued.
---

# Start a project with Darkly Energized

Darkly Energized LLC builds software for client companies with an eval-first agentic development system. This is **initiation**: the user describes what they want to make happen, in their words, and Darkly Energized scopes it with them. The account has already accepted our terms and a standard mutual NDA; nothing is billed at this stage. The lifecycle from here is initiation, scoping, agreement, kickoff, delivery, acceptance — kickoff is when the work starts, after the agreement, not now. Your job is to produce a good project brief from what the user tells you and what you already know — and to let the user press Send.

## The interview

Work the brief as a conversation, one question at a time, in the user's words.

1. Start open: **What do you want to make happen?** Let them talk. Do not lead with technology.
2. Then **Why now?** What changed, or what is it costing you to wait?
3. Suggest the shape and the stage back to them from what you heard — "sounds like a web app with some automation, starting from a live product, is that right?" — rather than reading out the lists.
4. Offer the detail, do not impose it: "I can also capture who uses it, what done looks like, budget, timeline, and who decides — or we can send it now."

Prose answers are the user's words. Paraphrase only if they approve the paraphrase.

## The answers

Screen one — enough to send:

- `dream` — **What do you want to make happen?** The outcome, in your words. Not the technology. **Required.**
- `whyNow` — **Why now?** What changed, or what is it costing you to wait?
- `kinds` — **What shape is it? Pick any.** `web_app` (Web app), `mobile_app` (Mobile app), `api_integration` (API or integration), `automation` (Automation and workflow), `data_analytics` (Data, dashboards, and analytics), `ai_agent` (AI feature or agent), `infrastructure` (Infrastructure, cloud, and DevOps), `rescue_modernize` (Rescue or modernize an existing system), `compliance` (Compliance readiness), `advisory` (Advisory and fractional CTO), `not_sure` (Not sure yet).
- `stage` — **Where are you starting from?** One of `idea` (An idea), `spec` (A written spec), `prototype` (A prototype), `live_product` (A live product).

Screen two — all optional:

- `users` — **Who uses it, and how often?** Roles, how many, how often.
- `done` — **What has to exist for you to call it done?** This becomes the deliverables list, and later what the build is tested against. Be concrete.
- `success` — **Six months in, how will you know it worked?** The number or the change you would point at.
- `worksWith` — **What must it work with?** Existing systems, data, logins, vendors.
- `existingCode` — **Is there code already?** Where it lives, what stack, who maintains it today.
- `constraints` — **Deadline, compliance, security, anything non-negotiable** Anything the build must respect.
- `budgetRange` — **What range are you working with?** One of `under_10k` (Under $10k), `10k_50k` ($10k to $50k), `50k_200k` ($50k to $200k), `over_200k` (Over $200k), `not_sure` (Not sure yet).
- `timeline` — **When do you need it?** One of `asap` (As soon as possible), `1_3_months` (1 to 3 months), `3_6_months` (3 to 6 months), `flexible` (Flexible), `fixed_date` (A fixed date). With `fixed_date`, also send `timelineDate` as YYYY-MM-DD.
- `decision` — **Where are you in deciding?** One of `can_sign` (I can sign), `recommend` (I recommend to someone who signs), `exploring` (Just exploring).
- `anythingElse` — **Anything we should know?** Prior attempts, chosen platforms, things that are off the table.

Field names are the JSON keys for the API and the `name` attributes in the web form. Enum values are exact.

## Draft from what you already know

If you have context — the repository you are working in, files, earlier conversations, memory — pre-draft answers from it and show the draft for correction. Rules:

- Anything you inferred is a guess to confirm, never stated as fact. Present it as "I think… is that right?"
- **`budgetRange`, `timeline`, `timelineDate`, `decision` are never inferred.** Ask.
- Send the names of the answers you inferred in `inferred` (a list of field names from: `dream`, `whyNow`, `kinds`, `stage`, `users`, `done`, `success`, `worksWith`, `existingCode`, `constraints`, `anythingElse`). Darkly Energized sees which lines came from the person and which from your reading of the situation, and knows where to ask a follow-up. When the person edits an answer in the form, that mark is cleared automatically.
- `stage` and `existingCode` are the ones you can usually draft well from a codebase: "a live product on Rails, the code is in this repo, one contractor maintains it".

## Confirm before sending

Read the brief back in full. Get an explicit yes. Then submit.

## How to submit: the API first

Use the API whenever you can make HTTP requests. It does not depend on a browser extension, on the user's browser settings, or on anything being open on their screen.

1. You need the user's **project token**. Ask for it; they generate it at https://darklyenergized.com/projects under *Agent access* (it starts with `de_project_`). Never guess or reuse one.
2. Create the project:

```http
POST https://darklyenergized.com/api/v1/projects
Authorization: Bearer <your project token>
Content-Type: application/json

{
  "dream": "…",
  "whyNow": "…",
  "kinds": ["web_app"],
  "stage": "live_product",
  "existingCode": "…",
  "inferred": ["stage", "existingCode"],
  "agent": "<your name>"
}
```

   Every project response carries `nda`: whether a non-disclosure agreement is in force for the account and, if not, the `url` where the user can read and accept Darkly Energized's standard one. Relay it before the user shares anything sensitive; signing is the user's act in the browser, not yours. The response is `201` with the project and a `url`. The full schema is in the OpenAPI document at https://darklyenergized.com/api/v1/openapi.json under `/projects`; unknown values answer `422` with JSON.

   Two refusals this call can also answer with, neither of which is a retry:

   - `403` — the account has an agreement or a policy version outstanding. The body's `nda.url` is where the user resolves it; it is a checklist, so it covers a missing NDA and an unaccepted Terms or Privacy alike. Relay the URL and stop.
   - `429` — either the open-project cap or the daily limit of 1,000 calls. The `error` says which. The cap is not a rate limit and waiting does not clear it: the user has to send or close an open project first.
3. Give the user the `url`. They open it, review, and press **Send to Darkly Energized**. Submission is a human step; the API deliberately has no endpoint for it.
4. `PATCH https://darklyenergized.com/api/v1/projects/{id}` changes answers while the project is `DRAFT`, `NEW` or `REVIEWING`. `GET https://darklyenergized.com/api/v1/projects` lists the user's projects.

The token can create, read and edit that account's projects and nothing else. It is not a data API key. Send it only to https://darklyenergized.com.

Scope is not availability: creating and editing also require the account's agreements and policy acceptances to be current. When they are not, the API answers `403` however valid the token is.

### Fallback: the web form

If you cannot make HTTP requests but can drive the user's browser, and they are signed in: open https://darklyenergized.com/projects/new. Every field has a label matching the question above and saves when you leave it; the page does not reload between fields. Fill screen one, press **Continue**, fill what you have on screen two, then let the user press **Send to Darkly Energized** themselves.

## Do not

- Do not invent answers the user has not given; leave a field blank and say so.
- Do not send the brief without the user's confirmation.
- Do not enter credentials, card numbers, or secrets into any field, and never put the project token in an answer.
- Do not send the token anywhere but https://darklyenergized.com.
