Interfacing with Ajay API

one of my weirder emails...

Version: 1.0 | Author: Ajay | Last Updated: Today

Ajay’s Quest Readers Note: This is a document I made to make communicating and working with me more efficient. Whilst this is made for my colleagues in mind - I hope there’s something to learn from it. Also formatting it like an API makes it more fun for me.

Overview

Welcome to the official documentation for the Ajay API! Whether you're sending updates, requesting decisions, or collaborating on projects, this guide will help you interact with Ajay efficiently. Remember, great inputs = great outputs. Let’s streamline communication and get things done!

Endpoints

For those who aren’t super familiar with APIs - to simplify it, a GET request is when you want something from me and a POST request is when you’re sending something to me.

Here is an overview of all the functions - feel free to crt + f your way around this email because it’s almost 1600 words. (Yeah this project ended up taking me hours lol)

  • GET /feedback

  • GET /introduction

  • GET /meeting

  • GET /idea & /thoughts

  • GET /decision

  • POST /update

  • POST /task

  • POST /feedback

GET /feedback

Use Case: Request actionable feedback on a specific task, project, or idea.

Parameters:

Parameter

Type

Required

Description

context

String

Yes

Provide a brief description of what you want feedback on.

examples

String

Yes

Include links, mock-ups, or specific parts you need feedback on.

focus_area

String

No

Optional: Highlight specific areas where you want feedback (e.g., "design," "copywriting").

deadline

String

No

If applicable, indicate when you need the feedback.

Best Practices:

  1. Be Actionable:

    • Specify exactly what you need feedback on.

    • Example: "Can you review the homepage design for alignment with our brand guidelines?"

  2. Provide Examples:

    • Share mock-ups, drafts, or concrete examples for context.

    • Example: "Here’s the draft copy: [Link]. Thoughts on tone and clarity?"

  3. Focus on Key Areas:

    • If there are specific aspects to prioritize (e.g., layout, messaging), call them out.

Response Codes:

  • 200 OK: Feedback provided.

  • 400 Bad Request: Missing examples or unclear context.

GET /introduction

Use Case: Request an introduction from Ajay to someone in his network.

Parameters:

Parameter

Type

Required

Description

forwardable_email

String

Yes

A concise, well-written email that Ajay can forward. Clearly state your goals and why the introduction makes sense.

social_signal

String

Yes

Provide strong context about why this introduction benefits both parties. Show you're working on something impressive.

double_opt_in

Boolean

Yes

Always set to true. Ajay will only proceed if the other person consents to the introduction.

Best Practices:

  1. Write a Forwardable Email:

    • Keep it concise and clear.

    • Include your goals, the value you bring, and why this introduction benefits everyone.

    • Example:

      Hi [Ajay], I’m currently working on [cool project/initiative] and think [Contact Name] could provide valuable insights or collaborate with me. Would love your help connecting us! Thanks, [Your Name]

  2. Show Strong Social Signals:

    • Demonstrate why you're worth the introduction by sharing the cool, impactful work you’re doing.

    • Help Ajay maintain his reputation by ensuring the introduction reflects positively on both parties.

  3. Respect the Double Opt-In:

    • Ajay will first check with the other person to ensure they’re open to the introduction. No surprises!

Response Codes:

  • 200 OK: Introduction approved and completed.

  • 202 Accepted: Pending double opt-in approval.

  • 400 Bad Request: Missing required parameters or unclear request.

GET /meeting

Use Case: Request a meeting with Ajay.

Parameters:

Parameter

Type

Required

Description

type

String

Yes

The type of meeting. Accepted values: decision, brainstorm, realignment, education.

agenda

String

Yes

A clear description of what will be covered in the meeting.

duration

Number

No

Time in minutes (default is 30 minutes).

time

String

No

Preferred time. Afternoon slots are optimal.

Additional Requirements by Meeting Type:

  • decision

    • Include all relevant data to make the decision.

    • Ensure all decision-makers are invited.

    • Example:
      Data: Budget estimates, campaign timelines.
      Decision-Makers: Marketing Lead, Finance Lead.

  • brainstorm:

    • Provide a detailed set of guiding questions to structure the brainstorm.

    • Example:
      Questions:
      1. What are the top three priorities for Q2?
      2. How can we optimize our ad spend?

  • realignment:

    • These are typically short 10-minute huddles to address misalignments.

    • For minor issues, try Slack or channel updates first.

    • Example:
      Context: The team seems misaligned on campaign deadlines. Agenda: Quick sync to clarify roles and next steps.

  • education:

    • Most educational requests should default to a Loom video.

    • Meetings are rare unless the topic requires live discussion.

    • Example: Explaining how to use the new CRM

Response Codes:

  • 200 OK: Meeting successfully scheduled.

  • 304 Meeting Unnecessary: Meeting deemed unnecessary. Record a Loom video or send a Slack message instead.

  • 400 Bad Request: Missing or invalid type parameter.

  • 422 Unprocessable Entity: Agenda or required details for the meeting type are incomplete.

Example Request:

GET /meeting 
{ 
  "type": "decision", 
  "agenda": "Finalize Q2 campaign timeline", 
  "duration": 45, "time": "3 PM Thursday", 
  "data": { 
     "budget": "Proposed $50,000", 
     "timeline": "May - August" }, 
  "decision_makers": ["Marketing Lead", "Finance Lead"] 
}

GET /idea & /thoughts

