Good fit when
- New leads arrive through several channels and get copied manually.
- The same questions are asked in every first call.
- Important details are missing when work starts.
- Follow-up depends on memory or a shared inbox.
How we build it
- 1List the decisions the intake should support.
- 2Design a short form that collects only useful information.
- 3Add qualification rules and internal routing.
- 4Create follow-up messages and a review queue for the team.
Expected outcome
A cleaner front door for new work, with fewer unqualified calls and less manual chasing.
Intake is a data-shape decision, not a form-design decision
Any intake form is easy to build and easy to get wrong. What decides whether it was worth building is what you intend to do with the answers: sort them, route them, compare them, match them against something else, or simply read them. One free-text box collects everything and supports none of that. Separate fields collect less and can be acted on.
So the first conversation is about the decisions the intake has to support. Who should handle this? Is it in scope for us? Which questions can we stop asking on the first call? Each answer becomes a field with a small set of allowed values, and everything that does not serve a decision goes into one optional notes box at the end.
Djob is the long version of this argument
Djob is a two-sided recruiting workspace that took about six months, and intake quality is the whole product. Candidates and jobs are not stored as one blob of text each. They are synced into statement-part tables, and OpenAI's text-embedding-3-small runs over those structured statements rather than over a CV as a single document.
That choice is what makes the result explainable. Cosine similarity gives a closeness score, and a score on its own is not a decision, because a candidate can read as close to a role and still fail a hard requirement. So the matching service computes a title score, a required score, an optional score and time gates, and it keeps the pass or fail reason. A recruiter can see why something matched, not only that it did.
The last piece is performance. Match views read from snapshot tables rebuilt daily instead of recalculating every candidate against every job when a page opens. Same intake data, precomputed once. Djob is live at djob.agency with public plans starting at $29/month.
Short form, complete record
There is a real tension in intake: the shorter the form, the more people finish it, and the less you know when you follow up. Djob handles it by not treating the two as the same object. The public job card supports a quick apply with no CV, but the modal still tries to find or create a full candidate record, so an applicant does not end up stranded in a disconnected applications table.
The same approach works for a service business. Ask a handful of things on the public form, and let the internal record carry the rest of the detail your team fills in as the conversation goes on. Enriching a record after first contact is normal. Losing the enquiry because the form demanded a budget on the first screen is avoidable.
What a review queue needs to be trusted
One list, in the order it should be worked
Everything that arrived, showing only the fields that decide who picks it up next.
A state you can see
New, waiting on the client, qualified, declined. A state that exists only in somebody's head will not be trusted by anybody else.
A reason attached to every rejection
Djob keeps pass and fail reasons on every match for exactly this purpose. Rejections without reasons make it impossible to tell whether your rules are too strict.
Follow-up that does not rely on memory
Djob tracks whether a matched role was emailed or sent over WhatsApp, so two people do not chase the same person twice.
What the first version leaves out
Version one is usually one form, one set of routing rules, one review queue and one follow-up message. What waits: dashboards nobody has a question for yet, an integration for every channel enquiries currently arrive through, and automated replies that need judgment to be correct.
Djob is a fair warning about the cost of getting the shape wrong. Its matching layer had to be reworked into the snapshot model because recruiter screens needed fast, repeatable rankings. That kind of change is cheap when the intake data is already structured into separate statements, and expensive when everything was stored as prose.
How long this takes
A single intake flow — form, qualification rules, internal routing, a review queue, a follow-up email — is a much smaller job than Djob, which took about six months because it covered two audiences plus the matching and admin layer between them. It is closer in size to Mincha Time's first version, about a month, when the rules are already clear on day one.
The variable is almost never the form. It is how many exceptions the routing has to respect, and how many other systems the qualified enquiry has to land in.
Worked example: intake that has to be machine-readable
Djob's intake exists so that a recruiter can be handed a ranked, explained shortlist instead of a folder of CVs. That requirement reaches all the way back into the form.
- 1Capture statements, not paragraphsJob and candidate information is synced into statement-part tables so each requirement and each claim is a separate row that can be scored on its own.
- 2Embed the structured partstext-embedding-3-small runs over those statements. Embedding one large blob per record would have made the closeness score impossible to explain afterwards.
- 3Gate the score with business rulesTitle, required and optional scores plus time gates produce a pass or fail with a reason, so semantic closeness cannot overrule a hard requirement.
- 4Precompute what the screens readRanked results live in snapshot tables rebuilt daily, so opening a match view is a read rather than a recalculation.
- 5Keep the follow-up state on the recordDjob tracks whether a matched role was emailed or sent over WhatsApp, so the record, rather than somebody's memory, is what says a person has already been contacted.
Two different audiences work from the same intake data: candidates applying, and recruiters reviewing a shortlist that can explain itself. Covering both sides is what made this a six-month build rather than a one-month one.
Questions we get asked about this
How short should the public form be?
Short enough that a serious enquiry finishes it in one sitting, structured enough that whoever picks it up knows why it reached them. A useful test: if a field does not change who handles the lead, what you quote, or whether you take the work at all, it can wait for the first conversation.
Do we need AI in our intake?
Only if you need to compare or rank things at a volume a person cannot. Djob needed it because matching many candidates against many roles by hand is not realistic. A business that receives a handful of enquiries a day gets far more out of clean fields and firm routing rules than out of a model.
Most of our leads arrive on WhatsApp and by phone. Does that break this?
No, it changes what the first version is for. The form defines the shape of the record, and enquiries that arrive elsewhere get entered into the same record, by staff at first. Automating a specific channel is worth doing once you can see how much of your real volume comes through it.
Can the intake write into the tools we already use?
Usually. Handing data to an external system is ordinary work: the Domino build sends each paid order to the Aviv POS after Cardcom confirms the payment. What matters is whether the target system has a documented way in, and what should happen when it is briefly unavailable. That second question is the one most plans skip.
Is this a CRM?
No. It is the front door to whatever you already use to track work. Intake ends at the point where a qualified enquiry becomes a job, a client, or a decline. If your team likes its current CRM, the intake should hand over to it and stop there.
Typical deliverables
- Structured intake forms
- Lead qualification rules
- Internal review queues
- Follow-up emails and task creation
Best for
Small teams that need better qualification, cleaner handoff, and fewer back-and-forth messages.
Discuss this service