Use Case: Request Ajay's input or thoughts on an idea or proposal.

Parameters:

Parameter

Type

Required

Description

idea

String

Yes

Brief description of your idea.

context

String

Yes

Background or problem your idea addresses, including all relevant data.

constraints

Object

Yes

Constraints to consider (e.g., design, engineering, cost, time).

resources

String

No

Suggested reading or links for additional context.

Best Practices:

  1. Share the problem, idea, and constraints upfront.

  2. Include additional resources if it helps clarify the idea.

  3. Be prepared for Ajay to ask follow-up questions.

Example Request:

GET /idea & /thoughts 
{ 
   "idea": "Launch a new gamification feature", 
   "context": "User retention is low after 30 days",   
   "constraints": { 
      "design": "Minimal changes to UI", 
      "engineering": "Max 4 sprint weeks", 
      "cost": "Under $20,000" 
    }, 
    "resources": "Link to similar case studies" 
}

Response Codes:

  • 200 OK: Feedback provided.

  • 400 Bad Request: Missing idea or constraints.

GET /decision

Use Case: Request Ajay to make a decision between options.

Parameters:

Parameter

Type

Required

Description

context

String

Yes

The background or problem requiring the decision.

options

Array

No

List of possible options (optional if the decision is open-ended).

decision_type

String

Yes

Specify if the decision is reversible or irreversible.

recommendation

String

No

Your recommended course of action (optional but encouraged).

Best Practices:

  1. If the decision is reversible and you’re delegated responsibility, make it yourself.

  2. For irreversible decisions, ensure all relevant data is included.

  3. Clearly outline the pros and cons of each option if applicable.

Example Request:

GET /decision 
{ 
   "context": "Q2 launch timeline", 
   "options": ["Option A: March", "Option B: June"], 
   "decision_type": "irreversible", 
   "recommendation": "Option B for better alignment with marketing efforts" 
}

Response Codes:

  • 200 OK: Decision made.

  • 400 Bad Request: Missing or unclear context or options.

  • 304 Delegated: Decision is reversible; Ajay delegated it to you.

POST /update

Use Case: Send Ajay a progress update on a task or project, with optional urgency.

Parameters:

Parameter

Type

Required

Description

context

String

Yes

Task or project you’re updating on.

update_type

String

Yes

The type of update: FYI, Approval, Decision, Closing the loop.

details

Object

Yes

What happened, why it happened, and what’s next.

urgent

Boolean

No

Set to true if this is an urgent update requiring immediate attention. Default: false.

Update Types Explanation:

Update Type

Description

FYI

"I’m doing this—just letting you know." No response is required.

Approval

"I’m doing this—do you approve?" A clear yes/no response is expected.

Decision

"Can you help me choose between A, B, and C?" Clearly outline the options and context.

Closing the loop

"Remember that thing I was doing? This is what happened." Final update to inform the outcome.

Best Practices:

  1. Clearly label the type of update.

  2. Use the following framework:

    • What happened?

    • Why did it happen?

    • So what:

      • Do you need something from Ajay?

      • What are you doing about it?

Example Request:

POST /update  
{
  "context": "Server outage",
  "update_type": "FYI",
  "details": {
    "what_happened": "The website went down at 2 PM",
    "why": "High traffic caused an overload",
    "so_what": {
      "need_from_ajay": "Approval to engage IT vendor",
      "action_taken": "Monitoring logs to prevent further crashes"
    }
  },
  "urgent": true
}

POST /task

Use Case: Assign Ajay a task with optional urgency.

Parameters:

Parameter

Type

Required

Description

task_name

String

Yes

Name of the task.

details

String

Yes

Description of the task, including objectives and constraints.

deadline

String

No

Optional: When you need the task completed.

urgent

Boolean

No

Set to true if this is an urgent task requiring immediate action. Default: false.

Best Practices:

  1. Use Slack or Email to assign tasks (flows into Ajay’s task management system).

  2. Clearly describe objectives and constraints.

  3. Use the urgency flag sparingly.

Example Request:

POST /task  
{
  "task_name": "Review onboarding materials",
  "details": "Ensure alignment with new team workflows",
  "deadline": "Friday EOD",
  "urgent": false
}

POST /feedback

Use Case: Provide Ajay with constructive feedback or input on his work or actions.

Parameters:

Parameter

Type

Required

Description

context

String

Yes

What you’re providing feedback on (e.g., a decision, action, or deliverable).

feedback

String

Yes

Your specific, constructive feedback.

examples

String

No

Optional: Provide examples to illustrate your points.

suggestion

String

No

Optional: Suggestions for improvement or alternative approaches.

Best Practices:

  1. Be specific and actionable in your feedback.

  2. Use examples to clarify points when possible.

  3. Include suggestions for improvement where applicable.

  4. No need to sandwich feedback with positives - be clear and concise.

Example Request:

POST /feedback  
{
  "context": "Ajay's recent presentation on Q2 strategy",
  "feedback": "The slides were clear, but the timeline section felt rushed and could use more detail.",
  "examples": "Perhaps expand on Slide 4 with specific milestones.",
  "suggestion": "Add a visual timeline or chart for clarity."
}

I hope you found this entertaining / helpful!

Until next time,

Ajay

What did you think of this email?

You can be honest - I can take it. Help me - help you.

Login or Subscribe to participate in polls.

I made an AI Spy to track competitors - I’ve been told that it’s really cool. If you want a guide on how to build it - just refer 1 person. That’s it.